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

Keycloak

Scopri come configurare LibreChat per utilizzare Keycloak per l'autenticazione degli utenti.

  1. Accedi alla console di amministrazione di Keycloak:
  • Apri la Keycloak Admin Console nel tuo browser web. Solitamente si trova a un URL come http://localhost:8080/auth/admin/.
  1. Crea un Realm (se necessario):
  • Se non hai già un realm per la tua applicazione, creane uno. Clicca su 'Add Realm' e assegnagli un nome.
  1. Crea un Client:
  • All'interno del tuo realm, clicca su 'Clients' e poi su 'Create'.
  • Inserisci un client ID e seleziona 'openid-connect' come Client Protocol.
  • Imposta 'Client Authentication' su 'On'.
  • In 'Valid Redirect URIs', inserisci http://localhost:3080/oauth/openid/callback o l'URI appropriato per la tua applicazione.

image

image

image

  1. Configura Client:
  • Dopo aver creato il client, verrai reindirizzato alla sua pagina delle impostazioni.
  • Annota il 'Client ID' e il 'Secret' dalla scheda 'Credentials': ti serviranno per la tua applicazione.

image

  1. Aggiungi ruoli (Opzionale): Se desideri limitare l'accesso agli utenti con ruoli specifici, puoi definire i ruoli in Keycloak e assegnarli agli utenti.
  • Vai alla scheda 'Roles' nel tuo client o realm (a seconda di dove desideri definire i ruoli).
  • Crea ruoli che corrispondano al/ai valore/i che hai in OPENID_REQUIRED_ROLE.

image

  1. Assegna ruoli agli utenti (Opzionale):
  • Vai su 'Users', seleziona un utente e vai alla scheda 'Role Mappings'.
  • Assegna almeno uno dei ruoli specificati in OPENID_REQUIRED_ROLE all'utente.

image

  1. Ottieni il percorso dell'elenco dei ruoli all'interno del token (Opzionale):
  • Decodifica il tuo jwtToken dal provider OpenID e determina il percorso per l'elenco dei ruoli all'interno dell'access token. Ad esempio, se stai utilizzando Keycloak, il percorso è realm_access.roles.
  • Inserisci questo percorso nella variabile OPENID_REQUIRED_ROLE_PARAMETER_PATH nel file .env.
  • Tramite il parametro OPENID_REQUIRED_ROLE_TOKEN_KIND è possibile specificare quale tipo di token si desidera utilizzare. I valori possibili sono access e id.
  1. Aggiorna la configurazione del tuo progetto:
  • Apri il file .env nella cartella del tuo progetto e aggiungi le seguenti variabili:
    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

Com’è questa guida?