联合身份标识:使用WIF实现ASP.NET被动身份验证
之外,还可以使用 PrincipalPermission 类型写入传统的基于角色的权限要求。还可以使用所要求的角色声明(第二个构造函数参数)初始化该类型,当调用 Demand 时,将调用当前主体的 IsInRole 方法。如果找不到该声明,则引发异常:
如果要在相应角色不存在时拒绝请求并引发异常,此方法很有用。 集中处理所有被请求资源的通用权限检查也是很有用的。有时,如果有访问控制策略(如存储在数据库中的规则),则可以使用中心组件读取这些规则,从而控制对特性和功能的访问。为此,WIF 提供了一个可以扩展的 ClaimsAuthorizationManager 组件。我以前的文章中提到过,您可以在身份标识模型节配置这种自定义组件类型:
图 7 演示一个自定义的 ClaimsAuthorizationManager,它验证名称声明是否存在,AdminsOnly 目录内的被请求资源是否需要 Administrators 角色声明。 图 7 自定义 ClaimsAuthorizationManager 实现
CustomClaimsAuthorizationManager 通过重写 CheckAccess 实现这一功能。此方法提供一个 AuthorizationContext 参数,该参数提供有关如下内容的信息:请求操作(对于被动联合来说,是 HTTP 谓词,如 GET 或 POST)、请求的资源(一个 URI)和尚未附加到请求线程的 ClaimsPrincipal。 声明转换 通常,IP-STS 发出的声明对描述经过身份验证的用户是有用的,但与 RP 的授权要求无关。IdP 的任务不是了解每个 RP 的授权需要哪种类型的角色、权限或其他更细粒度的项, 而是授权给身份标识提供程序域有关的声明,或 IdP 可针对经过身份验证的用户断言的声明。 因此,RP 可能需要将声明从 IP-STS 转换为与授权更加相关的项。这表明 RP 可以将用户标识映射(可能按用户名称或 UPN)到 RP 声明集。假设 IP-STS 授权给默认角色声明,图 8 列出了 RP 按照每个传入角色声明发出的可能权限声明集。权限声明类型可以是 RP 定义的自定义声明类型,如:
自定义 ClaimsAuthenticationManager 很适合转换传入 IP-STS 声明。将以下代码添加到 microsoft.identityModel 节,可 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |