Suporte à Autenticação Federada
O Open WebUI suporta várias formas de autenticação federada:
- OAuth2
- Microsoft
- Github
- OIDC
- Header de Confiança
OAuth
Existem várias opções de configuração global para OAuth:
ENABLE_OAUTH_SIGNUP
- setrue
, permite que contas sejam criadas ao fazer login com OAuth. Diferente deENABLE_SIGNUP
.OAUTH_MERGE_ACCOUNTS_BY_EMAIL
- permite fazer login em uma conta que corresponda ao endereço de e-mail fornecido pelo provedor de OAuth.- Isso é considerado inseguro, pois nem todos os provedores de OAuth verificam endereços de e-mail e pode permitir o sequestro de contas.
OAUTH_UPDATE_PICTURE_ON_LOGIN
- setrue
, os usuários terão suas fotos de perfil fornecidas por OAuth atualizadas ao fazer login.- Se a reivindicação de foto do OAuth estiver desativada ao definir
OAUTH_PICTURE_CLAIM
como uma string vazia, esta configuração será ignorada.
- Se a reivindicação de foto do OAuth estiver desativada ao definir
OAUTH_PICTURE_CLAIM
- pode ser usado para personalizar ou desativar o armazenamento de fotos de perfil. O padrão,picture
, funcionará para a maioria dos provedores; se definido como uma string vazia, todos os usuários receberão a imagem de perfil padrão da pessoa.
Google
Para configurar um cliente OAuth do Google, consulte a documentação do Google sobre como criar um cliente OAuth do Google para uma aplicação 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 OAuth do GoogleGOOGLE_CLIENT_SECRET
- Segredo do cliente OAuth do Google
Microsoft
Para configurar um cliente OAuth da Microsoft, consulte a documentação da Microsoft sobre como criar um cliente OAuth da Microsoft para uma aplicação web.
O URI de redirecionamento permitido deve incluir <open-webui>/oauth/microsoft/callback
.
O suporte ao OAuth da Microsoft está atualmente limitado a um único locatário, ou seja, uma única organização Entra ou contas pessoais da Microsoft.
As seguintes variáveis de ambiente são necessárias:
MICROSOFT_CLIENT_ID
- ID do cliente OAuth da MicrosoftMICROSOFT_CLIENT_SECRET
- Segredo do cliente OAuth da MicrosoftMICROSOFT_CLIENT_TENANT_ID
- ID do locatário da Microsoft - use9188040d-6c67-4c5b-b112-36a304b66dad
para contas pessoais
Github
Para configurar um cliente OAuth do Github, consulte a documentação do Github sobre como criar um aplicativo OAuth ou aplicativo Github para uma aplicação 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 OAuth do GithubGITHUB_CLIENT_SECRET
- Segredo do cliente do aplicativo OAuth do Github
OIDC
Qualquer provedor de autenticação que suporte OIDC pode ser configurado.
A reivindicação email
é obrigatória.
As reivindicações name
e picture
são usadas, 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
- Segredo do cliente OIDCOPENID_PROVIDER_URL
- URL bem conhecida do OIDC, por exemplohttps://accounts.google.com/.well-known/openid-configuration
OAUTH_PROVIDER_NAME
- Nome do provedor para exibir na interface do usuário, padrão para SSOOAUTH_SCOPES
- Escopos a solicitar. Padrão paraopenid email profile
Gerenciamento de Funções OAuth
Qualquer provedor de OAuth que possa ser configurado para retornar funções no token de acesso pode ser usado para gerenciar funções no Open WebUI.
Para usar este recurso, defina ENABLE_OAUTH_ROLE_MANAGEMENT
como true
.
Você pode configurar as seguintes variáveis de ambiente para corresponder às funções retornadas pelo provedor de OAuth:
OAUTH_ROLES_CLAIM
- A reivindicação que contém as funções. Padrão pararoles
. Também pode ser aninhado, por exemplouser.roles
.OAUTH_ALLOWED_ROLES
- Uma lista separada por vírgulas de funções que podem fazer login (receber a função de usuário do Open WebUIuser
).OAUTH_ADMIN_ROLES
- Uma lista separada por vírgulas de funções que podem fazer login como administrador (receber a função de administrador do Open WebUIadmin
).
Se alterar a função de um usuário logado, ele precisará sair e fazer login novamente para receber a nova função.
Gerenciamento de Grupos OAuth
Qualquer provedor de OAuth que possa ser configurado para retornar grupos no token de acesso pode ser usado para gerenciar grupos de usuários no Open WebUI durante o login do usuário.
Para habilitar essa sincronização, defina ENABLE_OAUTH_GROUP_MANAGEMENT
como true
.
Você pode configurar as seguintes variáveis de ambiente:
OAUTH_GROUP_CLAIM
- A reivindicação no ID/token de acesso contendo as associações de grupo do usuário. Padrão paragroups
. Também pode ser aninhado, por exemplouser.memberOf
. Obrigatório seENABLE_OAUTH_GROUP_MANAGEMENT
for verdadeiro.ENABLE_OAUTH_GROUP_CREATION
- Setrue
(eENABLE_OAUTH_GROUP_MANAGEMENT
também fortrue
), o Open WebUI realizará Criação de grupos em tempo real (JIT). Isso significa que ele criará automaticamente grupos durante o login no OAuth se eles estiverem presentes nas declarações OAuth do usuário, mas ainda não existirem no sistema. O padrão éfalse
. Se forfalse
, apenas as associações em grupos existentes no Open WebUI serão gerenciadas.
Quando ENABLE_OAUTH_GROUP_MANAGEMENT
estiver definido como true
, as associações de grupo de um usuário no Open WebUI serão estritamente sincronizadas com os grupos recebidos em suas declarações OAuth a cada login.
- Os usuários serão adicionados aos grupos do Open WebUI que correspondem às suas declarações OAuth.
- Os usuários serão removidos de qualquer grupo do Open WebUI (incluindo aqueles criados ou atribuídos manualmente no Open WebUI) se esses grupos não estiverem presentes em suas declarações OAuth para aquela sessão de login.
Certifique-se de que todos os grupos necessários estejam configurados corretamente no seu provedor OAuth e incluídos na declaração de grupo (OAUTH_GROUP_CLAIM
).
As associações de grupo de usuários administradores não são atualizadas automaticamente por meio do gerenciamento de grupos do OAuth.
Se os grupos de um usuário mudarem no provedor de OAuth, ele precisará sair do Open WebUI e fazer login novamente para que as alterações sejam refletidas.
Cabeçalho Confiável
O Open WebUI pode delegar a autenticação para um proxy reverso autenticador que passa os detalhes do usuário em cabeçalhos HTTP. Há várias configurações de exemplo fornecidas nesta página.
Configuração incorreta pode permitir que os usuários autentiquem como qualquer usuário na sua instância do Open WebUI.
Certifique-se de permitir apenas acesso ao proxy autenticador no Open WebUI, como configurar HOST=127.0.0.1
para ouvir apenas na interface de loopback.
Configuração Genérica
Quando a variável de ambiente WEBUI_AUTH_TRUSTED_EMAIL_HEADER
for definida, o Open WebUI usará o valor do cabeçalho especificado como o endereço de e-mail do usuário, lidando com o registro e login automático.
Por exemplo, definir WEBUI_AUTH_TRUSTED_EMAIL_HEADER=X-User-Email
e passar um cabeçalho HTTP de X-User-Email: [email protected]
autenticará a solicitação com o e-mail [email protected]
.
Opcionalmente, você também pode definir o WEBUI_AUTH_TRUSTED_NAME_HEADER
para determinar o nome de qualquer usuário sendo criado usando cabeçalhos confiáveis. Isso não tem efeito se o usuário já existir.
Tailscale Serve
Tailscale Serve permite compartilhar um serviço dentro de sua tailnet, e o Tailscale definirá o cabeçalho Tailscale-User-Login
com o endereço de e-mail do solicitante.
Abaixo está um exemplo de configuração de serviço com um arquivo Docker Compose correspondente que inicia um sidecar Tailscale, expondo o Open WebUI para a tailnet com a tag open-webui
e hostname open-webui
, e pode ser acessado em https://open-webui.TAILNET_NAME.ts.net
.
Você precisará criar um cliente OAuth com permissão de escrita no dispositivo para passar para o contêiner Tailscale como TS_AUTHKEY
.
{
"TCP": {
"443": {
"HTTPS": true
}
},
"Web": {
"${TS_CERT_DOMAIN}:443": {
"Handlers": {
"/": {
"Proxy": "http://open-webui:8080"
}
}
}
}
}
---
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
volumes:
- open-webui:/app/backend/data
environment:
- HOST=127.0.0.1
- WEBUI_AUTH_TRUSTED_EMAIL_HEADER=Tailscale-User-Login
- WEBUI_AUTH_TRUSTED_NAME_HEADER=Tailscale-User-Name
restart: unless-stopped
tailscale:
image: tailscale/tailscale:latest
environment:
- TS_AUTH_ONCE=true
- TS_AUTHKEY=${TS_AUTHKEY}
- TS_EXTRA_ARGS=--advertise-tags=tag:open-webui
- TS_SERVE_CONFIG=/config/serve.json
- TS_STATE_DIR=/var/lib/tailscale
- TS_HOSTNAME=open-webui
volumes:
- tailscale:/var/lib/tailscale
- ./tailscale:/config
- /dev/net/tun:/dev/net/tun
cap_add:
- net_admin
- sys_module
restart: unless-stopped
volumes:
open-webui: {}
tailscale: {}
Se você executar o Tailscale no mesmo contexto de rede que o Open WebUI, então, por padrão, os usuários poderão acessar diretamente o Open WebUI sem passar pelo proxy do Serve. Você precisará usar as ACLs do Tailscale para restringir o acesso apenas à porta 443.
Cloudflare Tunnel com Cloudflare Access
Cloudflare Tunnel pode ser usado com Cloudflare Access para proteger o Open WebUI com SSO.
Isso é pouco documentado pela Cloudflare, mas Cf-Access-Authenticated-User-Email
é definido com o endereço de e-mail do usuário autenticado.
Abaixo está um exemplo de arquivo Docker Compose que configura um sidecar Cloudflare.
A configuração é feita via painel.
No painel, obtenha um token de túnel, configure o backend do túnel como http://open-webui:8080
, e certifique-se de que "Protegido com Access" esteja marcado e configurado.
---
serviços:
open-webui:
imagem: ghcr.io/open-webui/open-webui:main
volumes:
- open-webui:/app/backend/data
ambiente:
- HOST=127.0.0.1
- WEBUI_AUTH_TRUSTED_EMAIL_HEADER=Cf-Access-Authenticated-User-Email
reiniciar: unless-stopped
cloudflared:
imagem: cloudflare/cloudflared:latest
ambiente:
- TUNNEL_TOKEN=${TUNNEL_TOKEN}
comando: tunnel run
reiniciar: unless-stopped
volumes:
open-webui: {}
oauth2-proxy
oauth2-proxy é um proxy reverso autêntico que implementa provedores de OAuth social e suporte a OIDC.
Dado o grande número de configurações possíveis, abaixo está um exemplo de configuração com o Google OAuth.
Consulte a documentação do oauth2-proxy
para configurações detalhadas e possíveis armadilhas de segurança.
serviços:
open-webui:
imagem: ghcr.io/open-webui/open-webui:main
volumes:
- open-webui:/app/backend/data
ambiente:
- HOST=127.0.0.1
- WEBUI_AUTH_TRUSTED_EMAIL_HEADER=X-Forwarded-Email
- WEBUI_AUTH_TRUSTED_NAME_HEADER=X-Forwarded-User
reiniciar: unless-stopped
oauth2-proxy:
imagem: quay.io/oauth2-proxy/oauth2-proxy:v7.6.0
ambiente:
OAUTH2_PROXY_HTTP_ADDRESS: 0.0.0.0:4180
OAUTH2_PROXY_UPSTREAMS: http://open-webui:8080/
OAUTH2_PROXY_PROVIDER: google
OAUTH2_PROXY_CLIENT_ID: REPLACEME_OAUTH_CLIENT_ID
OAUTH2_PROXY_CLIENT_SECRET: REPLACEME_OAUTH_CLIENT_ID
OAUTH2_PROXY_EMAIL_DOMAINS: REPLACEME_ALLOWED_EMAIL_DOMAINS
OAUTH2_PROXY_REDIRECT_URL: REPLACEME_OAUTH_CALLBACK_URL
OAUTH2_PROXY_COOKIE_SECRET: REPLACEME_COOKIE_SECRET
OAUTH2_PROXY_COOKIE_SECURE: "false"
reiniciar: unless-stopped
portas:
- 4180:4180/tcp
Authentik
Para configurar um cliente OAuth do Authentik, consulte a documentação sobre como criar uma aplicação e OAuth2/OpenID Provider
.
O URI de redirecionamento permitido deve incluir <open-webui>/oauth/oidc/callback
.
Ao criar o provedor, observe Nome-do-App
, Client-ID
e Client-Secret
e use-os nas variáveis de ambiente do open-webui:
- ENABLE_OAUTH_SIGNUP=true
- OAUTH_MERGE_ACCOUNTS_BY_EMAIL=true
- OAUTH_PROVIDER_NAME=Authentik
- OPENID_PROVIDER_URL=https://<authentik-url>/application/o/<Nome-do-App>/.well-known/openid-configuration
- OAUTH_CLIENT_ID=<Client-ID>
- OAUTH_CLIENT_SECRET=<Client-Secret>
- OAUTH_SCOPES=openid email profile
- OPENID_REDIRECT_URI=https://<open-webui>/oauth/oidc/callback
Authelia
Authelia pode ser configurado para retornar um cabeçalho para uso com autenticação de cabeçalho confiável. A documentação está disponível aqui.
Nenhum exemplo de configuração é fornecido devido à complexidade de implementar o Authelia.