使用ClaimsPrincipalPermission使用ADFS 2.0返回的声明来注释类

时间:2010-12-02 16:40:38

标签: c# .net annotations authorization adfs2.0

我正在使用声明启用网络应用。 我想锁定一个带有自定义属性的网页,以便在存在某些声明时允许访问该页面。

我可以做以下

Claim claim = claimsIdentity.Claims.FirstOrDefault(c => c.ClaimType 
== "http://somedomain.com/claims/MemberOfGroup" && c.Value == "domain\\test group");

如果声明为空,则将它们从页面重定向..

但是我怎么能通过注释班级来做到这一点。

我正在查看ClaimsPrincipalPermission

[ClaimsPrincipalPermission(SecurityAction.Demand, Resource="", Operation="")]
但对于我的生活来说,看不出要投入资源和操作的内容。如何将adfs返回的声明转换为claimsprincipalpermission。我是否需要编写大量自定义类来执行此操作?

谢谢,

1 个答案:

答案 0 :(得分:4)

您必须创建自己的AuthorizationManager类,该类继承自ClaimsAuthorizationManager并覆盖CheckAccess()方法。将使用ClaimsPrincipalPermission属性修饰的任何方法调用此方法。它将传递一个AuthorizationContext对象,该对象包含Resource字符串,Operation String和包含当前用户拥有的所有声明的IPrincipal对象。在此方法中,您可以按照您选择的任何方式解析此数据,以确定访问权限并返回true或false。

在WIF SDK示例中,您将找到一个名为ClaimsAuthorization的简单控制台应用程序项目,用于演示此项目。它使用资源和操作查看应用程序配置文件,以查看用户需要的声明,并相应地返回true或false。当然,您不必这样做,您可以使用您选择的任何其他逻辑。

示例通常位于C:\ Program Files(x86)\ Windows Identity Foundation SDK \ v4.0 \ Samples \ Extensibility \ Claims based Authorization

希望有所帮助