Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用ADFS 2.0返回的声明使用ClaimsPrincipalPerpermission注释类_C#_.net_Annotations_Authorization_Adfs2.0 - Fatal编程技术网

C# 用ADFS 2.0返回的声明使用ClaimsPrincipalPerpermission注释类

C# 用ADFS 2.0返回的声明使用ClaimsPrincipalPerpermission注释类,c#,.net,annotations,authorization,adfs2.0,C#,.net,Annotations,Authorization,Adfs2.0,我正在使用一个支持声明的web应用程序。 我想锁定具有自定义属性的网页,以便在存在特定声明时允许访问该网页 我可以做到以下几点 Claim claim = claimsIdentity.Claims.FirstOrDefault(c => c.ClaimType == "http://somedomain.com/claims/MemberOfGroup" && c.Value == "domain\\test group"); 如果声明为空,则将它们从页面重定向 但是

我正在使用一个支持声明的web应用程序。 我想锁定具有自定义属性的网页,以便在存在特定声明时允许访问该网页

我可以做到以下几点

Claim claim = claimsIdentity.Claims.FirstOrDefault(c => c.ClaimType 
== "http://somedomain.com/claims/MemberOfGroup" && c.Value == "domain\\test group");
如果声明为空,则将它们从页面重定向

但是我如何通过注释类来实现这一点呢

我在看触诊申请表

[ClaimsPrincipalPermission(SecurityAction.Demand, Resource="", Operation="")]
但对于我的一生来说,我看不出应该在资源和运作上投入什么。我如何将adfs返回的索赔放入
索赔中。要做到这一点,我需要编写很多自定义类吗


谢谢,

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

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

样本通常在c:\程序文件(x86)\Windows身份基础SDK\v4.0\Simult\Exababy\RealabpBasic授权< /P> 希望有帮助