html šŸ”’ SSO: Suporte de autenticação federada | Nullcore
Pule para o conteĆŗdo principal

Suporte de autenticação federado

O Nullcore suporta vÔrias formas de autenticação federada:

  1. OAuth2
    1. Google
    2. Microsoft
    3. Github
    4. OIDC
  2. CabeƧalho confiƔvel
informaƧƵes

Para obter mais informaƧƵes sobre todas as variĆ”veis ​​de ambiente, consulte oPĆ”gina de documentos da variĆ”vel de ambiente. Ɖ altamente recomendĆ”vel verificar a pĆ”gina da variĆ”vel de ambiente, para obter mais detalhes sobre como definir a variĆ”vel e quais valores sĆ£o esperados.

perigo

No momento, você só pode configurar um provedor de OAuth por vez. Você não pode ter MicrosofteGoogle como provedores simultaneamente.

Oauth

Existem vÔrias opções de configuração global para o OAuth em geral:

  1. ENABLE_OAUTH_SIGNUP- setrue, permite que as contas sejam criadas ao fazer login com o OAuth. Distinto deENABLE_SIGNUP
  2. OAUTH_MERGE_ACCOUNTS_BY_EMAIL- Permite fazer login em uma conta que corresponda ao endereƧo de email fornecido pelo provedor OAuth.
    • Isso Ć© considerado inseguro, pois nem todos os provedores de OAuth verificam endereƧos de email e podem permitir que as contas sejam seqüestradas.
  3. OAUTH_UPDATE_PICTURE_ON_LOGIN- setrue, os usuÔrios terão as imagens de perfil fornecidas pelo OAuth atualizadas no login.
    • Se a reivindicação de imagem do OAuth estiver desativada, configurandoOAUTH_PICTURE_CLAIMPara a sequĆŖncia vazia, essa configuração serĆ” ignorada.
  4. OAUTH_PICTURE_CLAIM- pode ser usado para personalizar ou desativar o armazenamento de imagens de perfil. O padrão,picture, funcionarÔ para a maioria dos fornecedores; Se definido como a string vazia, todos os usuÔrios receberão a imagem de perfil da pessoa padrão.
  5. WEBUI_AUTH_SIGNOUT_REDIRECT_URI- pode ser definido como encaminhar opcionalmente o usuÔrio para um URI específico após o login.

Google

Para configurar um cliente do Google OAuth, consulteDocumentação do Googlesobre como criar um cliente do Google OAuth para umAplicativo da Web. O URI de redirecionamento permitido deve incluir<open-webui>/oauth/google/callback

