配置身份验证策略

在 Windows Server 2012 R2 上的 AD FS 中,访问控制和身份验证机制都已通过多个因素(包括用户、设备、位置和身份验证数据)得到增强。 借助这些增强,你可以在用户界面或 Windows PowerShell 中管理通过基于用户标识或组成员身份、网络位置、加入工作区的设备数据,以及执行多重身份验证 (MFA) 时的身份验证状态的多重访问控制和多重身份验证授予对受 AD FS 保护应用程序的访问权限所带来的风险。

有关 Windows Server 2012 R2 上 Active Directory 联合身份验证服务 (AD FS) 中的 MFA 和多重访问控制的详细信息,请参阅以下主题:

通过 AD FS 管理管理单元配置身份验证策略

本地计算机上的 Administrators 中的成员身份或等效身份是完成这些过程所需的最低要求。 查看有关使用适当帐户和本地和域默认组中组成员身份的详细信息。

在 Windows Server 2012 R2 上的 AD FS 中,可以指定一个全局范围的身份验证策略,该策略适用于 AD FS 保护的所有应用程序和服务。 还可以针对信赖方信任的并受 AD FS 保护的特定应用程序和服务设置身份验证策略。 按信赖方信任为特定应用程序指定身份验证策略不会替代全局身份验证策略。 如果全局身份验证策略或按信赖方信任身份验证策略需要 MFA,则当用户尝试对此信赖方信任进行身份验证时,将触发 MFA。 全局身份验证策略是未配置特定身份验证策略的应用程序和服务的信赖方信任的回退。

在 Windows Server 2012 R2 中全局配置主要身份验证

  1. 在服务器管理器中,单击“工具”,选择“AD FS 管理”

  2. 在 AD FS 管理单元中,单击“身份验证策略”

  3. 在“主要身份验证”部分,单击“全局设置”旁边的“编辑”。 也可以右键单击“身份验证策略”并选择“编辑全局主要身份验证”,或者在“操作”窗格下选择“编辑全局主要身份验证”Screenshot that highlights Edit Global Primary Authentication option.

  4. 在“编辑全局身份验证策略”窗口中的“主要”选项卡上,可将以下设置配置为全局身份验证策略的一部分

按信赖方信任配置主要身份验证

  1. 在服务器管理器中,单击“工具”,选择“AD FS 管理”

  2. 在 AD FS 管理单元中,单击“身份验证策略”\“按信赖方信任”,然后单击要为其配置身份验证策略的信赖方信任

  3. 右键单击要为其配置身份验证策略的信赖方信任,然后选择“编辑自定义主要身份验证”,或者,在“操作”窗格下选择“编辑自定义主要身份验证”Screenshot that highlights the Edit Custom Primary Authentication menu option.

  4. 在“编辑 <relying_party_trust_name> 的身份验证策略”窗口中的“主要”选项卡下,可将以下设置配置为“按信赖方信任”身份验证策略的一部分

    • 通过“用户每次登录时都需要提供其凭据”复选框指定用户是否需要在每次登录时都提供凭据Screenshot that shows how to configure settings as part of the Per Relying Party Trust authentication policy.

全局配置多重身份验证

  1. 在服务器管理器中,单击“工具”,选择“AD FS 管理”

  2. 在 AD FS 管理单元中,单击“身份验证策略”

  3. 在“多重身份验证”部分,单击“全局设置”旁边的“编辑”。 也可以右键单击“身份验证策略”并选择“编辑全局多重身份验证”,或者在“操作”窗格下选择“编辑全局多重身份验证”Screenshot that highlights the Edit Global Multi-factor Authentication option.

  4. 在“编辑全局身份验证策略”窗口中的“多重身份验证”选项卡下,可将以下设置配置为全局多重身份验证策略的一部分

    • 通过“用户/组”、“设备”和“位置”部分下的可用选项指定 MFA 设置或条件

    • 若要为其中的任何设置启用 MFA,必须至少选择一种附加身份验证方法。 “证书身份验证”是默认可用选项。 也可以配置其他自定义的附加身份验证方法,例如 Windows Azure Active Authentication。 有关详细信息,请参阅演练指南:使用适用于敏感应用程序的附加多重身份验证管理风险

警告

只能全局配置附加身份验证方法。 auth policies

