.net core IdentityServer4 webapi返回401未经授权的自签名证书

.net core IdentityServer4 webapi返回401未经授权的自签名证书,.net-core,identityserver4,.net Core,Identityserver4,我是.NET核心和IdentityServer 4的新手。我开始使用IISExpress和临时签名凭据在localhost上构建应用程序。一切都很好,我能够通过资源所有者密码获得访问令牌,并调用授权的API方法 然而,当我部署到服务器(staging env)时,对于需要授权的api调用,我总是会得到一个401未经授权的消息。 在部署之前,我对本地主机进行了更改(如下所述),并对其进行了测试,结果和之前一样 将临时签名凭据更改为 services.AddIdentityServer()

我是.NET核心和IdentityServer 4的新手。我开始使用IISExpress和临时签名凭据在localhost上构建应用程序。一切都很好,我能够通过资源所有者密码获得访问令牌,并调用授权的API方法

然而,当我部署到服务器(staging env)时,对于需要授权的api调用,我总是会得到一个401未经授权的消息。 在部署之前,我对本地主机进行了更改(如下所述),并对其进行了测试,结果和之前一样

  • 将临时签名凭据更改为

    services.AddIdentityServer()
                .AddSigningCredential(new X509Certificate2(@"C:\Certs\DemoAuth.pfx"))
    
  • 根据David Smit发布的步骤创建自签名证书

    "C:\Program Files (x86)\Windows Kits\8.1\bin\x64\makecert" -n "CN=IdentityServer4Auth" -a sha256 -sv IdentityServer4Auth.pvk -r IdentityServer4Auth.cer -b 01/01/2017 -e 01/01/2025
    
    "C:\Program Files (x86)\Windows Kits\8.1\bin\x64\pvk2pfx" -pvk IdentityServer4Auth.pvk -spc IdentityServer4Auth.cer -pfx IdentityServer4Auth.pfx
    
  • 将加载用户配置文件的应用程序池设置设置为true

  • 在将load use profile设置为true之前,我还尝试了以下代码:

    services.AddIdentityServer()
                .AddSigningCredential(new X509Certificate2(@"C:\Certs\DemoAuth.pfx", "pwd-here", X509KeyStorageFlags.MachineKeySet))
    
    在部署时,有人能为我指出正确的方向吗


    提前感谢。

    确保证书位于受信任的根证书颁发机构中(即,将您的证书导入Windows证书管理器中的该位置)


    确保运行AppPool的帐户具有该证书的权限(右键单击证书并使用“所有任务”下的“管理私钥”菜单选项)。

    您要部署到哪里?蔚蓝色的你能添加日志吗?有什么错误吗?My
    cert.pfx
    与My
    Startup.cs
    位于同一文件夹中,因此您可以尝试此操作,只使用文件名而不使用path@moritzg如果.pfx路径错误,我将收到一个错误,并且将无法获得访问令牌。不过,让我来试一试。它不在云上,只是公司网络中的一个专用服务器。感谢you@moritzg刚刚尝试了你的建议,结果也一样。还有其他可能吗?嗯,好的,你能打开日志记录并编辑你的问题以包含输出吗?我猜您的服务器不信任该证书。设置SSL,以便您可以通过https://访问服务器,然后重试。@moritzg谢谢。我会尝试一下,并尽快更新。