我目前有一个分布式系统,其中包含充当 SSO 服务器的 OpenID Connect 服务器 (IdentityServer3)。使用 SSO 服务器的客户端是带有 WebAPI v2 后端的 AngularJS SPA:s。
我得到了基本的登录流程,但我需要一些帮助来配置 WebAPI/OWIN 管道以允许转换收到的令牌声明,即。删除不必要的声明并添加本地声明。我假设我需要创建一个本地 JWT,而不是使用从 SSO 服务器接收到的 JWT。
问题是,这样做的最佳方法是什么?是否有可以帮助解决此问题的 OWIN 中间件,或者我是否需要从 SSO 服务器收到的声明中“手动”生成新的本地签名 JWT?
当前实施细节:
- AngularJS SPA 使用授权代码流对 SSO 服务器进行身份验证并接收授权代码。
- SPA 将授权代码发布到 WebAPI。
- WebAPI 使用 OAuth2Client 类(Thinktecture.IdentityModel.Clients 的一部分)接收授权代码并从 SSO 服务器请求 AccessToken/JWT。此 AccessToken 将返回给 SPA,以用于对 WebAPI 进行的任何进一步请求。
所以我的问题主要与第 3 步有关。如何最好地更改我的当前流程以生成一个也包含本地声明的令牌?
此外,您建议的解决方案(JwtBearerAuthentication、OpenIdConnectAuthentication 或 OAuthBearerAuthentication)应该使用哪种身份验证中间件?
为我可能混淆的术语使用道歉,我是 OAuth 的初学者,尤其是 OWIN 管道。:)