SocialAndLocalAccountsスターター パックに基づくカスタム ポリシーがあります。
このサンプルHomeRealmDiscovery-ModernHome Realm Discovery
に基づいて、サードパーティ プロバイダーを使用するユーザーを正しいサインイン ページ (IdP) にリダイレクトするためのサポートを追加しています。
また、サードパーティの ID プロバイダー経由でサインインするユーザーのサインイン ページDomain Hints
を完全にスキップするためのサポートも追加しました。
このポリシーは、公式ドキュメントに従って、新しくリリースされたSelf-Served Password Resetを利用します。
問題は何ですか?
ユーザーが「Self-Served Password Reset」を実行すると、B2C セッションが破損した状態のままになります。ユーザーが B2C にリダイレクトされた場合、セッションは取得されません。
どうすればそれを言えますか?ユースケースは何ですか?
再現する手順:
1: ユーザーは、ユーザーを B2C サインイン ページにリダイレクトするアプリケーションに移動します。
2: ユーザーがローカル アカウントの電子メール (Gmail) を入力し、次の画面で、セルフサービス パスワード リセットを使用して実装されている [パスワードを忘れた] リンクをクリックします。
3: ユーザーはパスワード リセット フローを正しく実行し、最終的に「MFA」要素 (SMS コード) を入力します。
4: ユーザーは、ID トークンを使用して正しくアプリケーションにリダイレクトされ、ログインに成功します。
6: ユーザーは、同じカスタム ポリシーを使用して、新しい/別のアプリケーションへのリンクをクリックします。
7: 新しいアプリケーションはユーザーを B2C にリダイレクトします (同じカスタム ポリシー)
期待される結果:ユーザーは有効な B2C セッションを持っている必要があり、再度サインインするように求められることはありませんが、代わりに有効なid-token
.
実際の結果:ユーザーは新しいアプリケーションに送り返され、コールバック URL にエラー メッセージが表示されます。エラーが原因で、B2C にリダイレクトされて再ログインされます。
エラーメッセージ:
AADB2C90051: No suitable claims providers were found.
Correlation ID: c014004a-d2da-4000-83e5-6d648f9acccc
Timestamp: 2021-06-16 07:17:16Z
重要:ユーザーが通常のサインイン フロー (パスワードのリセットなし) を実行すると、すべてが正常に機能します。ユーザーはさまざまなアプリケーションを切り替えることができ、B2C はエラーをスローしたり、新しいサインインを要求したりすることなく、セッションを正しくピックアップします。異なるアプリ間の SSO は意図したとおりに機能します。
以下は、TrustFrameworkExtention
すべてのロジックを含み、スターター パックのベース ファイルから拡張された完全なファイルです:
TrustFrameworkExtention.xml