public override Task Authenticated(FacebookAuthenticatedContext context)
        {
            context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
            //context.Identity.AddClaim(new System.Security.Claims.Claim("urn:facebook:email", context.Email, ClaimValueTypes.Email, "Facebook"));

            return(Task.FromResult <object>(null));
        }
Пример #2
0
        private void AddClaim(FacebookAuthenticatedContext context, string claimName, string propertyName)
        {
            var value = context.User[propertyName]?.ToString();

            if (propertyName == "picture")
            {
                value = context.User["picture"]?["data"]?["url"]?.ToString();
                if (value == null)
                {
                    return;
                }

                context.Identity.AddClaim(new Claim("picture_url", value));
                context.Identity.AddClaim(new Claim("picture_mime", "image/jpg"));

                return;
            }

            if (value == null)
            {
                return;
            }

            context.Identity.AddClaim(new Claim(claimName, value));
        }
Пример #3
0
 public override Task Authenticated(FacebookAuthenticatedContext context)
 {
     context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
     context.Identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, context.Id));
     //context.Identity.AddClaim(new Claim(ClaimTypes.Email, context.Email));
     return(Task.FromResult <object>(null));
 }
Пример #4
0
        public override Task Authenticated(FacebookAuthenticatedContext context)
        {
            context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
            context.Identity.AddClaim(new Claim("FacebookAccessToken", context.AccessToken));

            return(Task.FromResult <object>(null));
        }
Пример #5
0
    /// <summary>
    /// Invoked whenever Facebook succesfully authenticates a user
    /// </summary>
    /// <param name="context">Contains information about the login session as well as the user <see cref="T:System.Security.Claims.ClaimsIdentity" />.</param>
    /// <returns>A <see cref="T:System.Threading.Tasks.Task" /> representing the completed operation.</returns>
    public override Task Authenticated(FacebookAuthenticatedContext context)
    {
        TryParseProperty(context, "first_name", Claims.FirstName);
        TryParseProperty(context, "last_name", Claims.LastName);
        TryParseProperty(context, "picture.data.url", Claims.PhotoUrl);

        return(base.Authenticated(context));
    }
Пример #6
0
        public override Task Authenticated(FacebookAuthenticatedContext context)
        {
            string avatarUrl = GetAvatarUrl(context.User.GetValue("id").ToString(), 240);

            context.Identity.AddClaim(
                new Claim(OwinHelper.ClaimTypeAvatarUrl, avatarUrl));

            return(base.Authenticated(context));
        }
        private void TryParseProperty(FacebookAuthenticatedContext context, string name, string targetName)
        {
            var value = context.User.SelectToken(name);

            if (value != null)
            {
                context.Identity.AddClaim(new Claim(targetName, value.ToString()));
            }
        }
        private Task OnAuthenticated(FacebookAuthenticatedContext facebookAuthenticatedContext)
        {
            var gender      = facebookAuthenticatedContext.User.GetValue("gender");
            var genderClaim = new Claim(ClaimTypes.Gender, gender.ToString(), "", "Facebook");

            facebookAuthenticatedContext.Identity.AddClaim(new Claim("urn:facebook:access_token", facebookAuthenticatedContext.AccessToken));
            facebookAuthenticatedContext.Identity.AddClaim(genderClaim);
            return(Task.FromResult(0));
        }
Пример #9
0
 public override Task Authenticated(FacebookAuthenticatedContext context)
 {
     if (!context.Identity.HasClaim(ClaimTypes.Authentication, "true"))
     {
         context.Identity.AddClaim(new Claim(ClaimTypes.Authentication, "true"));
     }
     context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
     return(Task.FromResult <object>(null));
 }
        public override Task Authenticated(FacebookAuthenticatedContext context)
        {
            context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
            TryParseProperty(context, "first_name", AuthConstants.CustomClaims.FirstName);
            TryParseProperty(context, "last_name", AuthConstants.CustomClaims.LastName);
            TryParseProperty(context, "picture.data.url", AuthConstants.CustomClaims.ImageUrl);
            TryParseProperty(context, "Email", AuthConstants.CustomClaims.Email);

            return(Task.FromResult <object>(null));
        }
