目次
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のスコープ
- プロファイルを追加
- 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の設定が間違っています。
- 私の場合は、ユーザプールIDにもAWSのリージョンがあるので、勘違いしてユーザプールIDのAWS リージョン部分部分(ap-northeast-1)を削除していました。
修正できたら、docker compose up -d しましょう。
参考