As seguintes variĆ”veis ​​de ambiente sĆ£o necessĆ”rias:

  1. GOOGLE_CLIENT_ID- ID do cliente do Google OAuth
  2. GOOGLE_CLIENT_SECRET- Segredo do cliente do Google Oauth
  3. OPENID_PROVIDER_URL- Deve ser definido para que o logout funcione corretamente. (Geralmente parahttps://accounts.google.com/.well-known/openid-configuration

Microsoft

Para configurar um cliente da Microsoft OAuth, consulteDocumentação da Microsoftsobre como criar um cliente da Microsoft Oauth para umAplicativo da Web. O URI de redirecionamento permitido deve incluir<open-webui>/oauth/microsoft/callback. Este valor deve ser usado para oMICROSOFT_REDIRECT_URIvariÔvel de ambiente.

Atualmente, o suporte à Microsoft OAuth estÔ limitado a um único inquilino, que é uma única organização da ENTRA ou contas pessoais da Microsoft.

As seguintes variĆ”veis ​​de ambiente sĆ£o necessĆ”rias:

  1. MICROSOFT_CLIENT_ID- ID do cliente da Microsoft OAuth
  2. MICROSOFT_CLIENT_SECRET- Microsoft Oauth Client Secret
  3. MICROSOFT_CLIENT_TENANT_ID- ID do inquilino da Microsoft - Use9188040d-6c67-4c5b-b112-36a304b66dadpara contas pessoais
  4. MICROSOFT_REDIRECT_URI- O URI de redirecionamento configurado no seu aplicativo Microsoft OAuth. Isso deve ser definido como<open-webui>/oauth/microsoft/callback
  5. OPENID_PROVIDER_URL- Deve ser definido para que o logout funcione corretamente.

Github

Para configurar um cliente Github Oauth, consulteDocumentação do Githubsobre como criar um aplicativo OAuth ou aplicativo github para umAplicativo da Web. O URI de redirecionamento permitido deve incluir<open-webui>/oauth/github/callback

As seguintes variĆ”veis ​​de ambiente sĆ£o necessĆ”rias:

  1. GITHUB_CLIENT_ID- ID do cliente do aplicativo Github OAuth
  2. GITHUB_CLIENT_SECRET- Github Oauth App Client Secret

OIDC

Qualquer provedor de autenticação que suporta OIDC pode ser configurado. OemailA reivindicação é necessÔria.nameepictureSão usadas reivindicações se disponíveis. O URI de redirecionamento permitido deve incluir<open-webui>/oauth/oidc/callback

As seguintes variĆ”veis ​​de ambiente sĆ£o usadas:

  1. OAUTH_CLIENT_ID- ID do cliente OIDC
  2. OAUTH_CLIENT_SECRET- Oidc Client Secret
  3. OPENID_PROVIDER_URL- OIDC URL bem conhecido, por exemplohttps://accounts.google.com/.well-known/openid-configuration
  4. OAUTH_PROVIDER_NAME- Nome do provedor para mostrar na interface do usuÔrio, padrão para SSO
  5. OAUTH_SCOPES- Escopos a serem solicitados. Padrão paraopenid email profile
  6. OPENID_REDIRECT_URI- O URI de redirecionamento configurado no seu aplicativo OIDC. Isso deve ser definido como<open-webui>/oauth/oidc/callback

OAuth RunS Management

Qualquer provedor de OAuth que possa ser configurado para retornar funƧƵes no token de acesso pode ser usado para gerenciar funƧƵes no webui aberto. Para usar este conjunto de recursosENABLE_OAUTH_ROLE_MANAGEMENTparatrue. VocĆŖ pode configurar as seguintes variĆ”veis ​​de ambiente para corresponder Ć s funƧƵes devolvidas pelo provedor OAuth:

  1. OAUTH_ROLES_CLAIM- A alegação que contém os papéis. Padrão pararoles. Também pode ser aninhado, por exemplouser.roles
  2. OAUTH_ALLOWED_ROLES- Uma lista separada por vírgula de funções que podem fazer login (receba função aberta da Webuiuser
  3. OAUTH_ADMIN_ROLES- Uma lista de funções separada por vírgula que pode fazer login como um administrador (receba função aberta da webuiadmin
informaƧƵes

Se alterar a função de um usuÔrio registrado, eles precisarão fazer logon e fazer o login para receber a nova função.

OAuth Group Management

Qualquer provedor de OAuth que possa ser configurado para devolver grupos no token de acesso pode ser usado para gerenciar grupos de usuÔrios no webui aberto no login do usuÔrio. Para ativar essa sincronização, definaENABLE_OAUTH_GROUP_MANAGEMENTparatrue

VocĆŖ pode configurar as seguintes variĆ”veis ​​de ambiente:

  1. OAUTH_GROUP_CLAIM- A reivindicação no token de identificação/acesso que contém as associações de grupo do usuÔrio. Padrão paragroups. Também pode ser aninhado, por exemplouser.memberOf. Exigido seENABLE_OAUTH_GROUP_MANAGEMENTé verdade.
  2. ENABLE_OAUTH_GROUP_CREATION- Setrue(eENABLE_OAUTH_GROUP_MANAGEMENTé tambémtrue), O Nullcore executarÔCriação de grupo just-in-time (JIT). Isso significa que ele criarÔ automaticamente grupos durante o login do OAuth se estiverem presentes nas reivindicações do OAuth do usuÔrio, mas ainda não existem no sistema. Padrão parafalse. Sefalse, apenas associações emexistenteOs grupos abertos da Webui serão gerenciados.
Sincronização estrita de grupo

QuandoENABLE_OAUTH_GROUP_MANAGEMENTestÔ definido comotrue, associações de grupo de um usuÔrio em webui aberto sãoestritamente sincronizadocom os grupos recebidos em suas reivindicações de OAuth em cada login.

  • Os usuĆ”rios serĆ£oadicionadoPara abrir os grupos da Webui que correspondem Ć s suas reivindicaƧƵes de Oauth.
  • Os usuĆ”rios serĆ£oremovidode qualquer grupo aberto da webui (incluindo aqueles criados ou atribuĆ­dos manualmente em webui aberto) se esses grupos foremnĆ£oPresente em suas reivindicaƧƵes de OAuth para essa sessĆ£o de login.

Verifique se todos os grupos necessÔrios estão configurados corretamente em seu provedor de OAuth e incluídos na reivindicação do grupo (OAUTH_GROUP_CLAIM

UsuƔrios administrativos

As associações de grupo de usuÔrios administrativos sãonãoAtualizado automaticamente via OAuth Group Management.

Login necessƔrio para atualizaƧƵes

Se os grupos de um usuÔrio mudarem no provedor do OAuth, eles precisarão sair do WebUI aberto e fazer o login para que as alterações sejam refletidas.

CabeƧalho confiƔvel

O Nullcore é capaz de delegar a autenticação a um proxy reverso autenticando que passa nos detalhes do usuÔrio nos cabeçalhos HTTP. Existem vÔrias configurações de exemplo fornecidas nesta pÔgina.

perigo

A configuração incorreta pode permitir que os usuÔrios se autentiquem como qualquer usuÔrio na sua instância aberta do WebUI. Certifique -se de permitir apenas o acesso de proxy autenticando para abrir o webui, como a configuraçãoHOST=127.0.0.1para ouvir apenas na interface loopback.

Configuração genérica

Quando oWEBUI_AUTH_TRUSTED_EMAIL_HEADERA variƔvel de ambiente estƔ definida, o Nullcore usarƔ o valor do cabeƧalho especificado como o endereƧo de email do usuƔrio, manipulando o registro automƔtico e o login.

Por exemplo, configuraçãoWEBUI_AUTH_TRUSTED_EMAIL_HEADER=X-User-Emaile passando um cabeçalho HTTP deX-User-Email: example@example.comautenticaria o pedido com o emailexample@example.com

Opcionalmente, você também pode definir oWEBUI_AUTH_TRUSTED_NAME_HEADERPara determinar o nome de qualquer usuÔrio criado usando cabeçalhos confiÔveis. Isso não tem efeito se o usuÔrio jÔ existir. SeWEBUI_AUTH_TRUSTED_NAME_HEADERnão estÔ definido, o endereço de email é usado como nome de usuÔrio.

Gerenciamento de grupo

Você pode usar oWEBUI_AUTH_TRUSTED_GROUPS_HEADERVariÔvel de ambiente para sincronizar grupos de usuÔrios em webui aberto. Defina essa variÔvel como o nome do cabeçalho HTTP que conterÔ uma lista separada por vírgula de nomes de grupo para o usuÔrio autenticado.

Quando uma solicitação Ć© autenticada viaWEBUI_AUTH_TRUSTED_EMAIL_HEADERE o cabeƧalho dos grupos confiĆ”veis ​​estĆ” definido e presente, o Nullcore atualizarĆ” as associaƧƵes do grupo do usuĆ”rio para corresponder aos grupos listados no cabeƧalho.

  • O valor do cabeƧalho deve ser uma lista separada por vĆ­rgula de nomes de grupos (por exemplo,,X-User-Groups: admins,editors,users
  • Se o cabeƧalho nĆ£o estiver presente ou vazio, as associaƧƵes do grupo do usuĆ”rio nĆ£o serĆ£o atualizadas.
  • O usuĆ”rio nĆ£o serĆ” atribuĆ­do de grupos nĆ£o presentes no cabeƧalho.
  • A criação de grupo via cabeƧalho confiĆ”vel nĆ£o Ć© automĆ”tica; Somente grupos existentes no webui aberto serĆ£o atribuĆ­dos.

SERVIƇO DE ESCRALA DE

SERVIƇO DE ESCRALA DEpermite que vocĆŖ compartilhe um serviƧo dentro do seu Tailnet, e a escala traseira definirĆ” o cabeƧalhoTailscale-User-Logincom o endereƧo de e -mail do solicitante.

Abaixo estÔ um exemplo, sirva a configuração de um arquivo de composição do docker correspondente que inicia um sidecar de escala traseira, expondo o Nullcore ao Tailnet com a tagopen-webuie nome de hostopen-webui, e pode ser acessível emhttps://open-webui.TAILNET_NAME.ts.net. Você precisarÔ criar um cliente OAuth com permissão de gravação do dispositivo para passar para o contêiner de escala traseira comoTS_AUTHKEY

escala traseira/serv.json
{
"TCP" {
"443" {
"Https" verdadeiro

, Assim,
"Web" {
"$ {Ts_cert_domain}: 443" {
"Manipuladores" {
{
"Proxy" "http: // open-webui: 8080"






docker-compose.yaml
----
serviƧos
Open-Webui
imagemghcr.io/openwebui/abertowebuiprincipal
volumes
abrirwebui/app/back -end/dados
ambiente
Host = 127.0.0.1
Webui_auth_trusted_email_header = TailScaleUsuƔrioConecte-se
Webui_auth_trusted_name_header = TailScaleUsuƔrioNome
reiniciara menos queparou
escala traseira
imagemEscala traseira/escala traseiramais recente
ambiente
Ts_auth_once = true
Ts_authkey = ${Ts_authkey
Ts_extra_args =anunciartags = tagabrirwebui
Ts_serve_config =/config/serv.json
TS_STATE_DIR =/VAR/LIB/TAILSCALE
Ts_hostname = abertowebui
volumes
escala traseira/var/lib/trailcale
./tailscale/config
/dev/net/tun/dev/net/tun
cap_add
net_admin
sys_module
reiniciara menos queparou

volumes
Open-Webui {
escala traseira {
aviso

Se você executar escala traseira no mesmo contexto de rede que o Nullcore, por padrão os usuÔrios poderão entrar em contato diretamente para abrir o Webui sem passar pelo proxy do saque. Você precisarÔ usar as ACLs da TailScale para restringir o acesso apenas à porta 443.

Cloudflare Tunnel com acesso ao CloudFlare

Túnel Cloudflarepode ser usado comCloudflare AcessoPara proteger o Nullcore com SSO. Isso quase não é documentado pelo Cloudflare, masCf-Access-Authenticated-User-EmailestÔ definido com o endereço de email do usuÔrio autenticado.

Abaixo estÔ um exemplo de arquivo de composição do Docker que configura um Sidecar CloudFlare. A configuração é feita através do painel. No painel, pegue um token de túnel, defina o back -end do túnel parahttp://open-webui:8080e verifique se "Protect with Access" é verificado e configurado.

docker-compose.yaml
----
serviƧos
Open-Webui
imagemghcr.io/openwebui/abertowebuiprincipal
volumes
abrirwebui/app/back -end/dados
ambiente
Host = 127.0.0.1
Webui_auth_trusted_email_header = cf.AcessoAutenticadoUsuƔrioE-mail
reiniciara menos queparou
Cloudflued
imagemCloudflare/CloudFlueedmais recente
ambiente
Tunnel_token = ${Tunnel_token
comandoExecução do túnel
reiniciara menos queparou

volumes
Open-Webui {

OAuth2-Proxy

OAuth2-Proxyé um proxy reverso da autenticação que implementa provedores sociais da OAuth e suporte do OIDC.

Dado o grande número de configurações em potencial, abaixo estÔ um exemplo de uma configuração em potencial com o Google OAuth. Por favor, consulteoauth2-proxyA documentação para configuração detalhada e qualquer potencial segurança de segurança.

docker-compose.yaml
serviƧos
Open-Webui
imagemghcr.io/openwebui/abertowebuiprincipal
volumes
abrirwebui/app/back -end/dados
ambiente
'Host = 127.0.0.1'
'Webui_auth_trusted_email_header = x-forwarded-email'
'Webui_auth_trusted_name_header = X-forwarded-user'
reiniciara menos queparou
OAuth2-Proxy
imagemquay.io/oauth2Proxy/oauth2Proxyv7.6.0
ambiente
OAuth2_Proxy_Http_address0.0.0.04180
OAuth2_Proxy_Upstreamshttp//abrirwebui8080/
OAuth2_Proxy_ProviderGoogle
Oauth2_proxy_client_idReplaceme_oauth_client_id
OAuth2_Proxy_Client_SecretReplaceme_oauth_client_id
OAuth2_Proxy_Email_DomainsReplaceme_allowed_email_domains
Oauth2_proxy_redirect_urlReplaceme_oauth_callback_url
OAuth2_Proxy_Cookie_SecretReplaceme_cookie_secret
OAuth2_Proxy_cookie_secure "falso"
reiniciara menos queparou
portas
41804180/TCP

Authentik

Para configurar umAuthentikCliente OAuth, consultedocumentaçãosobre como criar um aplicativo eOAuth2/OpenID Provider. O URI de redirecionamento permitido deve incluir<open-webui>/oauth/oidc/callback

Ao criar provedor, observeApp-name, Assim,Client-IDeClient-Secrete use-o para variĆ”veis ​​de ambiente de webui aberto:

- 'enable_oauth_signup = true'
- 'Oauth_Merge_Accounts_By_Email = true'
- 'Oauth_provider_name = autentik'
-'OpenId_Provider_Url = https: // <uthentik-url>/application/o/<pp-name> /.well-known/openid-configuration'
- 'OAuth_Client_Id = <Sward-Id>'
- 'OAuth_Client_Secret = <Sweon-secret>'
- 'OAuth_Scopes = OpenId Email Profile'
- 'Openid_redirect_uri = https: // <pear-webui>/oauth/oidc/retorno de chamada'

Authelia

Autheliapode ser configurado para retornar um cabeçalho para uso com autenticação de cabeçalho confiÔvel. Documentação estÔ disponívelaqui

Nenhuma exemplo de configuração é fornecida devido à complexidade da implantação do Authelia.