2016-03-30 47 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

相关问题