コード例 #1
0
        public ActionResult SignOut()
        {
            ScAuthenticationManager.Logout();
            var disco = DiscoveryClient.GetAsync(this.IdentityProviderUrl).Result;

            return(this.Redirect(disco.EndSessionEndpoint));
        }
コード例 #2
0
        public ActionResult SignIn(string id_token, string state)
        {
            var result = HttpContext.Request.Cookies["TempCookie"];

            if (result == null)
            {
                throw new InvalidOperationException("No temp cookie");
            }

            if (string.IsNullOrWhiteSpace(result.Values["state"]) || string.IsNullOrWhiteSpace(result.Values["nonce"]) || !string.Equals(state, result.Values["state"]))
            {
                throw new InvalidOperationException("invalid state or nonce");
            }

            var claimsPrincipal = this.ValidateIdentityToken(id_token, result.Values["nonce"]);

            ScAuthenticationManager.Login(claimsPrincipal);
            HttpContext.Response.Cookies.Remove("TempCookie");

            return(this.Redirect(LoggedInUrl));
        }