具有两个或更多域的 ADFS 2.0 + ASP.NET 开发环境中的证书错误

具有两个或更多域的 ADFS 2.0 + ASP.NET 开发环境中的证书错误

我正在尝试设置一个声明感知的 Web 应用开发环境。我是 ADFS 2.0 的新手,最终,我希望能够针对两个不同的域进行身份验证。我认为我已经非常接近了,但我从其中一个 ADFS 服务器收到证书错误。

在处理联合身份验证服务配置期间,发现元素“serviceIdentityToken”包含无效数据。无法访问已配置证书的私钥。

我在 Web 应用程序中输入凭据后,此错误记录在域 #1 上的 ADFS 服务器事件日志中。即使使用有效的凭据,我也会被转到 401 未经授权的访问页面。

运行 ADFS 服务的用户帐户具有证书​​私钥的权限,所以我不确定为什么会收到此错误。

我目前所做的:

  1. 在域#1上创建了一个服务器并安装了ADFS 2.0
  2. 在域#2上创建了一个服务器并安装了ADFS 2.0
  3. 在域 #1 上使用 VS 2010 创建了第三个开发服务器
  4. 在开发服务器上构建了一个简单的应用程序,并使其具有联邦意识(按照http://msdn.microsoft.com/en-us/library/bb897402.aspx);在 web.config 中,联合服务器设置为域 #1 上的服务器

我还没有在任何一个 ADFS 服务器上设置依赖方信任。这有必要吗?我似乎找不到任何好的文档来解释这应该如何工作。

我已经关注了这个(http://blogs.msdn.com/b/alextch/archive/2011/06/27/building-a-test-claims-aware-asp-net-application-and-integrating-it-with-adfs-2-0-security-token-service-sts.aspx) 指南进行设置,但我觉得可能存在某个我错过的简单步骤。

总结一下:

  1. 为什么我会收到上述证书错误?
  2. 我在设置 ADFS 时是否遗漏了任何步骤,以便能够针对两个域进行身份验证?(我可能遗漏了将两个 ADFS 服务器链接在一起的步骤)

在此先感谢大家的帮助。熟悉 ADFS 的人可能只需几分钟就能完成设置!

答案1

看起来您尝试做的是让开发服务器与域 1 中的 adfs 联合,然后让域 1 中的 adfs 使用声明提供方信任接受域 2 中的 adfs 的令牌。这样,只要声明规则配置正确,域 1 和域 2 中的用户就能够登录并访问开发服务器的应用。

因此,回答您的第二个问题,就是在域 1 中的 adfs 上配置声明提供者信任,以指向域 2 中的 adfs,并配置声明规则以转换/传递从域 1 中的 adfs 收到的声明。然后,域 2 中的 adfs 还需要配置依赖方信任,以指向 adfs 1,您可以在其中选择要收集和发送的声明。

至于问题 1,adfs 中的服务通信证书的私钥看起来确实无法访问。如果您将 adfs 安装为场,您将拥有一个基于域的服务帐户。如果您将其构建为独立 adfs,它将使用内置网络服务帐户。此选择决定了您如何配置证书上的权限。

您提到了 adfs 角色和 adfs 2.0,所以我不确定您是否在两台服务器上都使用 adfs 2 或使用 Windows 2008/R2 附带的内置角色。请澄清一下。

这些分步指南应该会有所帮助。

http://technet.microsoft.com/en-us/library/adfs2-federation-wif-application-step-by-step-guide(v=ws.10).aspx

有关 adfs 的所有信息,请参阅

http://social.technet.microsoft.com/wiki/contents/articles/2735.ad-fs-2-0-content-map.aspx

相关内容