按信赖方信任配置多重身份验证

  1. 在服务器管理器中,单击“工具”,选择“AD FS 管理”

  2. 在 AD FS 管理单元中,单击“身份验证策略”\“按信赖方信任”,然后单击要为其配置 MFA 的信赖方信任

  3. 右键单击要为其配置 MFA 的信赖方信任,然后选择“编辑自定义多重身份验证”,或者,在“操作”窗格下选择“编辑自定义多重身份验证”

  4. 在“编辑 <relying_party_trust_name> 的身份验证策略”窗口中的“多重身份验证”选项卡下,可将以下设置配置为按信赖方信任身份验证策略的一部分

    • 通过“用户/组”、“设备”和“位置”部分下的可用选项指定 MFA 设置或条件

通过 Windows PowerShell 配置身份验证策略

借助 Windows PowerShell,可以更灵活地使用 Windows Server 2012 R2 上的 AD FS 中提供的各种访问控制因素和身份验证机制,来配置对 AD FS 保护的资源实现真正条件访问所需的身份验证策略和授权规则。

本地计算机上的 Administrators 中的成员身份或等效身份是完成这些过程所需的最低要求。 可在本地默认组和域默认组 (http://go.microsoft.com/fwlink/?LinkId=83477). 中查看有关使用适合的帐户和组成员身份的详细信息。

通过 Windows PowerShell 配置附加身份验证方法

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
`Set-AdfsGlobalAuthenticationPolicy –AdditionalAuthenticationProvider CertificateAuthentication  `

警告

若要验证是否已成功运行此命令,可以运行 Get-AdfsGlobalAuthenticationPolicy 命令。

按信赖方信任配置基于用户组成员身份数据的 MFA

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令:
`$rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust`

警告

确保将 <relying_party_trust> 替换为你的信赖方信任名称

  1. 在同一个 Windows PowerShell 命令窗口中,运行以下命令。
$MfaClaimRule = "c:[Type == '"https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid'", Value =~ '"^(?i) <group_SID>$'"] => issue(Type = '"https://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod'", Value '"https://schemas.microsoft.com/claims/multipleauthn'");"

Set-AdfsRelyingPartyTrust –TargetRelyingParty $rp –AdditionalAuthenticationRules $MfaClaimRule

注意

确保将 <group_SID> 替换为你的 Active Directory (AD) 组的安全标识符 (SID) 值。

基于用户的组成员身份数据全局配置 MFA

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
$MfaClaimRule = "c:[Type == '" https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid'", Value == '"group_SID'"]
 => issue(Type = '"https://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod'", Value = '"https://schemas.microsoft.com/claims/multipleauthn'");"

Set-AdfsAdditionalAuthenticationRule $MfaClaimRule

注意

确保将 <group_SID> 替换为你的 AD 组的 SID 值

基于用户的位置全局配置 MFA

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
$MfaClaimRule = "c:[Type == '" https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork'", Value == '"true_or_false'"]
 => issue(Type = '"https://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod'", Value = '"https://schemas.microsoft.com/claims/multipleauthn'");"

Set-AdfsAdditionalAuthenticationRule $MfaClaimRule

注意

确保将 <true_or_false> 替换为 truefalse。 值取决于具体的规则条件,该条件根据访问请求是来自 Extranet 还是 Intranet 而定。

基于用户的设备数据全局配置 MFA

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
$MfaClaimRule = "c:[Type == '" https://schemas.microsoft.com/2012/01/devicecontext/claims/isregistereduser'", Value == '"true_or_false"']
 => issue(Type = '"https://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod'", Value = '"https://schemas.microsoft.com/claims/multipleauthn'");"

Set-AdfsAdditionalAuthenticationRule $MfaClaimRule

注意

确保将 <true_or_false> 替换为 truefalse。 值取决于具体的规则条件,该条件根据设备是否已加入工作区而定。

在访问请求来自 Extranet 和未加入工作区的设备的情况下全局配置 MFA

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
`Set-AdfsAdditionalAuthenticationRule "c:[Type == '"https://schemas.microsoft.com/2012/01/devicecontext/claims/isregistereduser'", Value == '"true_or_false'"] && c2:[Type == '"https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork'", Value == '" true_or_false '"] => issue(Type = '"https://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod'", Value ='"https://schemas.microsoft.com/claims/multipleauthn'");" `

注意

确保根据具体的规则条件,将 <true_or_false> 的两个实例替换为 truefalse。 规则条件根据设备是否已加入工作区,以及访问请求是来自 Extranet 还是 Intranet 而定。

在访问来自属于特定组的 Extranet 用户的情况下全局配置 MFA

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
Set-AdfsAdditionalAuthenticationRule "c:[Type == `"https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid`", Value == `"group_SID`"] && c2:[Type == `"https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork`", Value== `"true_or_false`"] => issue(Type = `"https://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod`", Value =`"https://schemas.microsoft.com/claims/

注意

确保将 <group_SID> 替换为组 SID 的值,并将 <true_or_false> 替换为 truefalse,具体取决于你的规则条件,该条件根据访问请求是来自 Extranet 还是 Intranet 而定

通过 Windows PowerShell 基于用户数据授予对应用程序的访问权限

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。

    $rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust
    
    

注意

确保将 <relying_party_trust> 替换为你的信赖方信任值

  1. 在同一个 Windows PowerShell 命令窗口中,运行以下命令。

    
      $GroupAuthzRule = "@RuleTemplate = `"Authorization`" @RuleName = `"Foo`" c:[Type == `"https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid`", Value =~ `"^(?i)<group_SID>$`"] =>issue(Type = `"https://schemas.microsoft.com/authorization/claims/deny`", Value = `"DenyUsersWithClaim`");"
    Set-AdfsRelyingPartyTrust –TargetRelyingParty $rp –IssuanceAuthorizationRules $GroupAuthzRule
    

注意

确保将 <group_SID> 替换为你的 AD 组的 SID 值

仅当已使用 MFA 验证此用户的身份时,才授予对 AD FS 保护的应用程序的访问权限

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
`$rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust `

注意

确保将 <relying_party_trust> 替换为你的信赖方信任值

  1. 在同一个 Windows PowerShell 命令窗口中,运行以下命令。

    $GroupAuthzRule = "@RuleTemplate = `"Authorization`"
    @RuleName = `"PermitAccessWithMFA`"
    c:[Type == `"https://schemas.microsoft.com/claims/authnmethodsreferences`", Value =~ `"^(?i)https://schemas\.microsoft\.com/claims/multipleauthn$`"] => issue(Type = `"https://schemas.microsoft.com/authorization/claims/permit`", Value = '"PermitUsersWithClaim'");"
    
    

仅当访问请求来自已注册到用户且已加入工作区的设备时,才授予对 AD FS 保护的应用程序的访问权限

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。

    $rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust
    
    

注意

确保将 <relying_party_trust> 替换为你的信赖方信任值

  1. 在同一个 Windows PowerShell 命令窗口中,运行以下命令。
$GroupAuthzRule = "@RuleTemplate = `"Authorization`"
@RuleName = `"PermitAccessFromRegisteredWorkplaceJoinedDevice`"
c:[Type == `"https://schemas.microsoft.com/2012/01/devicecontext/claims/isregistereduser`", Value =~ `"^(?i)true$`"] => issue(Type = `"https://schemas.microsoft.com/authorization/claims/permit`", Value = `"PermitUsersWithClaim`");

仅当访问请求来自已注册到用户且已加入工作区的设备,并且已使用 MFA 验证该用户的身份时,才授予对 AD FS 保护的应用程序的访问权限

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
`$rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust `

注意

确保将 <relying_party_trust> 替换为你的信赖方信任值

  1. 在同一个 Windows PowerShell 命令窗口中,运行以下命令。

    $GroupAuthzRule = '@RuleTemplate = "Authorization"
    @RuleName = "RequireMFAOnRegisteredWorkplaceJoinedDevice"
    c1:[Type == `"https://schemas.microsoft.com/claims/authnmethodsreferences`", Value =~ `"^(?i)http://schemas\.microsoft\.com/claims/multipleauthn$`"] &&
    c2:[Type == `"https://schemas.microsoft.com/2012/01/devicecontext/claims/isregistereduser`", Value =~ `"^(?i)true$"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit`", Value = `"PermitUsersWithClaim`");"
    
    

仅当访问请求来自其身份已使用 MFA 进行验证的用户时,才授予对 AD FS 保护的应用程序的 Extranet 访问权限

  1. 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
`$rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust`

注意

确保将 <relying_party_trust> 替换为你的信赖方信任值

  1. 在同一个 Windows PowerShell 命令窗口中,运行以下命令。
$GroupAuthzRule = "@RuleTemplate = `"Authorization`"
@RuleName = `"RequireMFAForExtranetAccess`"
c1:[Type == `"https://schemas.microsoft.com/claims/authnmethodsreferences`", Value =~ `"^(?i)http://schemas\.microsoft\.com/claims/multipleauthn$`"] &&
c2:[Type == `"https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork`", Value =~ `"^(?i)false$`"] => issue(Type = `"https://schemas.microsoft.com/authorization/claims/permit`", Value = `"PermitUsersWithClaim`");"

其他参考

AD FS 操作