目的
Cloudflare Zero Trust と Microsoft Entra ID を使って、以下のような認証フローを確認します。
- Azure AD® - Force user interaction during WARP reauthentication · Cloudflare Zero Trust docs
You can require users to re-enter their credentials into Azure AD whenever they re-authenticate their WARP session. To configure this setting, make a PUT request and set the prompt parameter to eitherlogin
orselect_account
.
参考:Microsoft Entra ID で再認証時に必要な対話操作を強制するには
以下の prompt
オプションをつけてリクエストすることで、
シングルサインオンするごとに必要なユーザ対話操作の種類を指定できます。
- Microsoft ID プラットフォームと OAuth 2.0 認証コード フロー - Microsoft identity platform | Microsoft Learn
prompt
(省略可能):ユーザーとの必要な対話の種類を指定します。 有効な値は、login、none、consent、select_account です。
prompt=login
を指定すると、ユーザーはその要求に対して自分の資格情報の入力を強制され、シングル サインオンが無効になります。prompt=none
はその逆です。 これを指定すると、ユーザーに対して対話形式のプロンプトは表示されません。 シングル サインオンを使用して確認なしで要求を完了できない場合は、Microsoft ID プラットフォームからinteraction_required
エラーが返されます。prompt=consent
を指定すると、ユーザーがサインインした後で OAuth 同意ダイアログが表示され、アプリへのアクセス許可の付与をユーザーは求められます。prompt=select_account
を指定すると、シングル サインオンは中断され、まったく別のアカウントの使用を選択するためのオプションとして、セッション内または記憶されているアカウント内のいずれかにある全アカウントを一覧表示するアカウント選択エクスペリエンスが提供されます。
Cloudflare Zero Trust で再認証時に必要な対話操作を強制するには
以下の PUT メソッドで config
内の prompt
パラメータとして指定できます。
以下のコマンドで適用できます。
"prompt": "login"
Microsoft Entra ID 側で有効なセッションが残っていても、再度ログイン処理を強制的に要求されます。
"prompt": "select_account"
アカウント選択画面が強制的に要求されます。
Microsoft Entra ID 側で有効なセッションが残っている場合、そのまま Signed in
ユーザを選択すれば、特にログイン処理は強制されません。
"prompt": "none"
Microsoft Entra ID 側で有効なセッションが残っていれば、特に強制的にログインやアカウント選択の画面で要求されることはありません。
Microsoft Entra ID 側で有効なセッションが残っていない場合には、 AADSTS50058
エラーとなります。
(Cloudflare Zero Trust 経由で対話ログイン操作を求めることはないため、常に Microsoft Entra ID 側で先にログインしてある必要があります。)
- Microsoft Entra 認証と承認のエラー コード - Microsoft identity platform | Microsoft Learn
AADSTS50058
UserInformationNotProvided - シングル サインオンに関するセッション情報が不十分です。 これは、ユーザーがサインインしていないことを意味します。 これは、ユーザーが認証されておらず、まだサインインしていないときに想定される一般的なエラーです。
ユーザーがその前にサインインした SSO のコンテキストでこのエラーが発生する場合は、SSO セッションが見つからなかったか無効であったことを意味します。
prompt=none
が指定されている場合、このエラーがアプリケーションに返される可能性があります。
参考:"prompt": "consent"
ちなみに consent
は指定できず、上記の3つのいずれかを指定する形です。
{
"errors": [
{
"code": 12130,
"message": "access.api.error.invalid_request: prompt is invalid, must be one of the following: login, none, select_account"
}
],
"messages": [],
"result": null,
"success": false
}