Oauth 2.0 使用具有对称签名密钥的Microsoft Jwt处理程序使用Oauth 2资源所有者流

Oauth 2.0 使用具有对称签名密钥的Microsoft Jwt处理程序使用Oauth 2资源所有者流,oauth-2.0,wif,jwt,thinktecture-ident-server,thinktecture-ident-model,Oauth 2.0,Wif,Jwt,Thinktecture Ident Server,Thinktecture Ident Model,我正在尝试使用OAuth2资源所有者流来针对我的Web Api服务授权移动客户端。我正在使用Thinktecture IdentityServer向jwt令牌颁发对称签名密钥 在客户端,我使用Thinktecture IdentityModel帮助设置令牌验证。我的WebApiConfig如下所示: var jwtSecurityTokenHandler=new jwtSecurityTokenHandler(); var映射=新身份验证选项映射 { //在哪里查找凭据 选项=Authentic

我正在尝试使用OAuth2资源所有者流来针对我的Web Api服务授权移动客户端。我正在使用Thinktecture IdentityServer向jwt令牌颁发对称签名密钥

在客户端,我使用Thinktecture IdentityModel帮助设置令牌验证。我的WebApiConfig如下所示:

var jwtSecurityTokenHandler=new jwtSecurityTokenHandler();
var映射=新身份验证选项映射
{
//在哪里查找凭据
选项=AuthenticationOptions.ForAuthorizationHeader(“承载者”),
//如何验证它们
TokenHandler=new SecurityTokenHandlerCollection{jwtSecurityTokenHandler},
//如果不成功,将返回哪个提示
Scheme=AuthenticationScheme.SchemeOnly(“承载人”)
};
var authConfig=newauthenticationconfiguration(){RequireSsl=false};
authConfig.AddMapping(映射);
添加(新的AuthenticationHandler(authConfig));
在我的IdentityModel.config中,我有以下内容:


我通过这个堆栈溢出帖子找到了:

我试图使用在那篇文章中找到的派生类,但是当我试图运行这一行时:

var解析器=(NamedKeyIssuerTokenResolver)this.Configuration.IssuerTokenResolver;
我得到一个InvalidCastException,因为IssuerTokenResolver是X509CertificateStorResolver类型,而不是名为KeyIssuerTokenResolver的类型


看来我的配置或代码中仍然缺少一些东西来配置正确的令牌解析器。有人有什么想法吗?

为什么不使用我的jwt配置扩展方法?@leastprivilege老实说,因为我不知道这些方法。我现在正看着他们,他们可能会帮上大忙。我确实通过切换到x509证书而不是对称签名密钥并对JwtSecurityTokenHandler类进行子分类来正确设置TokenValidationParameters,从而使jwt处理程序正常工作。我将考虑使用您的方法来进一步完善我的解决方案。谢谢