本文中所述的策略使用两种声明
- 声明 AD FS 是根据 AD FS 和 Web 应用程序代理可以检查和验证的信息而创建的,例如直接连接到 AD FS 或 WAP 的客户端的 IP 地址。 
- 声明 AD FS 是根据客户端作为 HTTP 标头转发到 AD FS 的信息而创建的 
重要说明:如下所述策略将阻止 Windows 10 域加入和登录需要访问以下附加终结点的登录方案
Windows 10 域加入和登录所需的 AD FS 终结点
- 联合身份验证服务名称]/adfs/services/trust/2005/windowstransport
- [联合身份验证服务名称]/adfs/services/trust/13/windowstransport
- [联合身份验证服务名称]/adfs/services/trust/2005/usernamemixed
- [联合身份验证服务名称]/adfs/services/trust/13/usernamemixed
- [联合身份验证服务名称]/adfs/services/trust/2005/certificatemixed
- [联合身份验证服务名称]/adfs/services/trust/13/certificatemixed
重要说明:/adfs/services/trust/2005/windowstransport 和 /adfs/services/trust/13/windowstransport 终结点应仅启用 Intranet 访问,因为它们旨在面向 Intranet 的终结点,这些终结点在 HTTPS 上使用 WIA 绑定。 将其公开给 Extranet 可能会允许针对这些终结点的请求绕过锁定保护。 应在代理上禁用这些终结点(即通过 Extranet 禁用),以保护 AD 帐户锁定。
若要解决此问题,请更新基于终结点声明拒绝的任何策略,以允许上述终结点例外。
例如,以下规则:
c1:[Type == "http://custom/ipoutsiderange", Value == "true"] && c2:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path", Value != "/adfs/ls/"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = " DenyUsersWithClaim");
将更新为:
c1:[Type == "http://custom/ipoutsiderange", Value == "true"] && c2:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path", Value != "(/adfs/ls/)|(/adfs/services/trust/2005/windowstransport)|(/adfs/services/trust/13/windowstransport)|(/adfs/services/trust/2005/usernamemixed)|(/adfs/services/trust/13/usernamemixed)|(/adfs/services/trust/2005/certificatemixed)|(/adfs/services/trust/13/certificatemixed)"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = " DenyUsersWithClaim");
Note
此类别的声明应仅用于实现业务策略,不得用作安全策略来保护对网络的访问。 未经授权的客户端可能会发送包含虚假信息的标头,从而获得访问权限。
本文中所述的策略应始终与其他身份验证方法一起使用,例如用户名和密码或多重身份验证。
客户端访问策略方案
| Scenario | Description | 
|---|---|
| 方案 1:阻止对 Office 365 的所有外部访问 | 允许从内部企业网络上的所有客户端访问 Office 365,但会根据外部客户端的 IP 地址拒绝来自外部客户端的请求。 | 
| 方案 2:阻止对 Office 365 的所有外部访问(Exchange ActiveSync 除外) | 允许从公司内部网络上的所有客户端以及使用 Exchange ActiveSync 的任何外部客户端设备(如智能手机)访问 Office 365。 所有其他外部客户端(如使用 Outlook 的客户端)均会被阻止。 | 
| 方案 3:阻止对 Office 365 的所有外部访问(基于浏览器的应用程序除外) | 阻止对 Office 365 的外部访问,被动(基于浏览器的)应用程序(如 Outlook Web Access 或 SharePoint Online)除外。 | 
| 方案 4:阻止对 Office 365 的所有外部访问(指定的 Active Directory 组除外) | 此方案用于测试和验证客户端访问策略部署。 此方案仅为一个或多个 Active Directory 组的成员阻止对 Office 365 的外部访问。 使用此方案,还可以仅向组成员提供外部访问权限。 | 
启用客户端访问策略
若要在 Windows Server 2012 R2 的 AD FS 中启用客户端访问策略,必须更新 Microsoft Office 365 标识平台信赖方信任。 选择以下示例方案之一,在 Microsoft Office 365 标识平台信赖方信任上配置最符合组织需求的声明规则。
方案 1:阻止对 Office 365 的所有外部访问
使用此客户端访问策略方案,可以从所有内部客户端进行访问,并基于外部客户端的 IP 地址阻止所有外部客户端。 可以使用以下过程将正确的发行授权规则添加到所选方案的 Office 365 依赖方信任。
创建规则以阻止对 Office 365 的所有外部访问
- 在 服务器管理器中,单击 “工具”,然后单击“ AD FS 管理”。 
- 在控制台树的“AD FS\信任关系”下,单击“信赖方信任”,右键单击“Microsoft Office 365 标识平台信任”,然后单击“编辑声明规则”。 
- 在“编辑声明规则”对话框中,选择“颁发授权规则”选项卡,然后单击“添加规则”以启动声明规则向导。 
- 在“选择规则模板”页上的“声明规则模板”下,选择“使用自定义规则发送声明”,然后单击“下一步”。 
- 在 “配置规则 ”页上的 “声明规则名称”下,键入此规则的显示名称,例如“如果有任何 IP 声明超出所需范围,则拒绝”。 在 “自定义规则”下,键入或粘贴以下声明规则语言语法(将上述“x-ms-forwarded-client-ip”的值替换为有效的 IP 表达式): - c1:[Type == "https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", Value == "false"] && c2:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value =~ "^(?!192\.168\.1\.77|10\.83\.118\.23)"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = " DenyUsersWithClaim");
- 单击“ 完成”。 在“颁发授权规则”列表中,验证新规则出现的时间是否早于默认的“允许访问所有用户”规则(“拒绝”规则始终优先,即使此规则在列表中的出现位置比较靠前)。 如果没有默认的允许访问规则,可以使用声明规则语言在列表末尾添加一个,如下所示: - c:[] => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "true");
- 若要保存新规则,请在“编辑声明规则”对话框中,单击“确定”。 生成的列表应如下所示。   
方案 2:阻止对 Office 365 的所有外部访问(Exchange ActiveSync 除外)
以下示例允许从包括 Outlook 在内的内部客户端访问所有 Office 365 应用程序,包括 Exchange Online。 它按照客户端 IP 地址指示,阻止从位于公司网络外部的客户端进行访问,但 Exchange ActiveSync 客户端(如智能手机)除外。
创建规则以阻止对 Office 365 的所有外部访问(Exchange ActiveSync 除外)
- 在 服务器管理器中,单击 “工具”,然后单击“ AD FS 管理”。 
- 在控制台树的“AD FS\信任关系”下,单击“信赖方信任”,右键单击“Microsoft Office 365 标识平台信任”,然后单击“编辑声明规则”。 
- 在“编辑声明规则”对话框中,选择“颁发授权规则”选项卡,然后单击“添加规则”以启动声明规则向导。 
- 在“选择规则模板”页上的“声明规则模板”下,选择“使用自定义规则发送声明”,然后单击“下一步”。 
- 在 “配置规则 ”页上的 “声明规则名称”下,键入此规则的显示名称,例如“如果有任何 IP 声明超出所需范围,请发出 ipoutsiderange 声明”。 在 “自定义规则”下,键入或粘贴以下声明规则语言语法(将上述“x-ms-forwarded-client-ip”的值替换为有效的 IP 表达式): - c1:[Type == "https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", Value == "false"] && c2:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value =~ "^(?!192\.168\.1\.77|10\.83\.118\.23)"] => issue(Type = "http://custom/ipoutsiderange", Value = "true");
- 单击“ 完成”。 验证新规则是否显示在“颁发授权规则”列表中。 
- 接下来,在“编辑声明规则”对话框中的“颁发授权规则”选项卡上,单击“添加规则”以再次启动声明规则向导。 
- 在“选择规则模板”页上的“声明规则模板”下,选择“使用自定义规则发送声明”,然后单击“下一步”。 
- 在 “配置规则 ”页上的 “声明规则名称”下,键入此规则的显示名称,例如“如果 IP 超出所需范围,并且存在非 EAS x-ms-client-application 声明,拒绝”。 在 “自定义规则”下,键入或粘贴以下声明规则语言语法: - c1:[Type == "http://custom/ipoutsiderange", Value == "true"] && c2:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application", Value != "Microsoft.Exchange.ActiveSync"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "DenyUsersWithClaim");
- 单击“ 完成”。 验证新规则是否显示在“颁发授权规则”列表中。 
- 接下来,在“编辑声明规则”对话框中的“颁发授权规则”选项卡上,单击“添加规则”以再次启动声明规则向导。 
- 在“选择规则模板”页上的“声明规则模板”下,选择“使用自定义规则发送声明”,然后单击“下一步”。 
- 在 “配置规则 ”页上的 “声明规则名称”下,键入此规则的显示名称,例如“检查应用程序声明是否存在”。 在 “自定义规则”下,键入或粘贴以下声明规则语言语法: - NOT EXISTS([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application"]) => add(Type = "http://custom/xmsapplication", Value = "fail");
- 单击“ 完成”。 验证新规则是否显示在“颁发授权规则”列表中。 
- 接下来,在“编辑声明规则”对话框中的“颁发授权规则”选项卡上,单击“添加规则”以再次启动声明规则向导。 
- 在“选择规则模板”页上的“声明规则模板”下,选择“使用自定义规则发送声明”,然后单击“下一步”。 
- 在 “配置规则 ”页上的 “声明规则名称”下,键入此规则的显示名称,例如“拒绝 ipoutsiderange true 和应用程序失败的用户”。 在 “自定义规则”下,键入或粘贴以下声明规则语言语法: - c1:[Type == "http://custom/ipoutsiderange", Value == "true"] && c2:[Type == "http://custom/xmsapplication", Value == "fail"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "DenyUsersWithClaim");
- 单击“ 完成”。 在“颁发授权规则”列表中,验证新规则是否显示在上一个规则的正下方,并且在“默认允许访问所有用户”规则之前(“拒绝”规则始终优先,即使此规则在列表中的出现位置比较靠前)。 - 如果没有默认的允许访问规则,可以使用声明规则语言在列表末尾添加一个,如下所示: - c:[] => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "true");
- 若要保存新规则,请在“编辑声明规则”对话框中,单击“确定”。 生成的列表应如下所示。   
方案 3:阻止对 Office 365 的所有外部访问(基于浏览器的应用程序除外)
创建规则以阻止对 Office 365 的所有外部访问(基于浏览器的应用程序除外)
- 在 服务器管理器中,单击 “工具”,然后单击“ AD FS 管理”。 
- 在控制台树的“AD FS\信任关系”下,单击“信赖方信任”,右键单击“Microsoft Office 365 标识平台信任”,然后单击“编辑声明规则”。 
- 在“编辑声明规则”对话框中,选择“颁发授权规则”选项卡,然后单击“添加规则”以启动声明规则向导。 
- 在“选择规则模板”页上的“声明规则模板”下,选择“使用自定义规则发送声明”,然后单击“下一步”。 
- 在 “配置规则 ”页上的 “声明规则名称”下,键入此规则的显示名称,例如“如果有任何 IP 声明超出所需范围,请发出 ipoutsiderange 声明”。 在 “自定义规则”下,键入或粘贴以下声明规则语言语法(将上述“x-ms-forwarded-client-ip”的值替换为有效的 IP 表达式): 
c1:[Type == "https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", Value == "false"] && c2:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value =~ "^(?!192\.168\.1\.77|10\.83\.118\.23)"] => issue(Type = "http://custom/ipoutsiderange", Value = "true");
- 单击“ 完成”。 验证新规则是否显示在“颁发授权规则”列表中。 
- 接下来,在“编辑声明规则”对话框中的“颁发授权规则”选项卡上,单击“添加规则”以再次启动声明规则向导。 
- 在“选择规则模板”页上的“声明规则模板”下,选择“使用自定义规则发送声明”,然后单击“下一步”。 
- 在 “配置规则 ”页上的 “声明规则名称”下,键入此规则的显示名称,例如“如果 IP 超出所需范围,并且终结点不是 /adfs/ls,拒绝”。 在 “自定义规则”下,键入或粘贴以下声明规则语言语法: - c1:[Type == "http://custom/ipoutsiderange", Value == "true"] && c2:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path", Value != "/adfs/ls/"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = " DenyUsersWithClaim");`
- 单击“ 完成”。 在“颁发授权规则”列表中,验证新规则出现的时间是否早于默认的“允许访问所有用户”规则(“拒绝”规则始终优先,即使此规则在列表中的出现位置比较靠前)。 
 
 如果没有默认的允许访问规则,可以使用声明规则语言在列表末尾添加一个,如下所示:
c:[] => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "true");
- 若要保存新规则,请在“编辑声明规则”对话框中,单击“确定”。 生成的列表应如下所示。   
方案 4:阻止对 Office 365 的所有外部访问(指定的 Active Directory 组除外)
以下示例基于 IP 地址启用从内部客户端进行的访问。 此规则将阻止来自位于公司网络外部且具有外部客户端 IP 地址的客户端的访问,但指定 Active Directory 组中的个人除外。使用声明规则向导,按照以下步骤将正确的颁发授权规则添加到 Microsoft Office 365 身份平台信赖方信任:
创建规则以阻止对 Office 365 的所有外部访问(指定的 Active Directory 组除外)
- 在 服务器管理器中,单击 “工具”,然后单击“ AD FS 管理”。 
- 在控制台树的“AD FS\信任关系”下,单击“信赖方信任”,右键单击“Microsoft Office 365 标识平台信任”,然后单击“编辑声明规则”。 
- 在“编辑声明规则”对话框中,选择“颁发授权规则”选项卡,然后单击“添加规则”以启动声明规则向导。 
- 在“选择规则模板”页上的“声明规则模板”下,选择“使用自定义规则发送声明”,然后单击“下一步”。 
- 在 “配置规则 ”页上的 “声明规则名称”下,键入此规则的显示名称,例如“如果所需范围之外有任何 IP 声明,请发出 ipoutsiderange 声明。 在 “自定义规则”下,键入或粘贴以下声明规则语言语法(将上述“x-ms-forwarded-client-ip”的值替换为有效的 IP 表达式): - `c1:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value =~ "^(?!192\.168\.1\.77|10\.83\.118\.23)"] && c2:[Type == "https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", Value == "false"] => issue(Type = "http://custom/ipoutsiderange", Value = "true");`
- 单击“ 完成”。 验证新规则是否显示在“颁发授权规则”列表中。 
- 接下来,在“编辑声明规则”对话框中的“颁发授权规则”选项卡上,单击“添加规则”以再次启动声明规则向导。 
- 在“选择规则模板”页上的“声明规则模板”下,选择“使用自定义规则发送声明”,然后单击“下一步”。 
- 在 “配置规则 ”页上的 “声明规则名称”下,键入此规则的显示名称,例如“检查组 SID”。 在 “自定义规则”下,键入或粘贴以下声明规则语言语法(将“groupsid”替换为所使用的 AD 组的实际 SID): - NOT EXISTS([Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value == "S-1-5-32-100"]) => add(Type = "http://custom/groupsid", Value = "fail");
- 单击“ 完成”。 验证新规则是否显示在“颁发授权规则”列表中。 
- 接下来,在“编辑声明规则”对话框中的“颁发授权规则”选项卡上,单击“添加规则”以再次启动声明规则向导。 
- 在“选择规则模板”页上的“声明规则模板”下,选择“使用自定义规则发送声明”,然后单击“下一步”。 
- 在 “配置规则 ”页上的 “声明规则名称”下,键入此规则的显示名称,例如“拒绝 ipoutsiderange true 和 groupsid 失败的用户”。 在 “自定义规则”下,键入或粘贴以下声明规则语言语法: 
c1:[Type == "http://custom/ipoutsiderange", Value == "true"] && c2:[Type == "http://custom/groupsid", Value == "fail"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "DenyUsersWithClaim");
- 单击“ 完成”。 在“颁发授权规则”列表中,验证新规则是否显示在上一个规则的正下方,并且在“默认允许访问所有用户”规则之前(“拒绝”规则始终优先,即使此规则在列表中的出现位置比较靠前)。  
              
 
 如果没有默认的允许访问规则,可以使用声明规则语言在列表末尾添加一个,如下所示:
