我正在使用声明启用网络应用。 我想锁定一个带有自定义属性的网页,以便在存在某些声明时允许访问该页面。
我可以做以下
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
。我是否需要编写大量自定义类来执行此操作?
谢谢,
答案 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
希望有所帮助