public async Task <IHttpActionResult> Logout(string id = null) { Logger.Info("Logout endpoint submitted"); if (id != null && id.Length > MaxSignInMessageLength) { Logger.Error("id param is longer than allowed length"); return(RenderErrorPage()); } var user = (ClaimsPrincipal)User; if (user != null && user.Identity.IsAuthenticated) { var sub = user.GetSubjectId(); Logger.InfoFormat("Logout requested for subject: {0}", sub); } Logger.Info("Clearing cookies"); context.QueueRemovalOfSignOutMessageCookie(id); context.ClearAuthenticationCookies(); context.SignOutOfExternalIdP(id); string clientId = null; var message = signOutMessageCookie.Read(id); if (message != null) { clientId = message.ClientId; } await context.CallUserServiceSignOutAsync(clientId); if (user != null && user.Identity.IsAuthenticated) { await eventService.RaiseLogoutEventAsync(user, id, message); } return(await RenderLoggedOutPage(id)); //return await Login(id); }