【问题标题】:IdentityServer3 - Extending Claims/Roles - Adding Attributes to PermissionsIdentityServer3 - 扩展声明/角色 - 将属性添加到权限
【发布时间】:2016-04-06 18:01:21
【问题描述】:

我们正在将我们的销售网站管理工具套件从独立迁移到网络界面。我们的设计有一个网站所有者通过我们的主门户网站登录,然后选择我们的一个子应用程序来管理他们的基本网站内容、他们的库存、他们的跟踪脚本标签等。我正在研究 IdentityServer3 看看它是否将作为我们的 SSO 解决方案。

棘手的部分是每个应用程序都需要知道给定用户在登录后对哪个网站具有权限。用户可能对网站 1 和 2 具有管理员权限,但只有在网站 3 上具有查看权限。有没有办法扩展声称说用户对某个网站具有一定的角色?即使只是向角色/声明添加“id”属性就足够了。我们为每个网站创建单独的角色是不可行的(我们将启动几百个),除非有办法避免必须在客户端中单独授权它们。也许有一种方法来构造角色名称并使用自定义 ResourceAuthorizationManager 来解析出我们需要的信息?我们还必须能够将此信息与其他身份信息一起传递给子应用程序,但作为用户在其声明中拥有的特定角色的一部分,以便客户端可以访问用户有权访问哪些网站为。

【问题讨论】:

    标签: identityserver3


    【解决方案1】:

    IdentityServer - 顾名思义 - 是关于身份 - 而不是权限。

    身份服务器的工作是为一个或多个应用程序提供稳定一致的身份。

    所有特定于应用程序的内容(如权限)都应在应用程序本身中处理。

    你可以例如创建一个单独的权限服务(由身份服务器保护),允许您的应用程序在应用程序的上下文中检索用户的权限,并将其提供给授权逻辑。

    【讨论】:

    • 但 IdentityServer 确实知道角色。您是说这些角色及其与 Authorize 属性的使用与 IdentityServer 的设计目的不匹配?
    • 我正在寻找一种方法来扩展在 IDsrv 和 hte 客户端之间传递的身份有效负载,以便它在其中包含我想要的信息。
    • 您可以完全控制哪些声明进入哪个令牌 - 这就是范围的用途。该文档包含所有详细信息。我的一般建议仍然有效。
    • 我正在使用github.com/IdentityServer/IdentityServer3.AspNetIdentity,它有一个表 AspNetUserClaims,我可以从应用程序(使用一些 api)将用户权限相关声明添加到该表吗?请分享您的想法。
    猜你喜欢
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 2011-04-29
    • 2015-10-17
    相关资源
    最近更新 更多