【问题标题】:Host name issue with WSFederated AuthenticationWSFederated Authentication 的主机名问题
【发布时间】:2015-06-21 18:52:21
【问题描述】:

我已经使用我的 Web 应用程序(托管在 IIS 7 中,主机名为 www.abc.com)配置了本地 STS,它可以接收来自 STS 的声明并可以登录。现在,我在我的 Web 应用程序中添加了另一个主机名 (www.xyz.com)。如果用户使用www.abc.com/page1 登录到应用程序中的页面,它会重定向到本地 STS,它会验证用户身份并添加安全令牌。现在,如果用户访问www.xyz.com/page2,它也会重定向到 STS 进行身份验证。

如果用户登录www.abc.comwww.xyz.com,他们需要在未登录的情况下访问其他域页面。是否可以?我们如何做到这一点?

【问题讨论】:

  • 请添加一些有关您使用的技术的详细信息。理想情况下,您尝试了一些示例代码。
  • 我正在使用 asp.net 4.5 网站并托管在 IIS 7 中。我正在使用 WSFederatedAuthenticationModule 重定向到身份提供程序进行身份验证,我可以收到声明。当我的网站只有一个主机名时,它工作正常。当我添加另一个主机名时,它会重定向到身份提供者登录页面。如果用户已经使用域 A 登录,并且如果他们访问域 B 中的页面,则不应再次输入登录信息。有没有可能实现。

标签: federated-identity


【解决方案1】:

概括地说,如果您有两个不同的依赖方,则每个依赖方都需要将用户路由到 IDP。如果 IDP 配置为单点登录,用户只会在第一时间注意到到 IDP 的路由。在第二个路由中,(假设相同的浏览器会话并且路由在 IDP 支持的生命周期内)用户将通过身份验证,而不会在 IDP 上看到页面并且需要提供凭据。

因此,您的部分答案取决于您所说的登录:如果您的意思是通过登录“体验挑战并输入凭据”,您应该能够通过简单地确保 IDP 配置为单点登录来启用此功能开。

另一方面,如果登录是指重定向到 IDP,那么您需要确保应用程序能够在不同的页面名称之间共享状态。请注意,通常的状态管理是通过 cookie 进行的,并注意 abc.com 的 cookie 不会返回到名为 xyz.com 的网页。有许多聪明的方法可以解决这个问题,尽管我不知道有任何简单的应用程序配置解决方案。一个示例是通过 url shared.com 访问 abc.com 页面和 xyz.com 页面的某些部分。然后,状态 cookie 可以在登录 abc.com 时由 shared.com 事务设置,并在随后访问 xyz.com 时由 shared.com 事务读取。

我从来没有实施过这样的跨域 cookie 解决方案,并且只是与同事就它进行了非正式的对话:我们总是发现单点登录的静默重定向可以满足我们的要求。在开发之前,应仔细研究此类解决方案对隐私的影响以及此类 cookie 可能被阻止的可能性。

【讨论】:

  • 感谢您的回复。
  • 假设 IDP 配置了 SSO。现在 IDP 在 RP1 中写入 auth cookie(成功登录时),并在重定向到 RP2 中的页面时,WSFederatedAuthenticationModule 检查它没有找到的 auth cookie(RP1 和 RP2 位于不同的域中,因此 RP1 无法将 auth cookie 传递给 RP2) ,所以它重定向到 IDP。现在我的问题是 IDP 是否足够智能以识别同一用户或浏览器已经对 RP1 进行了身份验证,所以我不会重定向到登录页面,我只是将授权令牌返回给 RP2 还是我们需要从RP2 到 IDP?
  • IDP 有自己的 cookie。 IDP 在向 RP1 的 ACS 的 SAML POST 中将身份验证状态传递给 RP1。 RP1 然后设置它自己的 cookie。 SSO 的要点是,当用户从 RP2 发送到 IDP 时,IDP 会检查用户的会话状态(从 IDP 的 cookie 中键入)。如果会话状态仍然有效,则用户将按授权返回 RP2,而不会遇到挑战。
  • 非常感谢您的回复。我需要再澄清一下。您说“用户从 RP2 发送到 IDP,IDP 检查用户的会话状态(从 IDP 的 cookie 中键入)”。 RP2 不发送任何有关用户的信息(当从 RP1 发生重定向时,RP2 没有任何有关登录用户的信息)。 IDP 如何识别用户并知道用户已经通过 RP1 登录?
  • 您好,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。你也可以看看this help page
猜你喜欢
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 2014-12-12
  • 1970-01-01
  • 2014-09-28
  • 1970-01-01
  • 2015-10-08
相关资源
最近更新 更多