2

我正在使用启用声明的网络应用程序。我想锁定具有自定义属性的网页,以允许在存在特定声明时访问该页面..

我可以做以下

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. 我需要编写很多自定义类来做到这一点吗?

谢谢,

4

1 回答 1

4

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

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

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

希望有帮助

于 2011-03-10T03:07:57.197 回答