5

我有一个设置了 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。

4

4 回答 4

4

好吧,这个问题的答案比我预期的要模糊得多——我必须对我的 CRM Online WAAD 运行以下 powershell 脚本:

Connect-MsolService
Import-Module MSOnlineExtended -Force
$replyUrl = New-MsolServicePrincipalAddresses –Address "https://lefederateur.accesscontrol.windows.net/"
New-MsolServicePrincipal –ServicePrincipalNames @(“https://lefederateur.accesscontrol.windows.net/”) -DisplayName “LeFederateur ACS Namespace” -Addresses $replyUrl

这告诉 WAAD 识别我的 ACS 命名空间,因此它不会抛出错误,指出 ACS 命名空间不是有效的依赖方标识符。在此处阅读整个过程:

http://www.cloudidentity.com/blog/2012/11/07/provisioning-a-directory-tenant-as-an-identity-provider-in-an-acs-namespace/

感谢 Azure 的支持,我现在已经克服了这个错误。

于 2013-04-17T20:28:31.853 回答
1

进入 Azure ACS 管理门户。打开信赖方应用程序,然后选择您为此应用程序配置的信赖方。确保字段“Realm”与您在 web.config 下的 Realm 完全匹配<federationConfiguration><wsFederation realm=""/>

于 2013-04-17T18:45:50.387 回答
0

您只需要在 Active Directory 中设置对 ACS 的访问权限 安装 powershell Azure Commandlets 后,运行 Andrew 提到的以下命令

连接-MsolService

Import-Module MSOnlineExtended -Force $replyUrl = New-MsolServicePrincipalAddresses –Address " https://xxx.accesscontrol.windows.net/ "

New-MsolServicePrincipal –ServicePrincipalNames @(" https://xxx.accesscontrol.windows.net/ ") -DisplayName "xxx ACS 命名空间" -Addresses $replyUrl

于 2014-04-23T22:26:37.000 回答
0

万一其他人偶然发现此问题,请在此处仔细检查您的领域代码:

wsFederation passiveRedirectEnabled="true" issuer="必须匹配端点" realm="必须匹配受众 URI" requireHttps="true"

<add key="ida:Realm" value="must match audience uri" />
<add key="ida:AudienceUri" value="must match audience uri" />

我的问题是我本能地添加到我的 URI 末尾的 / - 即https://somuri.com/ - 而门户设置是https://someuri.com

删除 / 工作。

于 2014-04-29T11:47:55.933 回答