首页 文章

使用OpenId Connect时验证签名证书

提问于
浏览
2

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

我使用IdentityServer Build 了一个身份提供者 . 在"relying party"-侧,我有一个使用Owin托管的ASP.NET WebApi . 在RP端,我正在使用UseOpenIdConnectAuthentication在Owin管道中安装OpenIdConnectAuthenticationMiddleware .

到目前为止有什么工作:

  • 访问我的Web应用程序的任何未经身份验证的用户都将重定向到IdentityServer上的登录页面

  • 用户登录

  • 用户被重定向回我的网络应用程序

  • 我的网络应用程序收到包含id令牌和访问令牌的JWT

  • 我的网络应用程序调用用户信息 endpoints 以使用访问令牌检索声明

我缺少的是验证用于签署包含身份令牌的JWT的证书的逻辑 .

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

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

2 回答

  • 1

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

  • 0

    找到了一些解释here

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

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

相关问题