Esempio n. 1
0
        public override ClaimsIdentity ProcessSignInResponse(string realm, string originalUrl, HttpContextBase httpContext)
        {
            var client = new OpenIdClient(Issuer.Url, MultiProtocolIssuer.Identifier);

            Logger.Debug(string.Format("ProcessSignInResponse"));
            Logger.Debug(string.Format("Issuer.Url {0}, originalUrl {1}", Issuer.Url, originalUrl));

            AuthenticationResult result;

            try
            {
                result = client.VerifyAuthentication(httpContext);
                Logger.Debug(string.Format("ProviderUserId {0}", result.ProviderUserId));
            }
            catch (WebException wex)
            {
                throw new InvalidOperationException(new StreamReader(wex.Response.GetResponseStream()).ReadToEnd(), wex);
            }

            var claims = new List <Claim>
            {
                new Claim(System.IdentityModel.Claims.ClaimTypes.NameIdentifier, result.ProviderUserId)
            };

            claims.AddRange(result.ExtraData.Select(claim => new Claim(claim.Key, claim.Value)));

            var identity = new ClaimsIdentity(claims, Issuer.Identifier.ToString());

            return(identity);
        }