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

Keycloak

LibreChatでユーザー認証にKeycloakを使用するための設定方法を学びます。

  1. Keycloak管理コンソールへのアクセス:
  • WebブラウザでKeycloak管理コンソールを開きます。これは通常、http://localhost:8080/auth/admin/ のようなURLでアクセスできます。
  1. レルムを作成する(必要な場合):
  • アプリケーション用のレルムをまだお持ちでない場合は、作成してください。「Add Realm」をクリックし、名前を付けます。
  1. クライアントを作成する:
  • 管理画面内で、「Clients」をクリックし、「Create」をクリックします。
  • クライアントIDを入力し、クライアントプロトコルとして「openid-connect」を選択します。
  • 'Client Authentication' を 'On' に設定します。
  • 'Valid Redirect URIs' に、http://localhost:3080/oauth/openid/callback またはアプリケーションに適したURIを入力してください。

image

image

image

  1. クライアントの設定:
  • クライアントを作成した後、その設定ページにリダイレクトされます。
  • 'Credentials' タブにある 'Client ID' と 'Secret' をメモしておいてください。これらはアプリケーションで必要になります。

image

  1. ロールの追加(オプション): 特定のロールを持つユーザーにアクセスを制限したい場合は、Keycloakでロールを定義し、それらをユーザーに割り当てることができます。
  • クライアントまたはレルムの「Roles」タブに移動します(ロールを定義する場所に応じて異なります)。
  • OPENID_REQUIRED_ROLE に設定した値と一致するロールを作成します。

image

  1. ユーザーにロールを割り当てる(オプション):
  • 「Users」に移動し、ユーザーを選択して、「Role Mappings」タブに移動します。
  • OPENID_REQUIRED_ROLE で指定されたロールのうち、少なくとも1つをユーザーに割り当ててください。

image

  1. トークン内のロールリストのパスを取得(オプション):
  • OpenIDプロバイダーから取得したjwtTokenをデコードし、アクセストークン内のロールリストへのパスを特定します。例えば、Keycloakを使用している場合、パスは realm_access.roles となります。
  • .env ファイルの OPENID_REQUIRED_ROLE_PARAMETER_PATH 変数にこのパスを入力してください。
  • パラメータ OPENID_REQUIRED_ROLE_TOKEN_KIND を使用して、使用するトークンの種類を指定できます。 指定可能な値は access および id です。
  1. プロジェクトの設定を更新する:
  • プロジェクトフォルダー内の .env ファイルを開き、以下の変数を追加してください。
    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 

このガイドはいかがでしたか?