目前,我们正在使用外部oAuth提供程序进行身份验证,它是一个SSO,因此用户可以使用相同的令牌登录到我们的postrtal和组织内的其他postrtal。问题是我们的postrtal有一些特定的声明,如userId等(特定于我们的应用程序)。我们希望这些信息也包含在令牌中,因为我们的oAuth证明程序不允许。有没有其他干净的方法来解决这个问题?
一些解决方案是
- API端,我们可以检查sub,并通过每次请求进入我们的端点时阅读DB来Map到我们自己的ID
- 缓存令牌并获取值
caceh不是一个好主意,每次从DB阅读也不是一个好主意。有什么建议可以解决这个问题吗?
1条答案
按热度按时间z9smfwbn1#
授权服务器应该能够在令牌发行时查找自定义声明,例如通过调用您提供的API端点。如果你不能做到这一点,我会质疑你选择的授权服务器。
另一种方法是验证JWT,读取其声明,然后在生成ClaimsPrincipal之前查找额外的声明,然后缓存额外的声明。这是一个不太安全的设计,所以只有在你必须使用它。举个例子,看看我的代码。