IdentityServer4 webapi使用自签名证书返回401未授权

时间:2017-05-29 09:11:19

标签: .net-core identityserver4

我是.NET Core和IdentityServer4的新手。我开始使用IISExpress和Temporary Signing Credentials在localhost上构建应用程序。一切都很好,我可以通过资源所有者密码获取访问令牌,并调用授权的API方法。

但是,当我部署到服务器(staging env)时,我总是会因需要授权的api呼叫而获得401未授权。 在部署之前,我在我的localhost上进行了更改(如下所述)并对其进行了测试,结果与之前一样。

  1. 将临时签名凭据更改为

    services.AddIdentityServer()
                .AddSigningCredential(new X509Certificate2(@"C:\Certs\DemoAuth.pfx"))
    
  2. 根据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
    
  3. 为加载用户个人资料

  4. 设置应用程序池设置为true

    在将加载使用配置文件设置为true之前,我还尝试使用以下代码:

    services.AddIdentityServer()
                .AddSigningCredential(new X509Certificate2(@"C:\Certs\DemoAuth.pfx", "pwd-here", X509KeyStorageFlags.MachineKeySet))
    

    有人能指出我在部署时面临的问题上朝着正确的方向前进吗?

    提前致谢。

1 个答案:

答案 0 :(得分:0)

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

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