Как реализовать приложение единого выхода для всех с помощью федерации ADFS - PullRequest
0 голосов
/ 11 октября 2019

Я собираюсь внедрить SSO, используя локальную ADFS 4.0 со службой федерации. Я выполнил код для входа в систему и он работает нормально, но я хочу развить функцию единого выхода из системы.

Когда я выхожу из системы с одного веб-сайта, пользователь должен автоматически выйти из всех настроенных приложений. на сервере ADFS.

Ниже приведен мой код:

StartUp.Auth FIle

            string adfs = ConfigurationManager.AppSettings["AdfsMetadataEndPoint"];
            string realm = ConfigurationManager.AppSettings["Wtrealm"];
            string reply = ConfigurationManager.AppSettings["Wreply"];

            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = CookieAuthenticationDefaults.AuthenticationType,
                CookieManager = new SystemWebCookieManager()
            });

            app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
            {
                MetadataAddress = adfs,
                Wtrealm = realm,
                Wreply = reply,
                AuthenticationMode = AuthenticationMode.Passive
            });

            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

выход из системы Действие:

public void LogOff()
        {
            var owinContext = this.Request.GetOwinContext();
            var authProperties = new AuthenticationProperties();
            authProperties.RedirectUri = new Uri(this.HttpContext.Request.Url, new UrlHelper(this.ControllerContext.RequestContext).Action("Login")).AbsoluteUri;

            owinContext.Authentication.SignOut(authProperties);

            WSFederationAuthenticationModule.FederatedSignOut(
                new Uri("https://xxxxxxx/adfs/ls/?wa=wsignoutcleanup1.0"),
                new Uri("https://localhost:44320/Home/Index"));

            //AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
            //return RedirectToAction("Index", "Home");
        }
...