题
我正在使用SP的自定义STS。该站点是SAML令牌,具有SSO Implintation。 该注销无法正常工作。我如何实现自定义注册.Do我需要清除SP会话或清除cookie?
解决方案
我今天早上刚刚解决了这个确切的任务。您需要自定义STS来跟踪登录的站点,并在WSIGNOUT1.0处理程序中,您需要通过列表并签名。
本方法的完整描述,辅助类以跟踪登录的RPS,以及添加到您的WSignOut处理程序的代码都在这里:
http:// netpl.blogspot.co.uk/2010/12/wif-ws-federation-and-single-sign-out.html
我对辅助类进行了一个修改,我添加了一个清理方法,以删除一旦您注销的曲线跟踪RPS的cookie:
public static void CleanUp()
{
HttpCookie siteCookie = HttpContext.Current.Request.Cookies[SITECOOKIENAME];
if (siteCookie != null)
HttpContext.Current.Response.Cookies[SITECOOKIENAME].Expires = DateTime.Now.AddDays(-1);
}
.
然后,在结束时,如果您的签名处理程序,只需称之为。这是我的签名处理程序块:
else if ( action == WSFederationConstants.Actions.SignOut )
{
// Process signout request.
SignOutRequestMessage requestMessage = (SignOutRequestMessage)WSFederationMessage.CreateFromUri( Request.Url );
FederatedPassiveSecurityTokenServiceOperations.ProcessSignOutRequest( requestMessage, User, requestMessage.Reply, Response );
string[] signedInUrls = SingleSignOnManager.SignOut();
lblSignoutText.Visible = true;
foreach (string url in signedInUrls)
{
SignOutLinks.Controls.Add(
new LiteralControl(string.Format(
"<p><a href='{0}'>{0}</a> <img src='{0}?wa=wsignoutcleanup1.0' " +
"title='Signout request: {0}?wa=wsignoutcleanup1.0'/></p>", url)));
}
SingleSignOnManager.CleanUp();
}
.
就像一个魅力。请记住创建ASP:标签名为lblsignouttext和default.aspx 上的div调用signoutlinks。
你必须弄清楚自己的唯一事情,就是每个SharePoint网站的注销链接都需要隐藏,你必须创建自己的签名链接,指向:
http://mycustomsts/Default.aspx?wa=wsignout1.0
(当我遇到这个问题时,我实际上是聪明的方式。希望我的回答有帮助!)