Пример #11
0
 public override Task Authenticated(FacebookAuthenticatedContext context)
 {
     context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
     context.Identity.AddClaim(new Claim(ClaimTypes.DateOfBirth, context.User["birthday"].ToString()));
     context.Identity.AddClaim(new Claim(ClaimTypes.GivenName, context.User["first_name"].ToString()));
     context.Identity.AddClaim(new Claim(ClaimTypes.Surname, context.User["last_name"].ToString()));
     context.Identity.AddClaim(new Claim(ClaimTypes.Gender, context.User["gender"].ToString()));
     //context.Identity.AddClaim(new Claim("profile_picture", "https://graph.facebook.com/" + context.Id + "/picture?type=large&w%E2%80%8C%E2%80%8Bidth=720&height=720"));
     return(Task.FromResult <object>(null));
 }
 public override Task Authenticated(FacebookAuthenticatedContext context)
 {
     context.Identity.AddClaim(new System.Security.Claims.Claim("urn:facebook:access_token", context.AccessToken, XmlSchemaString, "Facebook"));
     foreach (var x in context.User)
     {
         var    claimType  = string.Format("urn:facebook:{0}", x.Key);
         string claimValue = x.Value.ToString();
         if (!context.Identity.HasClaim(claimType, claimValue))
         {
             context.Identity.AddClaim(new System.Security.Claims.Claim(claimType, claimValue, XmlSchemaString, "Facebook"));
         }
     }
     return(Task.FromResult(0));
 }
 public override Task Authenticated(FacebookAuthenticatedContext context)
 {
     context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
     foreach (var claim in context.User)
     {
         var    claimType  = string.Format("urn:facebook:{0}", claim.Key);
         string claimValue = claim.Value.ToString();
         if (!context.Identity.HasClaim(claimType, claimValue))
         {
             context.Identity.AddClaim(new Claim(claimType, claimValue, "XmlSchemaString", "Facebook"));
         }
     }
     return(Task.FromResult <object>(null));
 }
Пример #14
0
        public override Task Authenticated(FacebookAuthenticatedContext context)
        {
            var accessTokenClaim = new Claim("ExternalAccessToken", context.AccessToken, "urn:facebook:access_token");

            context.Identity.AddClaim(accessTokenClaim);
            var extraClaims = GetAdditionalFacebookClaims(accessTokenClaim);

            context.Identity.AddClaim(new Claim(ClaimTypes.Email, extraClaims.First(k => k.Key == "email").Value.ToString()));
            context.Identity.AddClaim(new Claim("Provider", context.Identity.AuthenticationType));
            context.Identity.AddClaim(new Claim(ClaimTypes.Name, context.Identity.FindFirstValue(ClaimTypes.Name)));

            var userDetail = context.User;
            var link       = userDetail.Value <string>("link") ?? string.Empty;

            context.Identity.AddClaim(new Claim("link", link));
            context.Identity.AddClaim(new Claim("FacebookId", userDetail.Value <string>("id")));
            return(System.Threading.Tasks.Task.FromResult(0));
        }
Пример #15
0
        internal static async Task OnAuthenticated(FacebookAuthenticatedContext context)
        {
            if (context.Identity != null)
            {
                Helpers.ThrowIfConditionFailed(() => context.AccessToken == "ValidAccessToken", "");
                Helpers.ThrowIfConditionFailed(() => context.Email == "*****@*****.**", "");
                Helpers.ThrowIfConditionFailed(() => context.Id == "Id", "");
                Helpers.ThrowIfConditionFailed(() => context.Link == "https://www.facebook.com/myLink", "");
                Helpers.ThrowIfConditionFailed(() => context.Name == "AspnetvnextTest AspnetvnextTest", "");
                Helpers.ThrowIfConditionFailed(() => context.UserName == "AspnetvnextTest.AspnetvnextTest.7", "");
                Helpers.ThrowIfConditionFailed(() => context.User.SelectToken("id").ToString() == context.Id, "");
                Helpers.ThrowIfConditionFailed(() => context.ExpiresIn.Value == TimeSpan.FromSeconds(100), "");
                Helpers.ThrowIfConditionFailed(() => context.AccessToken == "ValidAccessToken", "");
                context.Identity.AddClaim(new Claim("ManageStore", "false"));
            }

            await Task.FromResult(0);
        }
Пример #16
0
        public override Task Authenticated(FacebookAuthenticatedContext context)
        {
            context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));



            vaccess dd  = new vaccess();
            vresult dd2 = new vresult();

            dd2.vname = context.AccessToken;
            // dd.getToken(context.AccessToken);
            string vname = context.Identity.Name;

            context.OwinContext.Set <string>("as:client_id", context.AccessToken);

            return(Task.FromResult <vresult>(dd2));

            // return Task.FromResult<object>(null);
        }
