使用OpenId Connect

时间:2016-02-16 12:20:15

标签: certificate jwt openid-connect identityserver3

我试图了解我的Owin托管的Web Api是否需要验证用于签署JWT令牌的证书。

我已使用IdentityServer设置了身份提供商。在"依赖方" -side,我有一个使用Owin托管的ASP.NET WebApi。在RP端,我使用UseOpenIdConnectAuthentication在Owin管道中安装OpenIdConnectAuthenticationMiddleware。

到目前为止工作的是什么:

  1. 访问我的网络应用程序的任何未经身份验证的用户都会被重定向到IdentityServer上的登录页面
  2. 用户登录
  3. 用户被重定向回我的网络应用
  4. 我的网络应用收到包含ID令牌和访问令牌的JWT
  5. 我的网络应用程序调用用户信息端点以使用访问令牌检索声明
  6. 我缺少的是验证用于签署包含身份令牌的JWT的证书的逻辑。

    使用Fiddler,我已经看到OpenIdConnectAuthenticationMiddleware从身份服务器检索密钥(通过调用https://myidentityserver.example.com/core/.well-known/jwks HTTP / 1.1)

    OpenIdConnectAuthenticationMiddleware是否对证书进行某种验证?或者我应该自己编写这段代码?

2 个答案:

答案 0 :(得分:1)

您描述的流程依赖于验证证书是从提供有效SSL服务器证书的受TLS保护的端点(JWKs URL)中提取的事实。此SSL服务器证书可确保您与正确的OpenID Connect提供商进行通信。

答案 1 :(得分:0)

找到一些解释here

为了验证引用令牌,我们提供了一个称为访问令牌验证端点的简单端点。该端点例如是我们的访问令牌验证中间件使用它,它足够聪明,可以区分自包含(JWT)和引用令牌,并在本地或使用端点进行验证。所有这一切对API都是完全透明的。

您只需指定权限(IdentityServer的基本URL),中间件将使用它来提取配置(密钥,颁发者名称等)并构建到验证端点的URL