使用ADFS和WIF基于角色的权限的存储(Storage of Role-based Permiss

2019-10-16 20:47发布

我正在使用Active Directory用户信息,ADFS进行身份验证和SSO,和几个自定义应用程序的所有的ASP.NET MVC内置的项目。

授权模式是索赔和基于角色的; 也就是说,用户的角色是作为索赔相关的应用程序访问,通过由ADFS(使用WIF)发布的令牌。

每个角色都有权限对应用程序的各种资源定义的列表(即角色管理员拥有写入权限对资源X)。 我们有基本的授权模型与一些硬编码的权限,运作良好。

我的问题是:什么是最好的方法/地方来存储各种角色的实际权限? 可以这样ADFS内完成或将需要一个单独的存储(我猜是后者)? 权限遵循同样的模式为XACML(用户/角色:资源:动作)和XACML的解决方案可能会是很容易合并,但XACML(XACML.NET)最流行的.NET实现似乎使用XML作为唯一这不会是可行的存储机制(我们有很多资源来存储权限反对 - 可能数以千计)。

什么人使用呢? 最明显的解决方案似乎是只存储在SQL Server,但考虑到所有用于身份验证的准备构建的解决方案(特别是使用ADFS和WIF)三胞胎它似乎很奇怪,有一个为实际执行授权和权限,使小(明显)的信息。 我在网上找到的所有示例停止在很短的权限级别解释的事情。

Answer 1:

ADFS往往是一个共享的基础设施组件。 与移动应用程序特定的知识给它(如应用程序特定的权限)的问题是,可能随着时间的推移管理员瓶颈。 问问你自己:谁去到随着时间的推移管理这些权限? 将你要提交某人批准一种形式? 这很可能是一个问题。 它会工作,但它会是一个麻烦。

在一般情况下,ADFS应该提供跨应用的属性,每个人都可以从中受益(例如,所有基于AD中的属性,企业范围的属性,人力资源相关的信息,就是很好的例子)。

当然,你可以有ADFS从以分布式的方式管理的数据库中提取数据。

在某些情况下,人们部署了应用程序特定的STS(通常称为“RP-STS”),其将所述令牌到的东西应用程序(或应用程序组)的期望。 的SharePoint做这行的例子。



Answer 2:

最简单的事情是将权限存储在SQL Server中,只使用一个自定义的SQL Server属性存储设备在ADFS检索值。

你可以做一些逻辑索赔的规则 ,但实在是没有存储这种在ADFS本身的东西的好地方。



文章来源: Storage of Role-based Permissions using ADFS and WIF