我正在开发一个项目,该项目使用 Active Directory 获取用户信息,ADFS 用于身份验证和 SSO,以及几个使用 ASP.NET MVC 构建的自定义应用程序。
授权模型是声明和基于角色的;也就是说,用户的角色可以通过 ADFS 颁发的令牌(使用 WIF)作为对相关应用程序的声明进行访问。
每个角色都有针对应用程序的各种资源的已定义权限列表(即角色管理员对资源 X 具有 WRITE 权限)。我们的基本授权模型与一些硬编码的权限配合得很好。
我的问题是:存储各种角色的实际权限的最佳方式/位置是什么?这可以在 ADFS 中完成还是需要单独的存储(我猜是后者)?权限遵循与 XACML (user/role:resource:action) 相同的广泛模式,并且 XACML 解决方案可能很容易合并,但 XACML (XACML.NET) 的最流行的 .NET 实现似乎使用 XML 作为唯一的不可行的存储机制(我们有很多资源来存储权限 - 可能有数千个)。
人们为此使用什么?最明显的解决方案似乎是将三元组存储在 SQL Server 中,但考虑到所有现成的身份验证解决方案(尤其是使用 ADFS 和 WIF),实际实现授权和权限的信息如此之少(明显)似乎很奇怪。我在网上找到的所有示例都没有解释权限级别的内容。