gpt4 book ai didi

c# - 使用 PrincipalPermission 强制执行正确的 IPrincipal 和 IIdentity

转载 作者:行者123 更新时间:2023-11-30 15:49:20 25 4
gpt4 key购买 nike

我已经根据定义有效身份及其权限的网站定义了自定义 IPrincipal 和自定义 IIdentity。这两个类都用于 Windows 窗体应用程序中使用的程序集。

问题是,当在我的程序集类之上使用声明性 PrincipalPermission 属性时,如何强制使用我的自定义 IPrincipal 和 IIdentity 类,而不是其他可能经过身份验证的 IPrincipal/IIdentity。

[PrincipalPermission(SecurityAction.Demand, Authenticated = true, Role = "limited")]
public class RequiresAuthentication
{ }

最佳答案

安全感知代码分为两部分:标识方 (IP),用于对用户进行身份验证并生成 IIdentityIPrincipal 对象,以及依赖方 (RP ),它利用了它们。

在 RP 中,你不关心 IPrincipal 来自哪里,只要它是有效的。

您可以通过自己编写 IP 来控制权限的来源。这样,您可以确保只生成自定义 IIdentityIPrincipal 对象。

如果你调用别人的 IP,你根据定义并不关心生成什么样的 IPrincipal

编辑:

话虽如此,但还有一个额外的问题,即名为 "limited" 的角色可能由多个不同的 IP 生成,并且对每个 IP 具有不同的含义。解决该问题的方法是使用基于声明的委托(delegate)人而不是基于角色的委托(delegate)人。声明不是简单的字符串,而是经过数字签名并由命名空间 URI 标识的通用数据值。这样一来,您仍然不关心向您提供了哪个 IPrincipal,但您可以保证该声明是正确的,即使它的名称与来自其他 IP 的其他声明冲突也是如此。

查看用于基于声明的安全性的新 Windows Identity Foundation(以前称为 Geneva,以前称为 Zermatt)。

关于c# - 使用 PrincipalPermission 强制执行正确的 IPrincipal 和 IIdentity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1680565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com