Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Keycloak

Aprenda a configurar o LibreChat para usar o Keycloak para autenticação de usuários.

  1. 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/.
  1. 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.
  1. 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/callback ou a URI apropriada para sua aplicação.

image

image

image

  1. 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.

image

  1. 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.

image

  1. 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_ROLE ao usuário.

image

  1. 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_PATH no arquivo .env.
  • Pelo parâmetro OPENID_REQUIRED_ROLE_TOKEN_KIND você pode especificar qual tipo de token deseja usar. Valores possíveis são access e id.
  1. Atualize a configuração do seu projeto:
  • Abra o arquivo .env na 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?