![](/img/trans.png)
[英]Access to XMLHttpRequest at 'xxx/.well-known/openid-configuration' from origin 'xxxx' has been blocked by CORS
[英]Unable to obtain configuration from well-known/openid-configuration
我正在使用 ASP.NET 5,在我的解決方案中,我有 Web API、Identity Server 和 Angular 2 項目,我正在使用 Identity Server 對 Angular 2 客戶端進行身份驗證,Angular 2 客戶端通過在 http 請求和 Web api 身份驗證中傳遞令牌來使用 Web api令牌並給出響應,為此我編寫了一個自定義屬性來檢查用戶是否經過身份驗證
當我使用 API 時,出現以下異常並且 Web API 返回 500 內部服務器錯誤。
System.InvalidOperationException: IDX10803: 無法從以下位置獲取配置:“ http://xx.xx.xx.x:3926/.well-known/openid-configuration ”。 ---> System.IO.IOException: IDX10804: 無法從以下位置檢索文檔:“ http://xx.xx.xx.x:3926/.well-known/openid-configuration ”。 ---> System.AggregateException:發生一個或多個錯誤。 ---> System.Net.Http.HttpRequestException: 發送請求時出錯。 ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: 連接嘗試失敗,因為連接方在一段時間后沒有正確響應,或建立連接失敗,因為連接的主機未能在 System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) 處響應 xx.xx.xx.x:3926 在 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket、IPAddress& 地址、ConnectSocketState 狀態、IAsyncResult asyncResult、Exception& 異常)
如果 identityserver 和訪問令牌驗證中間件托管在同一應用程序中,則啟動時會出現競爭條件。
驗證中間件嘗試加載尚不可用的發現文檔。
在這些場景中,將驗證中間件上的DelayLoadMetadata
標志設置為 true。
如果完全禁用發現端點,則需要在驗證選項上配置頒發者和密鑰材料。
我使用了這樣的東西,它解決了我的問題。
services.AddAuthentication(o => {
o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddCookie(cfg => cfg.SlidingExpiration = true)
.AddJwtBearer(cfg =>
{
cfg.Audience = "http://localhost:4200/";
cfg.Authority = "http://localhost:5000/";
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
cfg.TokenValidationParameters = tokenValidationParameters;
cfg.Configuration = new OpenIdConnectConfiguration(); <-- Most IMP Part
});
此錯誤的原因是代理,並且能夠通過實現以下代碼來解決它:
options.BackchannelHttpHandler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator,
Proxy = new WebProxy(Configuration["System:Proxy"])
};
如果您收到“無法從以下位置檢索文檔:'[pii is hidden]'”,您需要在 ConfigureServices 中添加以下內容:
public void ConfigureServices(IServiceCollection services)
{
......
IdentityModelEventSource.ShowPII = true;
}
我希望這會有所幫助。
檢查您的 appsettings.json 租戶 ID,並確保您沒有意外復制超出租戶 ID 所需的數量。
我收到此錯誤消息有幾個原因。 一個是通過@leastprivilege 答案解決的。 另一個是我的身份服務器項目中的證書文件在版本控制中丟失了。 所以我只是用原件替換了損壞的文件,然后它就起作用了。
重建我的 SSO 項目解決了我的問題。 在重建項目期間也恢復了 Nuget 包。 希望這對你有幫助。
如果這對其他人有幫助。
將項目升級到 .net core 2.0 后出現此錯誤
修復。
在 appsettings.json 中更改實例的名稱而不是
“ AAD實例”:“ https://login.microsoftonline.com/ ”
使用
“實例”:“ https://login.microsoftonline.com/ ”
設法通過將應用程序池標識從“Applicationpoolidentity”更改為“內置帳戶”來解決它。 在內置帳戶服務帳戶名稱及其密碼中給出
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.