Ir para o conteúdo principal

Autenticação OAuth

Esta página contém detalhes sobre como usar OAuth no Immich.

dica

Não conseguiu definir app.immich:///oauth-callback como um URI de redirecionamento válido? Veja URI de Redirecionamento Móvel para uma solução alternativa.

Visão Geral

O Immich suporta autenticação de terceiros via OpenID Connect (OIDC), uma camada de identidade construída sobre o OAuth2. O OIDC é compatível com a maioria dos provedores de identidade, incluindo:

Pré-requisitos

Antes de habilitar o OAuth no Immich, um novo aplicativo cliente precisa ser configurado no servidor de autenticação de terceiros. Embora os detalhes desta configuração variem de provedor para provedor, a abordagem geral deve ser a mesma.

  1. Crie um novo Aplicativo (Cliente)

    1. O tipo de Provedor deve ser OpenID Connect ou OAuth2
    2. O tipo de Cliente deve ser Confidential
    3. O tipo de Aplicativo deve ser Web
    4. O tipo de Concessão deve ser Authorization Code
  2. Configure URIs/Origens de Redirecionamento

    Os URIs de Redirecionamento para Login devem incluir:

    • app.immich:///oauth-callback - para fazer login com OAuth no Aplicativo Mobile
    • http://DOMAIN:PORT/auth/login - para fazer login com OAuth no Cliente Web
    • http://DOMAIN:PORT/user-settings - para vincular OAuth manualmente no Cliente Web

    Os URIs de Redirecionamento devem conter todos os domínios que você usará para acessar o Immich. Alguns exemplos incluem:

    Mobile

    • app.immich:///oauth-callback (Você DEVE incluir isso para que os aplicativos móveis iOS e Android funcionem corretamente)

    Localhost

    • http://localhost:2283/auth/login
    • http://localhost:2283/user-settings

    IP Local

    • http://192.168.0.200:2283/auth/login
    • http://192.168.0.200:2283/user-settings

    Nome do Host

    • https://immich.example.com/auth/login
    • https://immich.example.com/user-settings

Habilitar OAuth

Depois que você tiver configurado um novo aplicativo cliente OAuth, o Immich pode ser configurado usando a página de Configurações de Administração, disponível na web (Administração -> Configurações).

ConfiguraçãoTipoPadrãoDescrição
HabilitadobooleanfalseHabilitar/desabilitar OAuth
URL do ProvedorURL(obrigatório)Obrigatório. URL de auto-descoberta para o cliente (do passo anterior)
ID do Clientestring(obrigatório)Obrigatório. ID do Cliente (do passo anterior)
Segredo do Clientestring(obrigatório)Obrigatório. Segredo do Cliente (do passo anterior)
Escopostringopenid email profileLista completa de escopos a serem enviadas com a solicitação (delimitados por espaço)
Algoritmo de AssinaturastringRS256O algoritmo usado para assinar o token de id (exemplos: RS256, HS256)
Reivindicação do Rótulo de Armazenamentostringpreferred_usernameMapeamento de reivindicação para o rótulo de armazenamento do usuário¹
Reivindicação da Funçãostringimmich_roleMapeamento de reivindicação para a função do usuário. (deve retornar "user" ou "admin")¹
Reivindicação de Cota de Armazenamentostringimmich_quotaMapeamento de reivindicação para o armazenamento do usuário¹
Cota de Armazenamento Padrão (GiB)number0Cota padrão para usuário sem reivindicação de cota de armazenamento (Insira 0 para cota ilimitada)
Texto do BotãostringEntrar com OAuthTexto para o botão OAuth na web
Registro AutomáticobooleantrueQuando ativado, registrará automaticamente um usuário na primeira vez que ele entrar
Lançamento AutomáticobooleanfalseQuando ativado, pulará a página de login e iniciará automaticamente o processo de login OAuth
Substituir URI de Redirecionamento MóvelURL(vazio)Alternativa http(s) para URI de redirecionamento móvel
Opções de Reivindicação [1]

