在 AD FS 中,在 Windows Server 2012 R2 中,访问控制和身份验证机制都得到了增强,其中包括用户、设备、位置和身份验证数据。 这些增强功能允许您通过用户界面或 Windows PowerShell,利用基于用户身份或组成员身份、网络位置、工作场所连接的设备数据的多因素访问控制,以及多重身份验证的认证状态来管理向 AD FS 保护的应用程序授予访问权限的风险。
有关 Windows Server 2012 R2 中 Active Directory 联合身份验证服务(AD FS)中的 MFA 和多重访问控制的详细信息,请参阅以下主题:
通过 AD FS 管理管理单元配置身份验证策略
本地计算机上的 管理员成员身份或等效成员身份是完成这些过程的最低要求。 查看有关在本地和域默认组中使用合适帐户和组成员身份的详细信息。
在 AD FS 中,在 Windows Server 2012 R2 中,可以在全局范围内指定一个身份验证策略,该策略适用于 AD FS 保护的所有应用程序和服务。 还可以为依赖于参与方信任并受 AD FS 保护的特定应用程序和服务设置身份验证策略。 为每个信赖方信任指定特定应用程序的身份验证策略不会替代全局身份验证策略。 如果全局或每个信赖方信任身份验证策略都需要 MFA,则当用户尝试向此信赖方信任进行身份验证时,将触发 MFA。 对于没有特定配置身份验证策略的应用程序和服务,全局身份验证策略是信赖方信任关系的备用方案。
在 Windows Server 2012 R2 中全局配置主要身份验证
在服务器管理器中,单击“工具”,选择“AD FS 管理”。
在 AD FS 管理单元中,单击“身份验证策略”。
在“主身份验证”部分中,单击“全局设置”旁边的“编辑”。 还可以右键单击 “身份验证策略”,然后选择“ 编辑全局主身份验证”,或者,在 “作 ”窗格下,选择 “编辑全局主身份验证”。
在 “编辑全局身份验证策略 ”窗口中的 “主要 ”选项卡上,可以将以下设置配置为全局身份验证策略的一部分:
用于主要身份验证的身份验证方法。 可以在 Extranet 和 Intranet 下选择可用的身份验证方法。
通过 “启用设备身份验证”复选框进行设备身份验证 。 有关详细信息,请参阅 Join to Workplace from Any Device for SSO and Seamless Second Factor Authentication Across Company Applications。
按信赖方信任配置主要身份验证
在服务器管理器中,单击“工具”,选择“AD FS 管理”。
在 AD FS 管理单元中,单击身份验证策略\按信赖方信任,然后单击要为其配置身份验证策略的信赖方信任。
右键单击要为其配置身份验证策略的信赖方信任,然后选择 编辑自定义主身份验证,或者,在 操作窗格中,选择 编辑自定义主身份验证。
在“编辑 <relying_party_trust_name> 的身份验证策略”窗口中的“主要”选项卡下,可将以下设置配置为“按信赖方信任”身份验证策略的一部分:
- 通过“用户每次登录时都需要提供其凭据”复选框指定用户是否需要在每次登录时都提供凭据。
- 通过“用户每次登录时都需要提供其凭据”复选框指定用户是否需要在每次登录时都提供凭据。
全局配置多重身份验证
在服务器管理器中,单击“工具”,选择“AD FS 管理”。
在 AD FS 管理单元中,单击“身份验证策略”。
在“多重身份验证”部分中,单击“全局设置”旁边的“编辑”。 还可以右键单击 “身份验证策略”,然后选择“ 编辑全局多重身份验证”,或者,在 “作 ”窗格下,选择 “编辑全局多重身份验证”。
在 “编辑全局身份验证策略 ”窗口中的 “多重 身份验证策略”选项卡下,可以将以下设置配置为全局多重身份验证策略的一部分:
通过“用户/组”、“设备”和“位置”部分下的可用选项指定 MFA 设置或条件。
若要为上述任何设置启用 MFA,必须至少选择一个其他身份验证方法。 证书身份验证 是默认的可用选项。 还可以配置其他自定义其他身份验证方法,例如 Windows Azure Active Authentication。 有关详细信息,请参阅 演练指南:使用敏感应用程序的其他多重身份验证管理风险。
警告
只能全局配置其他身份验证方法。
为每个信赖方信任配置多重身份验证
在服务器管理器中,单击“工具”,选择“AD FS 管理”。
在 AD FS 管理单元中,单击身份验证策略\按信赖方信任,然后单击要为其配置 MFA 的信赖方信任。
右键单击要为其配置 MFA 的信赖方信任,然后选择“编辑自定义多重身份验证”,或者,在“操作”窗格下选择“编辑自定义多重身份验证”。
在“编辑<relying_party_trust_name>身份验证策略”窗口中的“多重”选项卡下,可以将以下设置配置为每个信赖方信任身份验证策略的一部分:
- 通过“用户/组”、“设备”和“位置”部分下的可用选项指定 MFA 设置或条件。
通过 Windows PowerShell 配置身份验证策略
Windows PowerShell 可以更灵活地使用 Windows Server 2012 R2 中 AD FS 中可用的各种访问控制因素和身份验证机制来配置身份验证策略和授权规则,这些策略和授权规则为 AD FS -secured 资源实现真正的条件访问所必需的。
本地计算机上的管理员成员身份或等效成员身份是完成这些过程的最低要求。 可在本地默认组和域默认组 (http://go.microsoft.com/fwlink/?LinkId=83477). 中查看有关使用适合的帐户和组成员身份的详细信息。
通过 Windows PowerShell 配置其他身份验证方法
- 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
`Set-AdfsGlobalAuthenticationPolicy –AdditionalAuthenticationProvider CertificateAuthentication `
警告
若要验证此命令是否成功运行,可以运行该 Get-AdfsGlobalAuthenticationPolicy
命令。
按信赖方信任配置基于用户组成员身份数据的 MFA
- 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令:
`$rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust`
警告
务必将 <relying_party_trust> 替换为你的信赖方信任名称。
- 在同一 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
- 在联合服务器上,打开 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
- 在联合服务器上,打开 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>替换为true
或false
。 该值取决于特定规则条件,具体取决于访问请求是来自 Extranet 还是 Intranet。
基于用户的设备数据全局配置 MFA
- 在联合服务器上,打开 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>替换为true
或false
。 值取决于具体的规则条件,该条件根据设备是否已加入工作区而定。
在访问请求来自 Extranet 和未加入工作区的设备的情况下全局配置 MFA
- 在联合服务器上,打开 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> 的两个实例替换为 true
或 false
。 规则条件取决于设备是否已加入工作场所,以及访问请求是否来自外联网或内联网。
在访问来自属于特定组的 Extranet 用户的情况下全局配置 MFA
- 在联合服务器上,打开 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> 替换为 true
或 false
,具体取决于你的规则条件,该条件根据访问请求是来自 Extranet 还是 Intranet 而定。
通过 Windows PowerShell 基于用户数据授予对应用程序的访问权限
在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
$rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust
注释
务必将 <relying_party_trust> 替换为你的信赖方信任值。
在同一 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 保护的应用程序授予访问权限
- 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
`$rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust `
注释
务必将 <relying_party_trust> 替换为你的信赖方信任值。
在同一 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 保护的应用程序的访问权限
在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
$rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust
注释
务必将 <relying_party_trust> 替换为你的信赖方信任值。
- 在同一 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 保护的应用程序的访问权限
- 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
`$rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust `
注释
务必将 <relying_party_trust> 替换为你的信赖方信任值。
在同一 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 访问权限
- 在联合服务器上,打开 Windows PowerShell 命令窗口并运行以下命令。
`$rp = Get-AdfsRelyingPartyTrust –Name relying_party_trust`
注释
务必将 <relying_party_trust> 替换为你的信赖方信任值。
- 在同一 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`");"