c:[] => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "true");
- 若要保存新规则,请在“编辑声明规则”对话框中,单击“确定”。 生成的列表应如下所示。   
生成 IP 地址范围表达式
x-ms-forwarded-client-ip 声明是从当前仅由 Exchange Online 设置的 HTTP 标头填充的,在将身份验证请求传递给 AD FS 时填充标头。 声明的值可以是下列值之一:
Note
Exchange Online 目前仅支持 IPV4,不支持 IPV6 地址。
- 单个 IP 地址:直接连接到 Exchange Online 的客户端的 IP 地址
Note
- 公司网络上客户端的 IP 地址将显示为组织的出站代理或网关的外部接口 IP 地址。
- 通过 VPN 或 Microsoft DirectAccess (DA) 连接到公司网络的客户端可能会显示为内部公司客户端或外部客户端,具体取决于 VPN 或 DA 的配置。
- 一个或多个 IP 地址:当 Exchange Online 无法确定连接的客户端的 IP 地址时,它将基于 x-forwarded-for 标头的值进行设置,这是一个非标准标头,可以包含在基于 HTTP 的请求中,并且受市场上许多客户端、负载均衡器和代理的支持。
Note
- 多个 IP 地址(指示客户端 IP 地址和传递请求的每个代理的地址)将用逗号分隔。
- 与 Exchange Online 基础结构相关的 IP 地址不会显示在列表中。
正则表达式
必须匹配 IP 地址的范围时,有必要构造正则表达式来执行比较。 在接下来的一系列步骤中,我们将提供有关如何构造匹配以下地址范围的此类表达式的示例(请注意,必须更改这些示例以匹配公共 IP 范围):
- 192.168.1.1 - 192.168.1.25 
- 10.0.0.1 - 10.0.0.14 - 首先,能够匹配单个 IP 地址的基本模式如下所示:\b###\.###\.###\.###\b - 此外,我们还可以将两个不同的 IP 地址与 OR 表达式匹配,如下所示:\b###\.###\.###\.###\b|\b###\.###\.###\.###\b - 因此,仅匹配两个地址的示例(例如 192.168.1.1 或 10.0.0.1)将为:\b192\.168\.1\.1\b|\b10\.0\.0\.1\b - 这样你就可以通过这一方法输入任意数量的地址。 如果需要允许一个地址范围,例如 192.168.1.1 - 192.168.1.25,则必须逐个字符完成匹配:\b192\.168\.1\.([1-9]|1[0-9]|2[0-5])\b - 请注意以下事项: 
- IP 地址被视为字符串而不是数字。 
- 该规则按如下所示进行细分:\b192\.168\.1\。 
- 这与以 192.168.1 开头的任何值匹配。 
- 以下内容与最后一位小数点之后的地址部分所需的范围匹配: - ([1-9] 匹配以 1-9 结尾的地址 
- |1[0-9] 匹配以 10-19 结尾的地址 
- |2[0-5]) 匹配以 20-25 结尾的地址 
 
