我对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中配置还是需要一些编码?
如果你拥有它,我真的很感激。
谢谢。
答案 0 :(得分: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);