OpenID Connectの暗黙的フローを使用してAzure ADテナントアカウントとのシームレスなログインをサポートするアプリケーションがあります。ユーザーがAzure ADのエビデンスを発行したアプリにアクセスする権限がある場合、アクセスは自動的に許可されます。それ以外の場合は、通常のアプリケーションのログイン画面が表示されます。Azure AD with prompt = noneユーザーが別のテナントにログインしたときにBad Requestを表示します
ユーザ認証が必要になるたびに、prompt=none
を指定しているAzure ADログインページ(https://login.microsoftonline.com/xyz)にユーザをリダイレクトします。
ODIC specificationを尊重することは、次のような効果があります。
認証サーバMUST NOT表示任意の認証や 同意のユーザインタフェースページ。エンドユーザが がまだ認証されていない場合、またはクライアントが要求されたクレームに対して事前設定された を持っていない場合、または要求を処理するために他の条件を満たしていない場合はエラーが返されます。エラーコードは通常 login_required、interaction_requiredになります。これは、 の既存の認証および/または同意をチェックする方法として使用できます。
予想通りそれは一般的に動作しますが、しかし、AzureのADログインページは、エンドユーザーにエラー画面が表示され、ユーザーが別のAzure ADテナントにログインしたときにそれが起こる場合があります。
ユーザーアカウント「...」アイデンティティプロバイダ 『https://sts.windows.net/.../』からは は「...」テナントに存在していないと アプリケーション「...」というテナント内にアクセスすることはできません。テナントで最初に外部ユーザーとして アカウントを追加する必要があります。 別のAzure Active Directoryの ユーザアカウントでサインアウトしてもう一度サインインしてください。
質問は以下のとおりです。
- はそれがODIC仕様に違反しませんか?
- シームレスにそのようなケースをユーザーファッションで適切に処理するにはどうすればよいですか? (アプリはAzure ADへのリダイレクト後に何が起こっているのかを担当していない)。
domain_hintがトリックになります! –