Пример #17
0
 //
 public override Task Authenticated(FacebookAuthenticatedContext context)
 {
     try
     {
         addClaim(context.Identity, "urn:tokens:facebook:accesstoken", context.AccessToken);
         //addClaim(context.Identity, "urn:tokens:facebook:accesstokenexpiration", context.ExpiresIn?.ToString());
         //
         addClaim(context.Identity, "urn:tokens:facebook:familyname", getValue(context.User, "last_name"));
         addClaim(context.Identity, "urn:tokens:facebook:givenname", getValue(context.User, "first_name"));
         addClaim(context.Identity, "urn:tokens:facebook:avatarurl", $@"https://graph.facebook.com/{context.Id}/picture"); //?width=240&height=240
         addClaim(context.Identity, "urn:tokens:facebook:company", getValue(context.User, "company"));
         //
         //addClaim(context.Identity, "urn:tokens:facebook:username", context.UserName);
         //addClaim(context.Identity, "urn:tokens:facebook:fullname", context.Name);
         //addClaim(context.Identity, "urn:tokens:facebook:location", getValue(context.User, "location"));
     }
     catch (Exception ex) { Logger.Error(ex, LogCategory.Claims, "There was an issue reading the information from the Facebook Authentication context."); }
     //
     return(base.Authenticated(context));
 }
        public override Task Authenticated(FacebookAuthenticatedContext context)
        {
            var        fbEmailEndPoint = string.Format("https://graph.facebook.com/me?fields=id,name,email&access_token={0}", context.AccessToken);
            var        uri             = new Uri(fbEmailEndPoint);
            HttpClient client          = new HttpClient();

            var response = client.GetAsync(uri);

            response.Wait();
            var content = response.Result.Content.ReadAsStringAsync();

            content.Wait();

            dynamic jObj  = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(content.Result.ToString());
            string  email = jObj["email"];

            context.Identity.AddClaim(new Claim("Email", email));
            context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
            // var client = new FacebookClient(context.AccessToken);
            //dynamic info = client.Get("me", new { fields = "name,id,email" });
            return(Task.FromResult <object>(null));
        }
Пример #19
0
        public static Task AddBasicDetailsAsClaims(FacebookAuthenticatedContext context)
        {
            if (context == null)
            {
                throw new InvalidOperationException("context");
            }

            if (!context.Identity.HasClaim("urn:facebook:access_token", context.AccessToken))
            {
                context.Identity.AddClaim(new Claim("urn:facebook:access_token", context.AccessToken, XmlSchemaString, "Facebook"));
            }

            dynamic user = context.User;

            if (!context.Identity.HasClaim("urn:facebook:first_name", user.first_name.Value))
            {
                context.Identity.AddClaim(new Claim("urn:facebook:first_name", user.first_name.Value, XmlSchemaString, "Facebook"));
            }

            if (!context.Identity.HasClaim("urn:facebook:gender", user.gender.Value))
            {
                context.Identity.AddClaim(new Claim("urn:facebook:gender", user.gender.Value, XmlSchemaString, "Facebook"));
            }

            if (!context.Identity.HasClaim("urn:facebook:last_name", user.last_name.Value))
            {
                context.Identity.AddClaim(new Claim("urn:facebook:last_name", user.last_name.Value, XmlSchemaString, "Facebook"));
            }

            if (!context.Identity.HasClaim("urn:facebook:birthday", user.birthday.Value))
            {
                context.Identity.AddClaim(new Claim("urn:facebook:birthday", user.birthday.Value, XmlSchemaString, "Facebook"));
            }

            return(Task.FromResult(0));
        }
Пример #20
0
 public override Task Authenticated(FacebookAuthenticatedContext context)
 {
     context.Identity.AddClaim(
         new Claim(ServiceClaimTypes.ProviderAccessToken, context.AccessToken));
     return(base.Authenticated(context));
 }
Пример #21
0
 public override Task Authenticated(FacebookAuthenticatedContext context)
 {
     context.Identity.AddClaim(new Claim("access_token", context.AccessToken, ClaimValueTypes.String, "Facebook"));
     return(Task.FromResult <object>(null));
 }
