カスタムログインフロー:AWS Cognito SSO(パスワードレスサインイン経由)- これは可能ですか?

以下の手順に従うことで、AWS Cognito を介した SSO を有効化できました:

  1. Discourse OpenID Connect (OIDC)
  2. Anyone have a working AWS Cognito configuration w/ ouath2, openid or sso?

ただし、当社のモバイルアプリおよび Web アプリで採用している認証フローを Discourse 上でも実現する方法を探っています。具体的には、パスワードレスログイン(ユーザーがメールアドレスを入力し、認証コードを受け取る)というカスタム認証フローです。

メインアプリではパスワードを使用していないため、SSO もこのパスワードレス認証フローを通じて機能することが期待されます。

この機能を実現する方法、あるいは実現可能かどうかについて、ご教示いただけますでしょうか。

よろしくお願いいたします。

何か見落としているのでなければ、それは機能するはずです。リンクを送信してもらうために必要な場所に移動させれば、Discourse にログインできるはずです。それでもうまくいかないのでしょうか?それとも、Discourse 側からリンクの送信を依頼する場所へ誘導させたいのでしょうか?

Jay さん、こんにちは。

返信ありがとうございます。

clarification させてください。

当社のアプリ(Discourse ではありません)のフローはパスワードレスです。ユーザーがメールアドレスを入力 → メールで 6 桁のコードを受け取る → コードを入力 → ログイン、という流れです。

この機能を有効にするため、認証チャレンジを定義・作成および検証する Lambda トリガーを実装しています。また、UI はカスタムです(AWS Amplify が提供するものではありません)。

私たちが目指しているのは、Discourse のログインプロセスもこれと同じにすることです。Discourse に対して同じ Cognito アプリクライアント設定を使用しようと試みましたが、以下のエラーページが表示されてしまいます。


(Cognito からのネットワーク呼び出しでは、このエラーについてあまり役に立つ情報が得られていません)

これに興味がある方のために、追記します。

私たちは、この投稿に触発されて、トークンの処理を行う中間 OAuth サーバーをセットアップする必要がありました。
https://medium.com/@scott_84836/adding-aws-cognito-authentication-to-discourse-using-oauth2-basic-f20209ba6162

バックエンドに Flask/Python を使用していたため、最終的にこちらを採用しました:python-oauth2 · PyPI

要約すると:Cognito を使用して、デフォルトの手段ではパスワードレスの設定を行うことができないため、軽量な OAuth を自社で構築する必要がありました。