gpt4 book ai didi

c# - 我如何在 WCF 中使用我自己的权限?

转载 作者:行者123 更新时间:2023-11-30 19:47:33 25 4
gpt4 key购买 nike

我正在研究使用 WCF 内置功能来帮助我实现位于 WCF 之上的授权服务。我已经有了如下表格:

UserRolePermission(我还有复合实体:UserRoleRolePermission)。

Permission 对象具有自定义属性,如 bool CanReadbool CanWrite。角色可以包含许多权限。

这如何与 WCF 的现有授权框架联系起来?我想尽量不要重新发明轮子。我如何使用自己的权限?我可以从 .NET 示例中看到角色是如何工作的,但看不到我自己的自定义 Permission 实体。有什么提示可以让我朝着正确的方向开始吗?

最佳答案

This article给出了执行此操作的正常方法的基本概述。基本上,您构建一个自定义主体,其中包含与 IAuthorizationPolicy 中的用户权限相关的数据,并将自定义主体附加到 WCF OperationContext。这保证了无论线程如何管理,您始终可以通过 Thread.CurrentPrincipal 访问此主体。

如果您的权限仅基于角色成员资格,您可以简单地使用标准机制,如 PrincipalPermission.Demand() 或使用 PrincipalPermissionAttribute 包装您的操作。

或者,如果您拥有更复杂的权限(例如,创建 | 删除 | 更新等),一种方法是创建一个实现 IPermission 的自定义权限。这种方法也适用于基于值(value)的权限(例如,批准高达 500 美元的订单)。然后,您可以在您的代码中构建所需的权限并让它调用 Demand() 来检查您当前的自定义主体是否被允许。如果可以使这些权限可序列化,那么创建伴随属性以支持使用每个权限的声明性安全性通常也很有意义。

上述方法与 WCF 和 .NET 安全基础设施很好地集成,一旦您了解 IPermission,就会提供一个优雅且可维护的解决方案。

关于c# - 我如何在 WCF 中使用我自己的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6607467/

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