Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何使用IdentityServer4验证x509签名凭据_Asp.net Core_Oauth_Oauth 2.0_Identityserver4 - Fatal编程技术网

Asp.net core 如何使用IdentityServer4验证x509签名凭据

Asp.net core 如何使用IdentityServer4验证x509签名凭据,asp.net-core,oauth,oauth-2.0,identityserver4,Asp.net Core,Oauth,Oauth 2.0,Identityserver4,我有两个.Net核心API—一个使用IdentityServer4发布JWT标识令牌的授权服务器,以及一个受保护并需要该令牌的资源API 身份验证服务器正在使用自签名的x509证书(目前) 在auth服务器中,我在ConfigureServices中有类似的内容: var certificate = new X509Certificate2(//path.to.my.certificate//); services.AddIdentityServer().AddSigningCredential

我有两个.Net核心API—一个使用IdentityServer4发布JWT标识令牌的授权服务器,以及一个受保护并需要该令牌的资源API

身份验证服务器正在使用自签名的x509证书(目前)

在auth服务器中,我在
ConfigureServices
中有类似的内容:

var certificate = new X509Certificate2(//path.to.my.certificate//);
services.AddIdentityServer().AddSigningCredential(certificate)
但我对资源API如何验证签名凭据的理解并不清楚

我在
ConfigureServices
中为资源API提供的全部功能是:

services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
                    .AddIdentityServerAuthentication(
                    options =>
                    {
                        options.Authority = "//MyAuthAPI";
                    });
资源API是否应该使用相同的证书来验证JWT令牌?有必要吗


如果是这样的话,应该怎么做?

基本上,ASP.Net核心中间件从
https://{yourDomain}/.著名的/openid配置
下载身份提供者配置,这是您的
选项。权限
uri。如果您实际导航到一个子url
https://{yourDomain}/.well-known/openid-configuration/jwks
,您还将看到标识提供程序发布了它用于签名令牌的公钥

通过获取公钥,中间件能够使用api请求中包含的头(
Authorize:Bearer{token}
),使用常规非对称加密验证方法验证令牌是否确实由预期的授权uri发出