1

我目前有一个分布式系统,其中包含充当 SSO 服务器的 OpenID Connect 服务器 (IdentityServer3)。使用 SSO 服务器的客户端是带有 WebAPI v2 后端的 AngularJS SPA:s。

我得到了基本的登录流程,但我需要一些帮助来配置 WebAPI/OWIN 管道以允许转换收到的令牌声明,即。删除不必要的声明并添加本地声明。我假设我需要创建一个本地 JWT,而不是使用从 SSO 服务器接收到的 JWT。

问题是,这样做的最佳方法是什么?是否有可以帮助解决此问题的 OWIN 中间件,或者我是否需要从 SSO 服务器收到的声明中“手动”生成新的本地签名 JWT?

当前实施细节:

  1. AngularJS SPA 使用授权代码流对 SSO 服务器进行身份验证并接收授权代码。
  2. SPA 将授权代码发布到 WebAPI。
  3. WebAPI 使用 OAuth2Client 类(Thinktecture.IdentityModel.Clients 的一部分)接收授权代码并从 SSO 服务器请求 AccessToken/JWT。此 AccessToken 将返回给 SPA,以用于对 WebAPI 进行的任何进一步请求。

所以我的问题主要与第 3 步有关。如何最好地更改我的当前流程以生成一个也包含本地声明的令牌?

此外,您建议的解决方案(JwtBearerAuthentication、OpenIdConnectAuthentication 或 OAuthBearerAuthentication)应该使用哪种身份验证中间件?

为我可能混淆的术语使用道歉,我是 OAuth 的初学者,尤其是 OWIN 管道。:)

4

1 回答 1

0
  1. 您的 WebApi 应该使用 BearerTokenAuthentication。
  2. 要在单个调用中获取访问令牌 (access_token) 和声明 (id_token),您需要将响应类型设置为 ResponseType="token id_token"
  3. 您可以在IdentityServer3 Samples签出各种准备运行的示例。具体检查隐式流示例。
于 2015-05-20T12:02:12.090 回答