c# – UseJwtBearerAuthentication签名密钥
我正在尝试使用JwtBearerMiddleware在我的AspNetCore MVC应用程序(仅限Web API)中实现JWT承载身份验证,但我收到了带有标头的401响应:
WWW-Authenticate: Bearer error="invalid_token",error_description="The signature key was not found" Startup.cs中的相关代码如下所示: app.UseJwtBearerAuthentication(new JwtBearerOptions { Authority = "https://example.okta.com",Audience = "myClientId" }); 使用权限URL,我希望中间件从https://example.okta.com/.well-known/openid-configuration查询我的身份提供程序元数据,以获取jwks_uri,然后从https://获取签名密钥example.okta.com/oauth2/v1/keys.我不认为这种情况正在发生.我需要做些什么才能找到并使用签名密钥?谢谢 解决方法
在遵循引用并深入研究
AspNet Security repo(特别是JwtBearerHandler和JwtBearerMiddleware类)之后,这导致了我在
Azure Extensions repo中的Microsoft.IdentityModel命名空间(首先是ConfigurationManager< T>类,然后是OpenIdConnectConfigurationRetriever类(GetAsync方法),然后到JsonWebKeySet.GetSigningKeys()方法),我终于发现JwtBearerMiddleware确实从元数据中的jwks_uri获取了密钥.唷.
那为什么不工作呢?我之前应该检查的是,持票人JWT标题中的孩子实际上并不匹配jwks_uri中的任何一个孩子,因此没有找到.这是我作为持票人令牌发送的access_code.另一方面,id_token确实有一个匹配的孩子,所以使用它而不是它的工作! 我读过:
…所以我不能使用访问令牌. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |