AuthBridge.Protocols.AWFOS.AWFOSHandler.ProcessSignInResponse C# (CSharp) Method

ProcessSignInResponse() public method

public ProcessSignInResponse ( string realm, string originalUrl, System.Web.HttpContextBase httpContext ) : ClaimsIdentity
realm string
originalUrl string
httpContext System.Web.HttpContextBase
return System.Security.Claims.ClaimsIdentity
        public override ClaimsIdentity ProcessSignInResponse(string realm, string originalUrl, HttpContextBase httpContext)
        {
            Logger.Info("ProcessSignInResponse");

            var entity =
                JsonConvert.SerializeObject(
                    new {ssoToken = httpContext.Request.QueryString["ssoToken"], tenant = httpContext.Request.QueryString["tenant"]});

            var tokenRequest = WebRequest.Create(_identityProviderSSOURL);
            tokenRequest.ContentType = "application/json";
            tokenRequest.ContentLength = entity.Length;
            tokenRequest.Method = "POST";

            using (var requestStream = tokenRequest.GetRequestStream())
            {
                var writer = new StreamWriter(requestStream);
                writer.Write(entity);
                writer.Flush();
            }

            var tokenResponse = (HttpWebResponse)tokenRequest.GetResponse();
            Logger.DebugFormat("tokenResponse.StatusCode {0}", tokenResponse);
            if (tokenResponse.StatusCode == HttpStatusCode.OK)
            {
                using (var responseStream = tokenResponse.GetResponseStream())
                {
                    var tokenData = JsonHelper.Deserialize<AWFOSAccessTokenData>(responseStream);
                    if (Logger.IsDebugEnabled)
                    {
                        Logger.DebugFormat("tokenData.Code {0}", tokenData.code);
                        Logger.DebugFormat("tokenData.UserEmailId {0}", tokenData.userEmailId);
                    }
                    if (tokenData?.code == 2000)
                    {
                        var claims = new List<Claim>
                        {
                            new Claim(ClaimTypes.NameIdentifier, tokenData.userEmailId)
                        };
                        return new ClaimsIdentity(claims, "AWFOS");
                    }
                }
            }

            throw new InvalidOperationException("Not properly authenticated.");
        }