LibreChatとAWS Cognitoを連携する

公開日:
目次

ChatGPTのクローンとしてLibreChatを利用しているのですが、LibreChatでは各種ログイン機能が使えます。

今回はAWS Cognitoと連携してみたので、備忘録を残します。

まずはCognitoのユーザープールの作成から行います。

ユーザープールの作成

下記の項目で作成してください。

  • ユーザー名
  • Eメール
  • ユーザーが任意のユーザー名でサインインすることを許可
  • ユーザー名の大文字と小文字を区別する
  • 次へ

パスワードポリシー

下記の項目を追加してください。

  • Cognitoのデフォルト
  • オプションのMFA
    • Authenticator アプリケーション
  • セルフサービスのアカウントの復旧を有効化 - 推奨
  • Eメールのみ
  • 次へ

サインアップエクスペリエンスを設定

下記の手順で追加してください。

  • 自己登録を有効化のチェックを外す
    • これにチェックを入れるとユーザが自分で登録してログインできてしまう。今回は業務用アプリなので外す
  • Cognito が検証と確認のためにメッセージを自動的に送信することを許可
  • E メールのメッセージを送信、E メールアドレスを検証
  • 未完了の更新があるときに元の属性値をアクティブに保つ
  • Eメールアドレス
  • 必須の属性
    • name
  • 次へ

メッセージ配信を設定

下記の手順で追加してください。

  • CognitoでEメールを送信
  • 次へ

アプリケーションを統合

下記の手順で追加してください。

  • LibreChat OpenID
  • Cognito のホストされた UI を使用
  • Cognito ドメインを使用する
  • https://librechat-openid
  • 秘密クライアント
  • LibreChat
  • クライアントのシークレットを生成する
  • https://自分のドメイン名/oauth/openid/callback
  • 高度な設定
    • OpenID Connectのスコープ
      • プロファイルを追加
  • 次へ

最後に「ユーザープールを作成」ボタンをクリックしてください。

環境変数を取得してLibreChatに追加する

必要な環境変数の値は下記です。

ユーザープールIDを取得する

Cognitoのユーザープールを選択してください。

ユーザープールIDが記載されているのでメモします。

クライアントIDとクライアントシークレットを選択する

先ほどのユーザープールからアプリケーションの統合を選択してください。

アプリケーションクライアント名(LibreChat)をクリックします。

クライアントIDとクライアントシークレットが記載されているので、メモします。

LibreChatの.envを開く

.envを下記の通り修正します。

DOMAIN_CLIENT=https://あなたのドメイン名.com # ドメイン名がなかったら、http://localhost:3080
DOMAIN_SERVER=https://あなたのドメイン名.com # ドメイン名がなかったら、http://localhost:3080
  
OPENID_CLIENT_ID=あなたのクライアントID
OPENID_CLIENT_SECRET=あなたのクライアントシークレット
OPENID_ISSUER=https://cognito-idp.AWSのリージョン名.amazonaws.com/ユーザープールID/.well-known/openid-configuration
OPENID_SESSION_SECRET=適当な文字列(ランダム作成されたものがベター)
OPENID_SCOPE=openid profile email
OPENID_CALLBACK_URL=/oauth/openid/callback

気を付けるポイント

  • USER POOL IDは、AWS REGIONも含んだものです。
  • regionがap-northeast-1だとしたら下記のようになる。
  • OPENID_ISSUER=https://cognito-idp.ap-northeast-1.amazonaws.com/ap-northeast-1○○○○/.well-known/openid-configuration
    • 私の場合は、ユーザプールIDにもAWSのリージョンがあるので、勘違いしてユーザプールIDのAWS リージョン部分部分(ap-northeast-1)を削除していました。
      • うまくいくか確認したい場合は、上記のurlにアクセスしてみてください。
      • userpoolがないと表示されることがあるので、その場合はurlの設定が間違っています。

修正できたら、docker compose up -d しましょう。

参考