使用ADFS On-Premises Organizational Auth和Visual Studio 2013 localhost开发的MVC5 Web应用程序

时间:2014-06-23 20:43:42

标签: visual-studio-2013 localhost asp.net-mvc-5 claims-based-identity adfs2.0

我正在尝试创建一个MVC5 Web应用程序,配置为使用内部组织认证选项(ADFS),如上所述Here by Vittorio Bertocci

首先,我创建了新的MVC项目。然后我将身份验证更改为内部部署。将内部部署权限设置为我的ADFS联合元数据端点。我检查以确保可以访问联合元数据xml。我将App ID URI字段留空,接受默认值。我做了两个,提供了一个值并留空。

然后我手动配置了我的依赖方应用。将依赖方WS-Federation Passive Protocol URL设置为Visual Studio提供的https://localhost:44300。此值是作为信任标识符给出的唯一值。

最后,我为好的衡量标准绘制了2种索赔类型;显示名称和用户主体名称。所有这些都是由示例链接提供的。

然后我运行(F5)ADFS登录弹出一般错误。我转到ADFS服务器并找到以下详细错误。

发展环境 我有3台服务器和1台客户端

  • 1域控制器
  • 1个CA服务器
  • 1 ADFS
  • 1 windows 8 client。

我一直在从ADFS

中收到以下错误消息
Encountered error during federation passive request. 

Additional Data 

Protocol Name: 
wsfed 

Relying Party: 
https://localhost:44300/ 

Exception details: 
Microsoft.IdentityServer.Web.InvalidScopeException: MSIS7007: The requested relying party trust 'https://localhost:44300/' is unspecified or unsupported. If a relying party trust was specified, it is possible that you do not have permission to access the trust relying party. Contact your administrator for details.
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationSignInContext.Validate()
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.GetRequiredPipelineBehaviors(ProtocolContext pContext)
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)

感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

如维托里奥的第一个回复中所提到的,您的应用程序发送的依赖方标识符似乎与ADFS中注册的标识符不匹配。这不应该需要新的vanilla ADFS设置。我建议如下:

  1. 确保您在ADFS中为该应用程序设置了信赖方信任。
  2. 确保应用程序的标识符与您在应用程序中指定的标识符一致,如您在Vittorio博客文章中所见。
  3. 确保在ADFS信赖方信任上正确设置了返回URL,并匹配应用程序的F5设置。您可以在Vittorio的博客文章中看到一个屏幕截图。
  4. 让我知道这是否适合您。

    - 萨姆

答案 1 :(得分:1)

您似乎使用https://localhost:44300定义了您的RP信任,但事实上您正在发送https://localhost:44300**/**。尾部斜线对于这种比较很重要! :-)我建议每个领域使用一个逻辑标识符,或在RP信任中添加尾部斜杠。 HTH 诉