Keycloak
Aprenda a configurar o LibreChat para usar o Keycloak para autenticação de usuários.
- Acessar o Console de Administração do Keycloak:
- Abra o Keycloak Admin Console no seu navegador web. Isso geralmente é encontrado em uma URL como
http://localhost:8080/auth/admin/.
- Criar um Realm (se necessário):
- Se você ainda não possui um realm para sua aplicação, crie um. Clique em 'Add Realm' e dê um nome a ele.
- Criar um Cliente:
- Dentro do seu realm, clique em 'Clients' e depois em 'Create'.
- Insira um client ID e selecione 'openid-connect' como o Client Protocol.
- Defina 'Client Authentication' como 'On'.
- Em 'Valid Redirect URIs', insira
http://localhost:3080/oauth/openid/callbackou a URI apropriada para sua aplicação.
- Configurar Cliente:
- Após criar o cliente, você será redirecionado para a página de configurações dele.
- Anote o 'Client ID' e o 'Secret' da aba 'Credentials' – você precisará deles para sua aplicação.
- Adicionar Funções (Opcional): Se você deseja restringir o acesso a usuários com funções específicas, você pode definir funções no Keycloak e atribuí-las aos usuários.
- Vá para a aba 'Roles' no seu cliente ou realm (dependendo de onde você deseja definir as roles).
- Crie funções que correspondam ao(s) valor(es) que você possui em
OPENID_REQUIRED_ROLE.
- Atribuir Funções aos Usuários (Opcional):
- Vá para 'Users', selecione um usuário e vá para a aba 'Role Mappings'.
- Atribua pelo menos uma das funções especificadas em
OPENID_REQUIRED_ROLEao usuário.
- Obter o caminho da lista de funções (roles) dentro do token (Opcional):
- Decodifique seu jwtToken do provedor OpenID e determine o caminho para a lista de funções (roles) dentro do access token. Por exemplo, se você estiver usando o Keycloak, o caminho é
realm_access.roles. - Coloque este caminho na variável
OPENID_REQUIRED_ROLE_PARAMETER_PATHno arquivo.env. - Pelo parâmetro
OPENID_REQUIRED_ROLE_TOKEN_KINDvocê pode especificar qual tipo de token deseja usar. Valores possíveis sãoaccesseid.
- Atualize a configuração do seu projeto:
- Abra o arquivo
.envna pasta do seu projeto e adicione as seguintes variáveis:OPENID_ISSUER=http://localhost:8080/realms/[YourRealmName] OPENID_CLIENT_ID=[YourClientID] OPENID_CLIENT_SECRET=[YourClientSecret] OPENID_SESSION_SECRET=[JustGenerateARandomSessionSecret] OPENID_CALLBACK_URL=/oauth/openid/callback OPENID_SCOPE="openid profile email" OPENID_REQUIRED_ROLE=[YourRequiredRole] # Single role or comma-separated roles (e.g., role1,role2,admin) OPENID_REQUIRED_ROLE_TOKEN_KIND=(access|id) # that means, `access` or `id` OPENID_REQUIRED_ROLE_PARAMETER_PATH="realm_access.roles" # Optional: redirects the user to the end session endpoint after logging out OPENID_USE_END_SESSION_ENDPOINT=true # Maximum logout URL length before using logout_hint instead of id_token_hint (default: 2000) # OPENID_MAX_LOGOUT_URL_LENGTH=2000
Como está este guia?