Asp.net-Core

如何在 .Net Core 3.1 中的 OpenId 連接時禁用 ssl 證書驗證?

  • July 23, 2020

我正在嘗試在開發環境中使用其 ip 地址連接到開放 id 授權。顯然,在這種情況下,ssl 驗證將失敗。我想繞過它,到目前為止沒有任何運氣。我找到了有關此主題的以下答案:

  • 在 OpenIdConnectOptions 類中將 RequireHttpsMetadata 設置為 false。
  • 使用下面的程式碼:

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

當我的應用程序嘗試訪問 oidc 權限時,我收到相同的錯誤:

處理請求時發生未處理的異常。AuthenticationException:根據驗證程序,遠端證書無效。System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken 消息,AsyncProtocolRequest asyncRequest,ExceptionDispatchInfo 異常)

HttpRequestException:無法建立 SSL 連接,請參閱內部異常。System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(流流,SslClientAuthenticationOptions sslOptions,CancellationToken cancelToken)

IOException:IDX20804:無法從以下位置檢索文件:“https://172.11.0.11:1111/MY_APP/.well-known/openid-configuration”。Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(字元串地址,CancellationToken 取消)

InvalidOperationException:IDX20803:無法從以下位置獲取配置:“https://172.11.0.11:1111/MY_APP/.well-known/openid-configuration”。Microsoft.IdentityModel.Protocols.ConfigurationManager.GetConfigurationAsync(CancellationToken 取消)

警告:僅在開發過程中使用它。如果合適,您需要為您的生產平台定制證書驗證常式。

您可能覆蓋了錯誤的 HttpClientHandler。OpenId Connect 的反向通道 HttpClient 可以在此處被覆蓋:

services
   .AddAuthentication(options =>
   {
       ...
   })
   .AddCookie()
   .AddOpenIdConnect(options =>
   {
       ...
       HttpClientHandler handler = new HttpClientHandler();
       handler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
       options.BackchannelHttpHandler = handler;
   });

引用自:https://stackoverflow.com/questions/62990470