首页 > 解决方案 > IdentityServer4 将数据传递给 ProfileService

问题描述

我有一个身份服务器 4 实现,允许客户端通过网站在站点之间切换。每个用户都有很多我希望作为声明返回的特定于站点的信息 - 使用参考令牌和自省。我已经实现了一个配置文件服务,它按站点返回所有信息,但这可能是很多信息,因为一些用户可以访问很多站点。

目前,我正在生成一个登录声明列表,其中包含用户有权访问的站点列表。客户端在每个请求上设置一个标头,该标头定义了他们希望从中获取数据的站点。这对于 api 非常有效,因为每个站点通常都是不同的数据库,我们只想部署一个 API。从索赔的角度来看,我很挣扎。

每个客户端都在启动时实现 AddAuthentication().AddOAuth2Introspection() 以配置自省,但我看不到如何自定义调用,以便将站点添加到请求中并可供身份服务器中的 IProfileService 使用。

我不能在登录时包含该站点,因为用户可以通过 UI 或通过 API 调用随意在站点之间切换,因此我需要能够以某种方式将额外数据传递给 ProfileService 并在那里自定义声明。

值得一提的是,为简单起见,我只提到了站点。实际上,我需要传递其他信息来获取所需的索赔数据——我只是将其排除在这个问题之外,希望能有所帮助。有人知道我该怎么做吗?

标签: asp.net-coreidentityserver4asp.net-core-identity

解决方案


推荐阅读