Azure AD B2C - OIDCのprompt=noneに対応しているみたい
Azure AD B2CにおけるAuthentication Requestのパラメーターについてのメモです。
下記ドキュメントにはpromptパラメーターの値としてloginのみ有効とありますが、どうもnoneも対応しているようです。
OpenID Connect での Web サインイン - Azure AD B2C | Microsoft Learn
promptの説明より:
ユーザーに要求する対話の種類。
現時点で有効な値は login だけです。これはユーザーに、その要求に関する資格情報を強制的に入力させます。
(原文)
The type of user interaction that you require.
The only valid value at this time is login, which forces the user to enter their credentials on that request.
試しにprompt=noneを指定する次のアクションを用意して、B2Cにログインしていない状態で呼び出してみます。
するとログイン画面は表示されず、エラーコードAADB2C90077を含んだエラーメッセージがコールバックURLに対してPOSTされます。
public IActionResult SignIn() {
var properties = new AuthenticationProperties {
};
// promptにnoneを指定する
properties.SetParameter(OpenIdConnectParameterNames.Prompt, OpenIdConnectPrompt.None);
return Challenge(properties, OpenIdConnectDefaults.AuthenticationScheme);
}
エラー コード リファレンス - Azure AD B2C | Microsoft Learn
エラーメッセージ(AADB2C90077):
User does not have an existing session and request prompt parameter has a value of 'None'.
ログイン画面を表示させず、B2Cにログインしているかどうかの判定に使えそうですね。