使用Thinktecture Identity Server 2进行单点注销

Tre*_*oks 4 asp.net wif single-sign-on thinktecture-ident-server

我对Thinktecture的Identity Server 2的理解是没有实现单点登出.换句话说,当您退出一个依赖方时,Identity Server不会自动将用户从任何其他RP中签名.我知道有关于此的帖子,但我还没有找到任何关于如何扩展Identity Server来执行此操作的内容.我已经看到一些帖子说Identity Server已经开箱即用了...如果确实如此,我还是无法找到方法.

我有SSO与Asp.NET Web Forms,WIF和Identity Server 2一起工作得很好,而且我能够很好地退出RP,但从我可以看出,Identity Server中需要一些额外的代码才能将用户从他可能登录的任何其他RP中完全签名.

有没有人扩展Identity Server以实现单点注销?

这是可以在Identity Server中配置还是需要一些编码的东西?

如果你拥有它,我真的很感激.

谢谢.

Bro*_*len 5

IdentityServer支持通过WS-Federation进行单点注销.您的RP需要向IdentityServer发出注销请求,以使用户退出IdentityServer以及通过WS-Fed通过IdentityServer进行身份验证的任何其他RP.以下是您的RP如何提出此类请求的摘要:

var sam = FederatedAuthentication.SessionAuthenticationModule;
sam.SignOut();

var fam = FederatedAuthentication.WSFederationAuthenticationModule;
var signOutRequest = new SignOutRequestMessage(new Uri(fam.Issuer));
// optional -- put your RP's URL here
// signOutRequest.Reply = "https://localhost:44321/";
var url = signOutRequest.WriteQueryString();
Response.Redirect(url);
Run Code Online (Sandbox Code Playgroud)

  • @TrevorBrooks第二个网站在检查预先存在的cookie的令牌有效性之前不会退出.同源策略会阻止第一个网站或IdentityServer清除第二个网站的cookie.将令牌生存期设置为较低的值会更快地强制进行有效性检查,但会增加开销. (2认同)