从OpenID服务器

时间:2015-05-20 08:15:06

标签: asp.net-web-api openid owin jwt identityserver3

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

我的基本登录流程正常工作,但我需要一些帮助来配置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执行的任何进一步请求。
  4. 所以我的问题主要与第3步有关。如何最好地改变我的当前流量以生成包含本地声明的令牌?

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

    为我可能混淆的术语用法道歉,我是OAuth的初学者,特别是OWIN管道。 :)

1 个答案:

答案 0 :(得分:0)

  1. 您的WebApi应使用BearerTokenAuthentication。
  2. 要在单个调用中获取访问令牌(access_token)和声明(id_token),您需要将响应类型设置为ResponseType =“token id_token”
  3. 您可以在http://github.com/less/less.js/issues/2322#issuecomment-65631343结帐各种准备运行的样本。特别是checkout隐式流程样本。