如何在OAuth2访问令牌中为Resource Server添加特定信息的正确方法是什么?

时间:2016-09-09 01:04:04

标签: oauth-2.0 identityserver4

我有一个场景,我的资源服务器(RS)可以连接到多个数据库,它可以是多租户。它有一个环境配置我可以说:Env A指向数据库A并且属于租户A; Env B指向数据库B并属于租户B;

我们的桌面应用程序将该信息存储在每次调用时发送到RS的数据结构中,我们的Web应用程序将其存储在ASP.NET Session中。用户在登录时选择环境。

现在我们正在将我们的API完全转移到REST服务,并使用IdentityServer4使用oAuth2保护它们。

我需要将该环境值发送给API,我认为它应该是访问令牌的一部分。

第一个问题是:这是正确的吗?访问令牌可以拥有这种信息吗?

第二个是:哪个是最好的IdentityServer4服务,我应该扩展为将该值作为访问令牌内的声明注入,因此在ClaimsPrincipal中。

第三是:有时我没有用户在登录时选择环境(例如,客户端凭证授权)。在这种情况下,作为客户索赔的正确治疗环境是什么?有一种方法可以获得动态客户索赔吗?

很抱歉这个很长的问题!

此致 迪奥戈

1 个答案:

答案 0 :(得分:1)

如果该声明是关于用户(或客户端)的身份 - 是的 - 它是令牌的候选者。

将声明添加到代表您的API的资源范围 - 这样,将在配置文件服务中请求声明类型,您可以将其添加到令牌。

客户声称不是动态的。