所以这是设置。我有一个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能力。
谢谢!
答案 0 :(得分:1)
是的 - 你应该得到SSO。
使用ADFS术语,我假设您使用STS对A和B进行了FedUtil并将STS上的A和B配置为具有基本相同配置的依赖方?我假设您已经比较了A和B web.config?
清除所有您的Cookie - 我发现FireFox做得最好。
直接导航到B.会发生什么?
如果是STS登录界面,当您进行身份验证然后导航到A?
时会发生什么如果没有,B上的登陆页面是否受到保护?