- 注意,圆括号的位置必须正确,这样才不会开始匹配 IP 地址的其他部分。 
- 匹配 192 块后,就可以为 10 块编写类似的表达式:\b10\.0\.0\.([1-9]|1[0-4])\b 
- 然后将它们放在一起,以下表达式应能匹配“192.168.1.1~25”和“10.0.0.1~14”的所有地址:\b192\.168\.1\.([1-9]|1[0-9]|2[0-5])\b|\b10\.0\.0\.([1-9]|1[0-4])\b 
测试表达式
正则表达式可能会变得非常棘手,因此强烈建议使用正则表达式验证工具。 如果通过 Internet 搜索“联机正则表达式生成器”,将找到一些不错的联机实用工具,这样就可以针对示例数据尝试使用这些表达式。
测试表达式时,必须了解需要匹配的内容。 Exchange Online 系统可能会发送许多 IP 地址,用逗号分隔。 上面提供的表达式将适用于此。 但是,测试正则表达式时,请务必考虑这一点。 例如,可以使用以下示例输入来验证上面的示例:
192.168.1.1, 192.168.1.2, 192.169.1.1. 192.168.12.1, 192.168.1.10, 192.168.1.25, 192.168.1.26, 192.168.1.30, 1192.168.1.20
10.0.0.1, 10.0.0.5, 10.0.0.10, 10.0.1.0, 10.0.1.1, 110.0.0.1, 10.0.0.14, 10.0.0.15, 10.0.0.10, 10,0.0.1
声明类型
Windows Server 2012 R2 中的 AD FS 使用以下声明类型提供请求上下文信息:
X-MS-Forwarded-Client-IP
声明类型:https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip
此 AD FS 声明表示确定发出请求的用户(例如 Outlook 客户端)的 IP 地址的“最佳尝试”。 此声明可以包含多个 IP 地址,包括转发了请求的每个代理的地址。 此声明是从 HTTP 填充的。 声明的值可以是下列值之一:
- 单个 IP 地址 - 直接连接到 Exchange Online 的客户端的 IP 地址
Note
公司网络上客户端的 IP 地址将显示为组织的出站代理或网关的外部接口 IP 地址。
- 一个或多个 IP 地址 - 如果 Exchange Online 无法确定连接的客户端的 IP 地址,它将基于 x-forwarded-for 标头的值来设置值,该标头是一个非标准标头,可以包含在基于 HTTP 的请求中,受市场上许多客户端、负载均衡器和代理的支持。 
- 多个 IP 地址(指示客户端 IP 地址和传递请求的每个代理的地址)将用逗号分隔。 
 
