。Net Core Web API从http转换为https后无法通过IdentityServer验证请求

问题描述 投票:0回答:1

我有一个IdentityServer 3应用程序,负责身份验证/授权和令牌验证。我们有一个.net core 3.0 Web API,它通过前端的Angular js应用程序发出的请求来处理用户和角色管理功能。在http世界中一切正常。一旦我们开始使用自签名证书并将所有这些应用程序(IdentityServer3,.Net Core应用程序(与IdentityServer进行用户身份相关和令牌验证相关的事情)和角度js)都转换为IIS上的HTTPS。我们开始看到一个问题,Identityserver3可以帮助用户进行身份验证,但是稍后,当UI(角度应用程序)尝试向.net核心应用程序发送GET请求时,该.net核心应用程序通常无法登录,因此用户详细信息不起作用。对于每个Web api请求,应用程序都会与IdentityServer进行对话以验证令牌,它会显示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:根据验证过程,远程证书无效。在System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken消息,AsyncProtocolRequest asyncRequest,ExceptionDispatchInfo异常)在System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.StartSendBlob(Byte []入站,Int32计数,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.StartReadFrame(Byte [] buffer,Int32 readBytes,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.StartReceiveBlob(Byte [] buffer,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.StartSendBlob(Byte []入站,Int32计数,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.StartReadFrame(Byte [] buffer,Int32 readBytes,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.StartReceiveBlob(Byte [] buffer,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.StartSendBlob(Byte []入站,Int32计数,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.ProcessReceivedBlob(Byte [] buffer,Int32 count,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.StartReadFrame(Byte [] buffer,Int32 readBytes,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest)---从之前引发异常的位置开始的堆栈结束跟踪---在System.Net.Security.SslStream.ThrowIfExceptional()在System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)在System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult结果)在System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)在System.Net.Security.SslStream。<> c.b__65_1(IAsyncResult iar)在System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction,Action1 endAction, Task1 Promise,布尔值requireSynchronization处)---从之前引发异常的位置开始的堆栈结束跟踪---在System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream,SslClientAuthenticationOptions sslOptions,CancellationToken cancelledToken)---内部异常堆栈跟踪的结尾---在System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream,SslClientAuthenticationOptions sslOptions,CancellationToken cancelledToken)在System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage请求,布尔allowHttp2,CancellationToken cancelledToken)在System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage请求,CancellationToken cancelToken)在System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage请求,CancellationToken cancelToken)在System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage请求,布尔值doRequestAuth,CancellationToken cancelledToken)在System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage请求,CancellationToken cancelToken)在System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage请求,CancellationToken cancelToken)在System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel) --- End of inner exception stack trace --- at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel) at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.GetAsync(String address, IDocumentRetriever retriever, CancellationToken cancel) at Microsoft.IdentityModel.Protocols.ConfigurationManager1.GetConfigurationAsync(CancellationToken cancel)---内部异常堆栈跟踪的结尾---在Microsoft.IdentityModel.Protocols.ConfigurationManager1.GetConfigurationAsync(CancellationToken cancel) at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync() at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync() at Microsoft.AspNetCore.Authentication.AuthenticationHandler1.AuthenticateAsync()在Microsoft.AspNetCore.Authentication.AuthenticationService.AuthenticateAsync(HttpContext上下文,字符串方案)在IdentityServer4.AccessTokenValidation.IdentityServerAuthenticationHandler.HandleAuthenticateAsync()处04/16/2020 14:15:59.336 -04:00 [信息]未验证“承载者”。失败消息:“ IDX20803:无法从以下位置获取配置:'[PII被隐藏。有关更多详细信息,请参见https://aka.ms/IdentityModel/PII.]'。”04/16/2020 14:15:59.338 -04:00 [信息]未验证“承载者”。失败消息:“ IDX20803:无法从以下位置获取配置:'[PII被隐藏。有关更多详细信息,请参见https://aka.ms/IdentityModel/PII.]'。”

asp.net-core identityserver4 identityserver3
1个回答
0
投票

访问URL:https://[yourserver]/.well-known/openid-configuration以获取OpenId配置时,出现此错误。

  1. 检查您的https证书是否有效。
  2. 检查您的https证书是否被您的API服务器信任(如果它是自签名证书,请使用自定义CA生成并信任此CA到您的API服务器)
  3. [使用CURL检查,是否允许容器/服务器和身份服务器之间的通信。就我而言,我遇到的情况是CentOS防火墙阻止了容器之间到我的公共接口的通信。我解决了为此流量创建适当的防火墙规则的问题。

最好的测试方法是:尝试使用命令行工具:“ curl”从API Server或容器中获取HTTPS身份服务器URL。您不会收到任何错误(证书,证书服务器名称)。

© www.soinside.com 2019 - 2024. All rights reserved.