以下文档介绍了对 AD FS 中提供的 prompt=login 参数的本机支持。
什么是 prompt=login?
当应用程序需要从 Microsoft Entra ID 请求新的身份验证时,这意味着他们需要Microsoft Entra ID 来重新对用户进行身份验证,即使用户已经过身份验证,他们也可以将参数作为身份验证请求的一部分发送到 prompt=login
Microsoft Entra ID。
当此请求适用于联合用户时,Microsoft Entra ID 需要通知 IdP(如 AD FS)请求用于新的身份验证。
默认情况下,Microsoft Entra ID 在将此类身份验证请求发送到联合 IdP 时,会将 prompt=login
转换为 wfresh=0
和 wauth=https://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password
。
这些参数意味着:
wfresh=0
:执行全新身份验证wauth=https://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password
:对新的身份验证请求使用用户名/密码
这可能会导致企业内联网和多因素身份验证场景出现问题,其中需要除用户名和密码之外的其他身份验证类型,该类型由 wauth
参数请求。
具有 2016 年 7 月更新汇总的 Windows Server 2012 R2 中的 AD FS 引入了对 prompt=login
参数的原生支持。 这意味着,现在Microsoft Entra ID 可以将此参数 as-is 发送到 AD FS 服务,作为 Microsoft Entra ID 和 Office 365 身份验证请求的一部分。
支持 prompt=login 的 AD FS 版本
下面是支持 prompt=login
参数的 AD FS 版本的列表。
- 具有 2016 年 7 月更新汇总的 Windows Server 2012 R2 中的 AD FS
- Windows Server 2016 或更高版本中的 AD FS
如何配置联合域以将 prompt=login 发送到 AD FS
使用 Microsoft Graph PowerShell 模块配置设置。
首先,通过运行以下 PowerShell 命令来获取联合域的
FederatedIdpMfaBehavior
、PreferredAuthenticationProtocol
和PromptLoginBehavior
的当前值。Get-MgDomainFederationConfiguration -DomainId <your_domain_name> | Format-List *
注释
默认情况下,
Get-MgDomainFederationConfiguration
输出不会在控制台中显示某些属性。 若要查看所有属性,应将输出通过管道 (|
) 输送到Format-List *
,以强制输出对象的所有属性。如果该属性
PromptLoginBehavior
的值为空($null
),则使用此属性的行为TranslateToFreshPasswordAuth
。请运行以下命令来配置
PromptLoginBehavior
为所需的值:New-MgDomainFederationConfiguration -DomainId <your_domain_name> ` -FederatedIdpMfaBehavior <current_value_from_step1> ` -PreferredAuthenticationProtocol <current_value_from_step1> ` -PromptLoginBehavior <TranslateToFreshPasswordAuth|NativeSupport|Disabled>
以下是参数的 PromptLoginBehavior
可能值及其含义:
- TranslateToFreshPasswordAuth:表示将
prompt=login
转换为wauth=https://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password
和wfresh=0
的默认 Microsoft Entra 行为。 - NativeSupport:表示参数
prompt=login
将按原样发送到 AD FS。 如果 AD FS 在 Windows Server 2012 R2 中使用 2016 年 7 月更新汇总或更高版本,则建议使用此值。 - 已禁用:表示仅
wfresh=0
发送到 AD FS。