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

Keycloak

Dowiedz się, jak skonfigurować LibreChat, aby używać Keycloak do uwierzytelniania użytkowników.

  1. Uzyskaj dostęp do konsoli administracyjnej Keycloak:
  • Otwórz konsolę administracyjną Keycloak w swojej przeglądarce internetowej. Zazwyczaj znajduje się ona pod adresem URL takim jak http://localhost:8080/auth/admin/.
  1. Utwórz Realm (jeśli to konieczne):
  • Jeśli nie masz jeszcze realm dla swojej aplikacji, utwórz go. Kliknij „Add Realm” i nadaj mu nazwę.
  1. Utwórz klienta:
  • W swoim obszarze kliknij „Clients”, a następnie „Create”.
  • Wprowadź identyfikator klienta (client ID) i wybierz 'openid-connect' jako protokół klienta (Client Protocol).
  • Ustaw 'Client Authentication' na 'On'.
  • W polu 'Valid Redirect URIs' wprowadź http://localhost:3080/oauth/openid/callback lub odpowiedni URI dla swojej aplikacji.

image

image

image

  1. Skonfiguruj klienta:
  • Po utworzeniu klienta zostaniesz przekierowany na stronę jego ustawień.
  • Zanotuj 'Client ID' oraz 'Secret' z zakładki 'Credentials' – będą one potrzebne do Twojej aplikacji.

image

  1. Dodawanie ról (opcjonalne): Jeśli chcesz ograniczyć dostęp do użytkowników z określonymi rolami, możesz zdefiniować role w Keycloak i przypisać je do użytkowników.
  • Przejdź do karty 'Roles' w swoim kliencie lub obszarze (w zależności od tego, gdzie chcesz zdefiniować role).
  • Utwórz role, które odpowiadają wartości(om) zawartym w OPENID_REQUIRED_ROLE.

image

  1. Przypisz role użytkownikom (opcjonalne):
  • Przejdź do „Users”, wybierz użytkownika i przejdź do karty „Role Mappings”.
  • Przypisz użytkownikowi co najmniej jedną z ról określonych w OPENID_REQUIRED_ROLE.

image

  1. Pobierz ścieżkę listy ról wewnątrz tokena (opcjonalne):
  • Zdekoduj swój jwtToken od dostawcy OpenID i określ ścieżkę do listy ról wewnątrz tokena dostępu (access token). Na przykład, jeśli używasz Keycloak, ścieżka to realm_access.roles.
  • Umieść tę ścieżkę w zmiennej OPENID_REQUIRED_ROLE_PARAMETER_PATH w pliku .env.
  • Za pomocą parametru OPENID_REQUIRED_ROLE_TOKEN_KIND możesz określić, którego rodzaju tokena chcesz użyć. Możliwe wartości to access oraz id.
  1. Zaktualizuj konfigurację swojego projektu:
  • Otwórz plik .env w folderze swojego projektu i dodaj następujące zmienne:
    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

Jaka jest ta instrukcja?