0

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

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

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

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

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

谢谢!

4

1 回答 1

1

是的 - 您应该获得 SSO。

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

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

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

  • STS 登录界面?
  • FBA登录界面?
  • 什么都没有——直接去B?

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

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

于 2012-10-05T01:20:42.647 回答