2016-03-30 71 views
9

我的配置有3個站點:Identity Server(Idp),Windows身份驗證主機和我的最終用戶客戶端站點。在客戶端上,我請求一個用[Authorize]和Identity Server進行裝飾的控制器。IDX10803:無法創建以獲取配置

端口44305的Windows主機顯然引發異常,身份服務器正在接收狀態500.我可以訪問Windows主機站點網址沒有任何問題。我找回一個XML文檔

我該如何調試並找出哪些異常或錯誤是停止此認證過程?我得到的最內層爲以下

InvalidOperationException: IDX10803: Unable to create to obtain configuration from: 'https://localhost:44305/'. 

Microsoft.IdentityModel.Protocols.ConfigurationManager`1.<GetConfigurationAsync>d__3.MoveNext() in ConfigurationManager.cs 

Windows主機OWIN啓動3部分異常使用UseWindowsAuthenticationService

身份服務器OWIN使用AuthenticationOptions = WsFederationAuthenticationOptions

var wsFederationOptions = new WsFederationAuthenticationOptions 
      { 
       AuthenticationType = "windows", 
       Caption = "Windows", 
       SignInAsAuthenticationType = signInAsType, 
       MetadataAddress = "https://localhost:44305/", 
       Wtrealm = "urn:idsrv3" 
      }; 
      app.UseWsFederationAuthentication(wsFederationOptions); 
     } 

這裏有請求和迴應

Request URL:https://localhost:44315/ 
Request Method:GET 
Status Code:302 Found 
Response:Location:https://localhost:16433/connect/authorize?client_id=hms2015&redirect_uri=... 

Request: https://localhost:16433/connect/authorize?client_id=hms2015&redirect_uri=... 
Request Method:GET 
Status Code:302 Found 
Location:https://localhost:16433/login?signin=fde7508a6634698847c3076c9028604b 

Request URL:https://localhost:16433/login?signin=fde7508a6634698847c3076c9028604b 
Request Method:GET 
Status Code:500 Internal Server Error 

我沒有可見的SSL問題。通過我的瀏覽器,我可以在不發出任何警告的情況下打開來自不同站點的所有頁面我將我的本地IIS Express證書添加到受信任的根證書。

回答

1

團隊中的另一位開發人員幫助找到問題。運行在端口44305的Windows身份驗證主機禁用匿名。啓用此功能後,重定向的過程再次開始工作。

遺憾的是,我們並沒有真正檢測到錯誤,但是,通過試驗&錯誤(黑客攻擊)它被修復了。我的主要問題是如何調試一個OWIN應用程序,以便我可以看到HTTP 500的細節。我希望IdentityServer3日誌可以記錄來自Win Auth主機的響應。此外,爲什麼不是401響應代碼?

4

從我的記憶中,這個錯誤主要是由於證書信任/網絡訪問問題引起的。由於您正在運行本地主機中的所有組件,因此絕對不是網絡問題。 我假設你從VS開發環境運行。

幾件事情:

  • 嘗試託管組件在IIS服務器
  • 而不是使用本地主機,爲您的主機的自簽名證書,並嘗試爲主題名稱指定主機名(請注意 - 用於簽名和主機SSL自簽名證書)

而且idsrv3test證書,將權限分配給讀該證書在此描述https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Certificates

如果您仍然遇到此問題,請嘗試通過Wireshark監控流量(在此情況下,提琴手不起作用)

+0

Karthik,我會喜歡瞭解更多關於監控流量的信息。如果您想分享您發現有助於瞭解監控的網頁,我將非常感激。請分享。 – MADCookie

+1

@ MADCookie-我假設你在WireShark流量監控之後。這個鏈接給WireShark http://www.troyhunt.com/2013/04/the-beginners-guide-to-breaking-website.html(在部分 - 數據包捕獲下) – Karthik

1

出於測試目的,我在下面的代碼塊中添加了下面的塊作爲第一件中間件。無論何時發生,這都會實際記錄該異常。這讓我看到我的500實際上是401。

 appBuilder.Use(async (context, next) => 
     { 
      try 
      { 
       await next(); 
      } 
      catch(Exception ex) 
      { 
       Log.Error(ex, "OWIN error."); 
      } 

     }); 
7

我有同樣的問題 - 看起來SSL證書是不可信的。爲解決此問題,我將「本地主機」IIS Express Cert從個人CertStore移至受信任的根證書頒發機構,問題消失了。

Cert

0

這可能是因爲代理認證的爲好。嘗試檢查login.microsoftonline.com:XXX調用的提琴手流量,看看它是否返回了407錯誤代碼。

如果你看到407錯誤代碼,您需要啓用在web.config中

6

代理身份驗證我有這個問題,並信任證書作爲每Robert Muehsig answer需要。

但是這本身是不夠的。 我正在使用承載令牌認證。進一步的挖掘顯示,我需要將DelayLoadMetadata標誌設置爲true。

所以在我的Web API啓動:

app.UseIdentityServerBearerTokenAuthentication(
    new IdentityServerBearerTokenAuthenticationOptions 
{ 
    DelayLoadMetadata=true 
}); 

這一點,它開始工作的證書信任變更後。我知道這是不是原來的問題相同的配置,但在我的搜索,我不斷遇到這個帖子,所以想到我把這裏給其他誰絆倒它的人...

+1

非常簡短的介紹謝謝你張貼這個答案。像魅力一樣工作。 – daudihus

相關問題