将.Net Core Web API从http转换为https后,无法使用IdentityServer验证请求

3
我有一个 IdentityServer 3 应用程序,负责身份验证/授权和令牌验证。我们有一个 .net core 3.0 web api,通过来自前端 Angular js 应用程序的请求处理用户和角色管理功能。在 http 环境下一切都正常工作。当我们开始使用自签名证书并将所有这些应用程序(IdentityServer3、.Net Core 应用程序(与 IdentityServer 进行用户标识相关和令牌验证相关的通信)和 Angular js)转移到 IIS 上的 HTTPS 后,我们开始遇到问题。Identityserver3 帮助用户进行身份验证,但之后当 UI(angular 应用程序)尝试向 .net core 应用程序发送 GET 请求以获取已登录用户详细信息时,出现问题。该 .net core 应用程序与 IdentityServer 对每个 web api 请求进行通信以验证令牌,但它会产生 404 错误。以下是日志中的错误信息。
04/16/2020 14:15:59.335 -04:00 [错误] IDX20803: 无法从 '[PII已隐藏。有关详细信息,请参见https://aka.ms/IdentityModel/PII.]' 获取配置。 System.InvalidOperationException: IDX20803: 无法从 '[PII已隐藏。有关详细信息,请参见https://aka.ms/IdentityModel/PII.]' 获取配置。 ---> System.IO.IOException: IDX20804: 无法从 '[PII已隐藏。有关详细信息,请参见https://aka.ms/IdentityModel/PII.]' 检索文档。 ---> System.Net.Http.HttpRequestException: SSL 连接无法建立,请参见内部异常。 ---> System.Security.Authentication.AuthenticationException: 根据验证过程,远程证书无效。 at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) ... 04/16/2020 14:15:59.336 -04:00 [信息]“Bearer”未经过身份验证。失败信息:“IDX20803:无法从 '[PII已隐藏。有关详细信息,请参见https://aka.ms/IdentityModel/PII.]' 获取配置。” 04/16/2020 14:15:59.338 -04:00 [信息]“Bearer”未经过身份验证。失败信息:“IDX20803:无法从 '[PII已隐藏。有关详细信息,请参见https://aka.ms/IdentityModel/PII.]' 获取配置。”

你的IdentityServer有合适的可信任TSL证书吗? - Tore Nestenius
1个回答

1
我访问URL https://[yourserver]/.well-known/openid-configuration 获取OpenId配置时出现了错误。
  1. 检查您的https证书是否有效。
  2. 检查您的https证书是否被API服务器信任(如果是自签名证书,请使用自定义CA生成并信任此CA到您的API服务器)
  3. 使用CURL检查容器/服务器与身份验证服务器之间的流量是否允许。在我的情况下,CentOS防火墙阻止了我的容器与公共接口之间的流量。我通过创建适当的防火墙规则来解决了这个问题。
最好的测试方法是:尝试使用命令行工具“curl”从您的API服务器或容器获取HTTPS身份验证服务器URL。您不会收到任何错误(证书、证书服务器名称)。

我正在使用自签名证书。我应该怎么做才能“使用自定义CA”? - Blaise
您可以将自己生成的证书添加到受信任的证书中。如果您使用的是Windows,您可以将其添加到机器证书上的受信任证书中。如果您使用的是Linux或Docker,则可以将证书添加到受信任的证书文件夹中并运行update-ca-certificates命令。我将此操作放入了我的Dockerfile中。 参考链接:https://unix.stackexchange.com/questions/90450/adding-a-self-signed-certificate-to-the-trusted-list - Guergolet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接