Suporte de autenticação federado
O Nullcore suporta vÔrias formas de autenticação federada:
- OAuth2
- Microsoft
- Github
- OIDC
- CabeƧalho confiƔvel
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.
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:
ENABLE_OAUTH_SIGNUP
- setrue
, permite que as contas sejam criadas ao fazer login com o OAuth. Distinto deENABLE_SIGNUP
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.
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, configurando
OAUTH_PICTURE_CLAIM
Para a sequência vazia, essa configuração serÔ ignorada.
- Se a reivindicação de imagem do OAuth estiver desativada, configurando
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.WEBUI_AUTH_SIGNOUT_REDIRECT_URI
- pode ser definido como encaminhar opcionalmente o usuĆ”rio para um URI especĆfico após o login.
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:
GOOGLE_CLIENT_ID
- ID do cliente do Google OAuthGOOGLE_CLIENT_SECRET
- Segredo do cliente do Google OauthOPENID_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_URI
variƔ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:
MICROSOFT_CLIENT_ID
- ID do cliente da Microsoft OAuthMICROSOFT_CLIENT_SECRET
- Microsoft Oauth Client SecretMICROSOFT_CLIENT_TENANT_ID
- ID do inquilino da Microsoft - Use9188040d-6c67-4c5b-b112-36a304b66dad
para contas pessoaisMICROSOFT_REDIRECT_URI
- O URI de redirecionamento configurado no seu aplicativo Microsoft OAuth. Isso deve ser definido como<open-webui>/oauth/microsoft/callback
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:
GITHUB_CLIENT_ID
- ID do cliente do aplicativo Github OAuthGITHUB_CLIENT_SECRET
- Github Oauth App Client Secret
OIDC
Qualquer provedor de autenticação que suporta OIDC pode ser configurado.
Oemail
A reivindicação é necessÔria.name
epicture
SĆ£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:
OAUTH_CLIENT_ID
- ID do cliente OIDCOAUTH_CLIENT_SECRET
- Oidc Client SecretOPENID_PROVIDER_URL
- OIDC URL bem conhecido, por exemplohttps://accounts.google.com/.well-known/openid-configuration
OAUTH_PROVIDER_NAME
- Nome do provedor para mostrar na interface do usuÔrio, padrão para SSOOAUTH_SCOPES
- Escopos a serem solicitados. Padrão paraopenid email profile
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_MANAGEMENT
paratrue
.
VocĆŖ pode configurar as seguintes variĆ”veis āāde ambiente para corresponder Ć s funƧƵes devolvidas pelo provedor OAuth:
OAUTH_ROLES_CLAIM
- A alegação que contém os papéis. Padrão pararoles
. TambƩm pode ser aninhado, por exemplouser.roles
OAUTH_ALLOWED_ROLES
- Uma lista separada por vĆrgula de funƧƵes que podem fazer login (receba função aberta da Webuiuser
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
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_MANAGEMENT
paratrue
VocĆŖ pode configurar as seguintes variĆ”veis āāde ambiente:
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.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.
QuandoENABLE_OAUTH_GROUP_MANAGEMENT
estĆ” 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
As associações de grupo de usuÔrios administrativos sãonãoAtualizado automaticamente via OAuth Group Management.
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.
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.1
para ouvir apenas na interface loopback.
Configuração genérica
Quando oWEBUI_AUTH_TRUSTED_EMAIL_HEADER
A 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-Email
e passando um cabeƧalho HTTP deX-User-Email: example@example.com
autenticaria o pedido com o emailexample@example.com
Opcionalmente, você também pode definir oWEBUI_AUTH_TRUSTED_NAME_HEADER
Para 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_HEADER
não estÔ definido, o endereço de email é usado como nome de usuÔrio.
Gerenciamento de grupo
VocĆŖ pode usar oWEBUI_AUTH_TRUSTED_GROUPS_HEADER
VariĆ”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_HEADER
E 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-Login
com 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-webui
e 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
{
"TCP" {
"443" {
"Https" verdadeiro
, Assim,
"Web" {
"$ {Ts_cert_domain}: 443" {
"Manipuladores" {
{
"Proxy" "http: // open-webui: 8080"
----
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 {
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-Email
estƔ 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:8080
e verifique se "Protect with Access" Ć© verificado e configurado.
----
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-proxy
A documentação para configuração detalhada e qualquer potencial segurança de segurança.
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-ID
eClient-Secret
e 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.