【问题标题】:How to get SSO on Site B from Site A using WIF and STS Provider如何使用 WIF 和 STS Provider 从站点 A 获取站点 B 上的 SSO
【发布时间】:2012-10-04 20:58:01
【问题描述】:

所以这里是设置。我有一个 STS 提供程序和 2 个 ASP.NET MVC 站点信任同一个 STS 提供程序。用户来到站点 A 并被重定向到 STS 提供者被动登录,正确地进行身份验证,并按预期重定向回站点“A”。这一切都很好。我可以使用以下命令在站点“A”的代码中查看令牌和身份:

IClaimsPrincipal claimsPrincipal = Thread.CurrentPrincipal as IClaimsPrincipal;
IClaimsIdentity claimsIdentity = (IClaimsIdentity)claimsPrincipal.Identity;

现在站点“A”上有一个指向站点“B”的链接,该链接信任 same STS 提供者。问题是当我导航到站点“B”时,声明信息不存在,并且用户未自动进行身份验证。根据 STS 和 WIF 文档,应发生以下情况:

“流程像往常一样开始,用户在站点 A 上向 B 请求页面并被重定向到 STS 以获取令牌。但是,这一次用户已经通过了身份验证 STS 站点,因为存在由 STS 表示的活动会话 曲奇饼。这意味着对 STS 页面的请求直接导致执行 未向用户显示的 SecurityTokenService 发布序列 任何用于凭据收集的 UI。 令牌是静默发行的 并按照通常的顺序转发给 B。来自 当用户点击指向 B 的链接时,浏览器会显示 从 B 请求的页面,只有地址栏的一些闪烁 浏览器将放弃发生某些身份验证的事实 在引擎盖下。这几乎就是单点登录 (SSO) 的含义: 用户经历了仅登录一次的体验,并且从 系统上的那一刻能够访问更多的可靠方 无需再次提示用户输入凭据。”

有谁知道在 STS 提供者、站点 A 或站点 B 中明确需要发生什么以使其正常工作?请记住 STS 和站点“A”运行良好;只是站点“B”没有获得 SSO 功能。

谢谢!

【问题讨论】:

  • 那么当用户导航到 B 时会发生什么?

标签: c# asp.net wif sts-securitytokenservice


【解决方案1】:

是的 - 您应该获得 SSO。

使用 ADFS 术语,我假设您 FedUtil'd A 和 B 与 STS 并在 STS 上将 A 和 B 配置为具有基本相同配置的依赖方?我假设您已经比较了 A 和 B web.config?

清除所有您的 cookie - 我发现 FireFox 做得最好。

直接导航到 B。会发生什么?

  • STS 登录屏幕?
  • FBA 登录屏幕?
  • 什么都没有 - 直接去 B 吗?

如果是 STS 登录屏幕,当您进行身份验证然后导航到 A 时会发生什么?

如果没有,B 上的着陆页是否受到保护?

【讨论】:

  • 我假设您在 STS 上同时使用了 A 和 B,并将 STS 上的 A 和 B 配置为具有基本相同配置的依赖方?我假设您已经比较了 A 和 B web.config? 上一个语句中的某些内容是罪魁祸首 - 它确实按文档说明工作,但所有分散的配置都必须正确并适用于该特定应用程序(可以'不仅仅是复制和粘贴所有内容)。感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 2018-12-07
相关资源
最近更新 更多