Reivindicação é usada apenas na criação de usuário e não sincronizada após isso.

informação

O URL do Provedor deve se parecer com o seguinte e retornar um documento json válido.

  • https://accounts.google.com/.well-known/openid-configuration
  • http://localhost:9000/application/o/immich/.well-known/openid-configuration

A parte .well-known/openid-configuration do URL é opcional e será adicionada automaticamente durante a descoberta.

Lançamento Automático

Quando o Lançamento Automático está habilitado, a página de login redirecionará automaticamente o usuário para o URL de autorização OAuth, para entrar com OAuth. Para acessar a tela de login novamente, use o botão 'voltar' do navegador ou navegue diretamente para /auth/login?autoLaunch=0. O Lançamento Automático também pode ser habilitado com base em cada solicitação ao navegar para /auth/login?authLaunch=1, isso pode ser útil em situações onde o Immich é chamado por exemplo, pelo Nextcloud usando o aplicativo Sites Externos e o aplicativo oidc para permitir que os usuários interajam diretamente com uma instância logada do Immich.

URI de Redirecionamento Móvel

O URI de redirecionamento para o aplicativo móvel é app.immich:///oauth-callback, que é um Esquema Personalizado. Se este esquema personalizado for um URI de redirecionamento inválido para seu Provedor OAuth, você pode contornar isso fazendo o seguinte:

  1. Configure um endpoint http(s) para encaminhar solicitações para app.immich:///oauth-callback
  2. Liste o novo endpoint como um URI de redirecionamento válido no seu provedor.
  3. Especifique o novo endpoint como a opção Substituir URI de Redirecionamento Móvel, nas configurações OAuth.

Com essas etapas em vigor, você deve conseguir usar OAuth no Aplicativo Móvel sem um URI de redirecionamento personalizado.

informação

O Immich possui uma rota (/api/oauth/mobile-redirect) que já está configurada para encaminhar solicitações para app.immich:///oauth-callback, e pode ser usado para o passo 1.

Exemplo de Configuração

Exemplo de Authentik

Exemplo de Authentik

Aqui está um exemplo do OAuth configurado para Authentik:

Configuração de URIs de Redirecionamento Autorizados (Provedor Authentik OAuth2/OpenID)

Configuração de OAuth nas Configurações do Sistema Immich

ConfiguraçãoValor
URL do Provedorhttps://example.immich.app/application/o/immich/.well-known/openid-configuration
ID do ClienteAFCj2rM1f4rps*************lCLEum6hH9...
Segredo do Cliente0v89FXkQOWO**************mprbvXD549HH6s1iw...
Escopoopenid email profile
Algoritmo de AssinaturaRS256
Reivindicação do Rótulopreferred_username
Reivindicação de Cotaimmich_quota
Cota Padrão (GiB)0 (0 para cota ilimitada)
Texto do BotãoEntrar com Authentik (opcional)
Registro AutomáticoHabilitado (opcional)
Lançamento AutomáticoHabilitado (opcional)
Substituir URI de Redirecionamento MóvelDesativado
URI de Redirecionamento Móvel
Exemplo do Google

Exemplo do Google

Aqui está um exemplo do OAuth configurado para Google:

Configuração de URIs de Redirecionamento Autorizados (Console do Google)

Configuração de OAuth nas Configurações do Sistema Immich

ConfiguraçãoValor
URL do Provedorhttps://accounts.google.com
ID do Cliente7******************vuls.apps.googleusercontent.com
Client SecretG******************OO
Escopoopenid email profile
Algoritmo de AssinaturaRS256
Claim para Rótulo de Armazenamentopreferred_username
Claim da Cota de Armazenamentoimmich_quota
Cota Padrão de Armazenamento (GiB)0 (0 para cota ilimitada)
Texto do BotãoEntrar com Google (opcional)
Registro AutomáticoHabilitado (opcional)
Lançamento AutomáticoHabilitado
Redirecionamento para MobileHabilitado (necessário)
URI de Redirecionamento para Mobilehttps://example.immich.app/api/oauth/mobile-redirect