我有一个设置了 WS-Federation 身份提供程序的 ACS 名称空间。由于我使用的是 Visual Studio 2012,因此我使用了身份和访问工具来创建依赖方。该工具使用领域并返回我在创建依赖方时提供的 url 值(我使用部署项目的 Azure 云服务 url - 即http://myapp.cloudapp.net)。运行该工具后,我的依赖方的规则组中只有一条规则 - 通过 [依赖方] 的所有声明。我只用那一条规则测试了我的应用程序的 ACS,并且还在为 WS-Federation 身份提供者生成了所有规则之后。
无论规则组中的规则如何,我的问题标题中都会出现错误。我的浏览器被重定向到 ACS,但是由于某种原因它找不到正确的依赖方。我在两个不同的 Azure 帐户中创建了一个 ACS 命名空间、身份提供者和依赖方,结果完全相同。
我还尝试使用 http 和 https 端点将我的项目发布到 Azure 云服务,并且两个端点产生相同的结果。
WS-Federation 身份提供者的联合元数据来自 Windows Azure Active Directory。
更新 web.config 中的 FederationConfiguration 部分:
<federationConfiguration>
<cookieHandler requireSsl="false" />
<wsFederation passiveRedirectEnabled="true" issuer="https://[MyNamespace].accesscontrol.windows.net/v2/wsfederation" realm="http://[MyApp].cloudapp.net/" requireHttps="false" />
</federationConfiguration>
更新2:仍然没有解决方案。看起来问题源于我设置了自己的 ACS 身份提供程序,并从 Windows Azure Active Directory (WAAD) 为该身份提供程序下载了联合元数据。这基本上将 2 个 ACS 实例链接在一起。当我的应用重定向到我的 ACS 时,它会将我的应用的 url 作为领域传递。然后,我的 ACS 重定向到身份提供者 WAAD,并将其自己的 url 作为领域传递。这就是为什么我返回的错误具有依赖方标识符的奇怪特征 = 我自己的 ACS 管理门户的 url。我不确定为什么它没有从我的应用程序一直传递到 WAAD。