如何在 .Net Core 3.1 中的 OpenId 連接時禁用 ssl 證書驗證?
我正在嘗試在開發環境中使用其 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; });