如何使用WIF和STS Provider从站点A获取站点B上的SSO

时间:2012-10-04 20:58:01

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

所以这是设置。我有一个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代表的活动会话   曲奇饼。这意味着对STS页面的请求直接导致执行   SecurityTokenService发出序列而不向用户显示   任何用于凭据收集的UI。 令牌以静默方式发出   并按照通常的顺序转发到B 。来自   用户点击B的链接时,浏览器会显示   从B请求页面,只有一些闪烁的地址栏   浏览器将泄露一些身份验证发生的事实   引擎盖下。这就是Single Sign-on(SSO)意味着什么:   用户只通过一次登录体验   系统上的那一刻能够进入更可靠的缔约方   没有再次提示用户输入凭据。“

是否有人知道STS提供商,站点A或站点B中明确需要发生什么才能使其正常工作?记住STS和网站'A'工作正常;它只是网站'B'没有获得SSO能力。

谢谢!

1 个答案:

答案 0 :(得分:1)

是的 - 你应该得到SSO。

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

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

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

  • STS登录界面?
  • FBA登录界面?
  • 没什么 - 直接去B?

如果是STS登录界面,当您进行身份验证然后导航到A?

时会发生什么

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