Пример #22
0
 public override Task Authenticated(FacebookAuthenticatedContext context)
 {
     context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
     context.Identity.AddClaim(new Claim("Email", context.User.GetValue("email").ToString()));
     return(Task.FromResult <object>(null));
 }
        protected override async Task <AuthenticationTicket> AuthenticateCoreAsync()
        {
            var properties = (AuthenticationProperties)null;

            try
            {
                var    accessToken = Request.Query["accessToken"];
                var    expires     = Request.Query["expiresIn"];
                string text;
                if (null == accessToken)
                {
                    var code   = (string)null;
                    var state  = (string)null;
                    var query  = Request.Query;
                    var values = query.GetValues("error");
                    if (values != null && values.Count >= 1)
                    {
                        _logger.WriteVerbose("Remote server returned an error: " + Request.QueryString);
                    }
                    values = query.GetValues("code");
                    if (values != null && values.Count == 1)
                    {
                        code = values[0];
                    }
                    values = query.GetValues("state");
                    if (values != null && values.Count == 1)
                    {
                        state = values[0];
                    }
                    properties = Options.StateDataFormat.Unprotect(state);
                    if (properties == null)
                    {
                        return(null);
                    }
                    if (!ValidateCorrelationId(properties, _logger))
                    {
                        return(new AuthenticationTicket(null, properties));
                    }
                    if (code == null)
                    {
                        return(new AuthenticationTicket(null, properties));
                    }
                    var requestPrefix = Request.Scheme + "://" + Request.Host;
                    var redirectUri   = requestPrefix + Request.PathBase + Options.CallbackPath;
                    var tokenRequest  = "grant_type=authorization_code&code=" + Uri.EscapeDataString(code) +
                                        "&redirect_uri=" + Uri.EscapeDataString(redirectUri) + "&client_id=" +
                                        Uri.EscapeDataString(Options.AppId) + "&client_secret=" +
                                        Uri.EscapeDataString(Options.AppSecret);
                    var tokenResponse =
                        await _httpClient.GetAsync(Options.TokenEndpoint + "?" + tokenRequest, Request.CallCancelled);

                    tokenResponse.EnsureSuccessStatusCode();
                    text = await tokenResponse.Content.ReadAsStringAsync();

                    var form = WebHelpers.ParseForm(text);
                    accessToken = form["access_token"];
                    expires     = form["expires"];
                }
                else
                {
                    properties = new AuthenticationProperties()
                    {
                        RedirectUri = "/Account/ExternalLoginCallback"
                    };
                }
                var graphAddress = Options.UserInformationEndpoint + "?access_token=" + Uri.EscapeDataString(accessToken);
                if (Options.SendAppSecretProof)
                {
                    graphAddress += "&appsecret_proof=" + GenerateAppSecretProof(accessToken);
                }
                var graphResponse = await _httpClient.GetAsync(graphAddress, Request.CallCancelled);

                graphResponse.EnsureSuccessStatusCode();
                text = await graphResponse.Content.ReadAsStringAsync();

                var user    = JObject.Parse(text);
                var context = new FacebookAuthenticatedContext(Context, user, accessToken, expires)
                {
                    Identity =
                        new ClaimsIdentity(Options.AuthenticationType,
                                           "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
                                           "http://schemas.microsoft.com/ws/2008/06/identity/claims/role")
                };
                if (!string.IsNullOrEmpty(context.Id))
                {
                    context.Identity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", context.Id, "http://www.w3.org/2001/XMLSchema#string", Options.AuthenticationType));
                }
                if (!string.IsNullOrEmpty(context.UserName))
                {
                    context.Identity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", context.UserName, "http://www.w3.org/2001/XMLSchema#string", Options.AuthenticationType));
                }
                if (!string.IsNullOrEmpty(context.Email))
                {
                    context.Identity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", context.Email, "http://www.w3.org/2001/XMLSchema#string", Options.AuthenticationType));
                }
                if (!string.IsNullOrEmpty(context.Name))
                {
                    context.Identity.AddClaim(new Claim("urn:facebook:name", context.Name, "http://www.w3.org/2001/XMLSchema#string", Options.AuthenticationType));
                    if (string.IsNullOrEmpty(context.UserName))
                    {
                        context.Identity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", context.Name, "http://www.w3.org/2001/XMLSchema#string", Options.AuthenticationType));
                    }
                }
                if (!string.IsNullOrEmpty(context.Link))
                {
                    context.Identity.AddClaim(new Claim("urn:facebook:link", context.Link, "http://www.w3.org/2001/XMLSchema#string", Options.AuthenticationType));
                }
                context.Properties = properties;
                await Options.Provider.Authenticated(context);

                return(new AuthenticationTicket(context.Identity, context.Properties));
            }
            catch (Exception ex)
            {
                _logger.WriteError("Authentication failed", ex);
                return(new AuthenticationTicket(null, properties));
            }
        }