質問

SP 用のカスタム STS を使用しています。サイトは SSO 実装で SAML トークンが有効になっています。ログアウトが正しく機能しません。カスタム サインアウトを実装するにはどうすればよいですか。SP セッションまたは Cookie をクリアする必要がありますか?

役に立ちましたか?

解決

私は今朝まさにこのタスクに取り組んだところです。ログインしているサイトを追跡するにはカスタム STS が必要です。また、wsignout1.0 ハンドラーでリストを調べてサインアウトする必要があります。

このメソッドの完全な説明、ログインしている RP を追跡するヘルパー クラス、および wsignout ハンドラーに追加するコードはすべてここにあります。

http://netpl.blogspot.co.uk/2010/12/wif-ws-federation-and-single-sign-out.html

ただし、ヘルパー クラスに 1 つ変更を加え、サインアウト後に RP を追跡する Cookie を削除する CleanUp メソッドを追加しました。

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>&nbsp;<img src='{0}?wa=wsignoutcleanup1.0' " +
                        "title='Signout request: {0}?wa=wsignoutcleanup1.0'/></p>", url)));
            }

            SingleSignOnManager.CleanUp();
        }

まるで魔法のように機能します。lblSignoutText という asp:Label と SignOutLinks という div を Default.aspx に作成することを忘れないでください。

自分で解決しなければならない唯一のことは、各 SharePoint サイトのログアウト リンクを非表示にする必要があり、以下を指す独自のサインアウト リンクを作成する必要があることです。

http://mycustomsts/Default.aspx?wa=wsignout1.0

(この質問に出会ったとき、私は実際にこれを行うための賢い方法を探してグーグル検索していました。私の答えがお役に立てば幸いです!)

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top