Note
与 Exchange Online 基础结构相关的 IP 地址不会出现在列表中。
Warning
Exchange Online 目前仅支持 IPv4 地址,不支持 IPv6 地址。
X-MS-Client-Application
声明类型:https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application
此 AD FS 声明表示最终客户端使用的协议,它松散地对应于正在使用的应用程序。 此声明是从当前仅由 Exchange Online 设置的 HTTP 标头填充的,在将身份验证请求传递给 AD FS 时填充标头。 根据应用程序,此声明的值将是以下值之一:
- 对于使用 Exchange Active Sync 的设备,值为 Microsoft.Exchange.ActiveSync。 
- 使用 Microsoft Outlook 客户端可能会生成以下任何值: - Microsoft.Exchange.Autodiscover 
- Microsoft.Exchange.OfflineAddressBook 
- Microsoft.Exchange.RPCMicrosoft.Exchange.WebServices 
- Microsoft.Exchange.RPCMicrosoft.Exchange.WebServices 
 
- 此标头的其他可能值包括: - Microsoft.Exchange.Powershell 
- Microsoft.Exchange.SMTP 
- Microsoft.Exchange.Pop 
- Microsoft.Exchange.Imap 
 
X-MS-Client-User-Agent
声明类型:https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-user-agent
此 AD FS 声明提供一个字符串,表示客户端用于访问服务的设备类型。 这可以在客户想要阻止某些设备(例如特定类型的智能手机)的访问时使用。 此声明的示例值包括(但不限于)以下值。
下面是 x-ms-user-agent 值可能包含的内容的示例,适用于其 x-ms-client-application 为“Microsoft.Exchange.ActiveSync”的客户端
- Vortex/1.0 
- Apple-iPad1C1/812.1 
- Apple-iPhone3C1/811.2 
- Apple-iPhone/704.11 
- Moto-DROID2/4.5.1 
- SAMSUNGSPHD700/100.202 
- Android/0.3 - 此值也可能为空。 
X-MS-Proxy
声明类型:https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy
此 AD FS 声明指示请求已通过 Web 应用程序代理。 此声明由 Web 应用程序代理填充,该代理在将身份验证请求传递到后端联合身份验证服务时填充标头。 然后,AD FS 将其转换为声明。
声明的值是传递了请求的 Web 应用程序代理的 DNS 名称。
InsideCorporateNetwork
声明类型:https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork
与上面的 x-ms-proxy 声明类型类似,此声明类型指示请求是否已通过 Web 应用程序代理。 与 x-ms-proxy 不同,insidecorporatenetwork 是一个布尔值,True 表示从公司网络内部直接向联合身份验证服务发出请求。
X-MS-Endpoint-Absolute-Path(主动与被动)
声明类型:https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path
此声明类型可用于确定源自“主动”(富)客户端与“被动”(基于 Web 浏览器的)客户端的请求。 这允许来自基于浏览器的应用程序(例如 Outlook Web Access、SharePoint Online 或 Office 365 门户)的外部请求,同时阻止来自富客户端(例如 Microsoft Outlook)的请求。
声明的值是接收了请求的 AD FS 服务的名称。