Единый выход с помощью Thinktecture Identity Server 2
Насколько я понимаю в отношении Identity Server 2 компании Thinktecture, единый выход не реализован. Другими словами, когда вы выходите из одной проверяющей стороны, Identity Server не выписывает пользователя из других RP автоматически. Я знаю, что были сообщения об этом, но я не смог найти ничего о том, как расширить Identity Server, чтобы сделать это. Я видел несколько сообщений, в которых говорится, что Identity Server уже делает это из коробки... если это так, я не смог выяснить, как.
У меня SSO прекрасно работает с Asp.NET Web Forms, WIF и Identity Server 2, и я могу просто выйти из RP, но из того, что я могу сказать, в Identity Server требуется дополнительный код для того, чтобы полностью отключите пользователя от любых других RP, в которые он может войти.
Кто-нибудь расширил Identity Server для реализации единого выхода?
Это то, что можно настроить в Identity Server или требуется какое-то кодирование?
Я бы очень признателен за понимание, если у вас есть.
Спасибо.
1 ответ
IdentityServer поддерживает единый выход через WS-Federation. Ваш RP должен будет сделать запрос на выход из IdentityServer, чтобы пользователь вышел из IdentityServer и любого другого RP, который прошел аутентификацию с IdentityServer через WS-Fed. Вот фрагмент того, как ваш 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);