【发布时间】:2019-11-19 13:14:21
【问题描述】:
我们目前正在将我们的内部桌面应用程序转移到一系列具有统一Identity Server 的 Web 应用程序。因此,我们正在利用 Identity Server 来管理我们所有的用户帐户,并允许它联合访问我们的客户端和 API。总的来说,这一切都很好。
但是,我找不到任何示例,其中有人在不使用 AspNetCore Identity 的情况下设法实现基于角色或策略的授权。使用 IdentityServer 管理我的用户,我宁愿不必在我的身份服务器和我的个人 webapps 之间复制我的用户,而是更喜欢让每个 webapp 管理自己的内部权限。
是否有任何示例说明如何在不利用整个 AspNetCore Identity 的情况下实施基于策略的授权?
【问题讨论】:
-
只要您的身份对象被填充,您就可以利用基于角色/策略的授权
-
@Steve 我注意到我可以使用在 IdentityServer 上分配的角色,但是如何让应用程序特定的角色仅在应用程序本身上处理和管理?
-
您将应用特定的角色存储在哪里?它在用户的对象中吗?如果不是,那么它存储在哪里?如果您可以显示身份对象的结构会更容易
-
@Steve 的想法是将特定于应用程序的角色、声明和策略存储在特定于应用程序的数据库中。通过创建仅引用来自 IdentityServer 的
sub声明的有限Users表,或者仅使用sub声明代替专用表。 -
@Steve 总体而言,我们希望能够将给定用户从身份服务器分配的声明/角色添加到其中。身份服务器管理全局权限,但当事情在应用程序级别变得更细化时,我们希望添加额外的声明和角色。
标签: c# architecture authorization asp.net-identity identityserver4