AWS Cognitoのパスワードレスログインの設定に問題があります

Cannot Change Theme in Discourse — Nothing Works の議論を続けます。

こんにちは、カルロスさん!コミュニティへようこそ。 :hugs:

うーん、それは困りましたね。もう一度試していただけるなら、新しいトピックを立てます。私は個人的に AWS Cognito には詳しくありません。何を試して、どこでつまずいたのか教えていただけますか?ホストされているお客様は、team@discourse.org に連絡して、個別サポートを受けることもできます。

AI ボット によると、OpenID Connect プラグインで設定できるはずです。

<details class='ai-quote'>
<summary>
<span>AWS Cognito Setup for Discourse</span>
<span title='Conversation with AI'>AI</span>
</summary>

**tobiaseigen:**

AWS Cognito を設定してください

**ForumHelperBot:**

<details><summary>思考中...</summary>ユーザーは AWS Cognito の設定について質問しています。AWS Cognito は Amazon Web Services が提供する認証サービスで、Web およびモバイル アプリにユーザーのサインアップ、サインイン、アクセス制御を追加するのに役立ちます。
Discourse との AWS Cognito の統合に関するディスカッションやガイドを検索して、最も関連性の高い情報を提供します。</details>



<details>
  <summary>検索</summary>
  'aws cognito integration discourse' の検索結果を 54 件見つけました。
</details>
<span></span>

<details><summary>思考中...</summary>検索結果を分析して、Discourse との AWS Cognito の統合設定に関する情報を提供します。

検索結果に基づくと、Discourse と AWS Cognito の統合について議論しているトピックがいくつかあります。主なアプローチは、Discourse 用の OpenID Connect 認証プラグインを使用することのようです。主な情報を以下にまとめます。

1. OpenID Connect プラグインを使用して Discourse と AWS Cognito を統合することに成功したユーザーが複数のトピックで言及されています。

2. いくつかの関連トピックは次のとおりです。
   - 「OpenID Connect または SSO を使用した動作する AWS Cognito の設定をお持ちの方はいらっしゃいますか?」
   - 「OpenID Connect プラグインと AWS Cognito による自動サインイン」
   - 「カスタムログインフロー: AWS Cognito SSO (パスワードレスサインイン経由) - 可能ですか?」
   - 「セルフホスト Discourse インスタンスでの OpenID Connect サポート」

3. Discourse 用の公式 OpenID Connect プラグインがこれらのディスカッションで言及されています: https://github.com/discourse/discourse-openid-connect

4. あるユーザーは、これらのトピックの手順に従うことで AWS Cognito 経由で SSO を有効にできたと述べています。
   - 「OpenID Connect 認証プラグイン」
   - 「OpenID Connect または SSO を使用した動作する AWS Cognito の設定をお持ちの方はいらっしゃいますか?」

最も関連性の高いトピックを読んで、より具体的な手順を収集します。</details>

# Discourse と AWS Cognito の設定

検索結果に基づくと、OpenID Connect プラグインを使用して Discourse と AWS Cognito を統合することに成功した実装がいくつかあります。設定方法は次のとおりです。

## ステップ 1: OpenID Connect プラグインのインストール
[Discourse OpenID Connect (OIDC)](https://meta.discourse.org/t/discourse-openid-connect-oidc/103632) プラグインを使用すると、AWS Cognito を Discourse の認証プロバイダーとして使用できます。

プラグインをインストールするには、app.yml ファイルに追加します。

```yaml
- git clone https://github.com/discourse/discourse-openid-connect.git

ステップ 2: AWS Cognito の設定

  1. AWS Cognito でユーザープールを作成します。
  2. ユーザープールでアプリクライアントを設定します。
  3. コールバック URL を https://your-discourse-site.com/auth/oidc/callback に設定します。
  4. Cognito ドメイン、クライアント ID、クライアントシークレットをメモします。

ステップ 3: Discourse の OpenID Connect プラグインの設定

[管理] > [設定] > [プラグイン] > [openid connect] に移動し、以下を設定します。

  • openid connect enabled: true
  • openid connect discovery document: https://{cognito-domain}.auth.{region}.amazoncognito.com/{user-pool-id}/.well-known/openid-configuration
  • openid connect client id: Cognito アプリクライアント ID
  • openid connect client secret: Cognito アプリクライアントシークレット
  • openid connect authorize scope: openid email profile
  • openid connect token url: https://{cognito-domain}.auth.{region}.amazoncognito.com/oauth2/token
  • openid connect authorize url: https://{cognito-domain}.auth.{region}.amazoncognito.com/oauth2/authorize
  • openid connect user json url: https://{cognito-domain}.auth.{region}.amazoncognito.com/oauth2/userInfo

その他の設定オプション

  • 自動サインインを有効にするには、openid connect authorize url?prompt=none を追加します。
  • openid connect button title でログインボタンのテキストをカスタマイズできます。

トラブルシューティング

問題が発生した場合:

  • Cognito と Discourse の両方でコールバック URL が正しく設定されていることを確認してください。
  • クライアント ID とシークレットが正しいことを確認してください。
  • Cognito ユーザープールが、必要なユーザー属性を返すように正しく設定されていることを確認してください。

詳細な実装例については、ユーザーが正常に設定を共有したこのディスカッションを参照してください。

この設定プロセスのいずれかの部分について、さらに具体的な情報が必要ですか?

```
「いいね!」 2

どうもありがとうございます、@tobiaseigen

私はAWS Cognitoを使わずにコミュニティを開始しました… 私のシステムは標準のDiscourse認証システムを使用しています… 少しハック的です。なぜなら、私のユーザーが有料クライアントになるたびに、StripeのWebhookがAPIを使って新しいDiscourseユーザーを作成し、一時的なパスワードを生成して認証情報をメールで送信するからです。

AWS Cognitoを使用したかったのは、私の主要な有料サービスがGitbook上でホストされているコースで、AWS Cognitoのパスワードレス認証システムで保護されているからです。そのシステムを再利用できれば理想的でした。しかし、今では遅すぎます😊

とにかく、あなたが説明したすべての手順を追ったと思います… もしかしたら何か見落としたかもしれません… すべてが完璧に動作しましたが、メールアドレスと認証コードを入力した後、Discourseが /login にリダイレクトされ、/(ホーム)にはリダイレクトされませんでした。Discourseの管理ページでユーザーを調べたところ、AWS CognitoはDiscourseユーザーを作成していないことがわかりました。

ともかく、ありがとうございます!

「いいね!」 1