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.");
}