使用WIF,audienceUris和realm有啥区别?

Posted

技术标签:

【中文标题】使用WIF,audienceUris和realm有啥区别?【英文标题】:Using WIF, what is the difference between audienceUris and realm?使用WIF,audienceUris和realm有什么区别? 【发布时间】:2012-07-31 11:52:44 【问题描述】:

我们有一个使用 WIF 的 ASP.NET 应用程序。我们的 web.config 文件有这样的部分:

<audienceUris>
    <add value="https://someapp.mycompany.com/App/" />
</audienceUris>
<federatedAuthentication>
    <wsFederation passiveRedirectEnabled="true" issuer="https://adfs.mycompany.com/adfs/ls/" realm="https://someapp.mycompany.com/App/" requireHttps="true" />
    <cookieHandler requireSsl="false" />
</federatedAuthentication>

我看到的每个示例 audienceUrisrealm 都是相同的值。这两者有什么区别?我们两个都需要吗?

【问题讨论】:

【参考方案1】:

realm 是应用程序的唯一标识符——登录时发送到 STS 的身份。但是,audienceUris 元素用于限制哪些应用程序将接受令牌。

例如,用户可以登录并从不同的依赖方接收他们的令牌,然后导航到您的应用程序。如果该应用程序的领域列在audienceUris 中,则令牌将被接受并且他们可以访问该站点(假设该应用程序也可以读取 cookie)。

如果您将令牌视为护照,这就像说英国将允许持有美国或英国护照的人入境。

在回答您的问题时,您应该同时包含它们,但它们可以相同。

【讨论】:

谢谢,这确实有帮助。问这个问题的原因之一是我们想知道是否/如何可以直接连接到场中的服务器。因此,如果应用程序位于农场中,那么 AudienceUris 和 Realm 将是农场的 URL。但是,如果我们想直接连接到农场中的一台机器怎么办?这可能吗? 领域并不是真正的 URL。它只是一个标识符。它可以是 iloveadfsandidontcare.com 或任何 URI,只要它对您的 STS 是唯一的。终结点的实际 URL 在 AD FS 中定义,它定义了登录响应的发送位置。因此,如果您想直接访问服务器场中的特定 URL,您可以在 AD FS 中进行配置。 如果我将 web.config 中的领域更改为您拥有的 URI 并且保持 AudienceUris 相同(我的应用程序的实际 URL),我会收到一条错误消息,指出两者必须匹配。 (AudienceUriValidationFailedException:ID1038:AudienceRestrictionCondition 无效,因为指定的 Audience 不在 AudienceUris 中。)所以看起来它们都是必需的,而且它们都必须相同。 对,您的领域必须在受众列表中(排除您自己的依赖方没有意义),但该列表还可以包括其他人。 我有 localhost/ApplicationA 和 localhost/ApplicationB 项目。那么我是否可以在 AudienceUris 中添加两个 url ...?我的领域是 localhost/ApplicationA.... 这是我的帖子:***.com/q/17739147/1343516

以上是关于使用WIF,audienceUris和realm有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

报告服务 LocalReport 和 WIF

WIF(使用 Thinktecture Identity Server)和双工 WCF 通道

使用 WIF 令牌保护的 WCF 服务需要公共方法

有啥方法可以在 WIF 4.5 上支持 JWTSecurityTokenHandler 吗?

在 MVC 的 Idp 发起的 SSO 环境中使用 WIF

带有 WIF 4.5 的 WCF 数据服务;没有为 POST 请求设置主体