public override IClaimsIdentity ProcessSignInResponse(string realm, string originalUrl, HttpContextBase httpContext)
        {
            var client = new GoogleOpenIdClient();

            AuthenticationResult result;

            try
            {
                result = client.VerifyAuthentication(httpContext);
            }
            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.ExtraData["email"])
            };

            foreach (var claim in result.ExtraData)
            {
                claims.Add(new Claim("http://schemas.google.com/" + claim.Key, claim.Value));
            }

            return(new ClaimsIdentity(claims, "Google"));
        }
Exemple #2
0
        /// <summary>
        /// Registers a supported OpenID client
        /// </summary>
        public static void RegisterOpenIDClient(BuiltInOpenIDClient openIDClient)
        {
            IAuthenticationClient client;

            switch (openIDClient)
            {
            case BuiltInOpenIDClient.Google:
                client = new GoogleOpenIdClient();
                break;

            case BuiltInOpenIDClient.Yahoo:
                client = new YahooOpenIdClient();
                break;

            default:
                throw new ArgumentOutOfRangeException("openIDClient");
            }

            RegisterClient(client);
        }
        public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
        {
            var client = new GoogleOpenIdClient();

            client.RequestAuthentication(httpContext, this.MultiProtocolIssuer.ReplyUrl);
        }