多租户spa应用程序和授权中的Identityserver和asp.net身份

时间:2019-01-16 15:17:24

标签: c# asp.net-core identityserver4

我有一个带有.net core 2 api的spa应用程序。我想使用Identityserver 4,以便将来我也可以提供sso解决方案并允许访问我的其他api /应用程序。我有一个数据库,其中包含Identityserver4将与其连接的所有租户的所有用户信息(以及租户信息)。每个租户都有自己的spa应用程序数据库。

我从Identityserver获得的api访问令牌是否应在声明中包含角色信息,如果是,则在哪里设置角色(在与用户相同的数据库中或在租户特定的数据库中?)我不确定如何知道那些角色是针对哪个api的。例如,如果我请求api1范围,我可以为该用户获取仅适用于该范围的角色列表,如果我请求api2范围,则可以获取该用户的不同角色列表等

在我看来,有关identityserver的文档和有关Microsoft的文档似乎与解决此问题的方法相矛盾。

1 个答案:

答案 0 :(得分:0)

由于您要描述的确切冲突,通常在oidc / oauth2就绪时,基于角色的身份验证将被淘汰。除非您所有的Web应用程序/ api都将尊重您在asp.net身份中定义的核心角色-否则将访问令牌包含在它们中几乎没有好处。

如果您计划使用其他应用程序将遵循的中央角色系统并以其为基础进行授权,那么我建议您在单个数据库中使用Identity Server 4设置asp.net身份,为“角色”创建一个身份资源”,并在客户端请求“角色”范围时将用户特定角色作为令牌包含在声明中。