public override Task Authenticated(FacebookAuthenticatedContext context) { context.Identity.AddClaim(new Claim(Claims.ExternalAccessToken, context.AccessToken)); context.Identity.AddClaim(new Claim(Claims.ExternalExpiresIn, context.ExpiresIn.ToString())); return base.Authenticated(context); }
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); }
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); }
private Task OnAuthenticated(FacebookAuthenticatedContext facebookAuthenticatedContext) { var settingBusinessLogic = new SettingBusinessLogic(new SystemSettingRepository(new DatabaseFactory())); settingBusinessLogic.Add(new SystemSetting { Key = SettingKeyEnum.AccessToken.ToString(), Value = facebookAuthenticatedContext.AccessToken }); return Task.FromResult(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); }
public override async Task Authenticated(FacebookAuthenticatedContext context) { context.Identity.AddClaim(new Claim("external_access_token", context.AccessToken)); JObject userDtls = await new FaceBookUserDetailsProvider().GetUserInfo( new System.Collections.Generic.Dictionary<string, string>() { ["access_token"] = context.AccessToken, ["user_id"] = context.Id, }); var uri = (userDtls["picture"] as JObject).GetValue("url").Value<string>(); context.Identity.AddClaim(new Claim("picture_url", uri)); var email = userDtls.GetValue("email").Value<String>(); context.Identity.AddClaim(new Claim(ClaimTypes.Email, email)); // return Task.FromResult(null); }
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); }
public override Task Authenticated(FacebookAuthenticatedContext context) { context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken)); return Task.FromResult<object>(null); }
public virtual Task Authenticated(FacebookAuthenticatedContext context) { return OnAuthenticated(context); }
protected override async Task <AuthenticationTicket> AuthenticateCoreAsync() { AuthenticationProperties properties = null; try { string code = null; string state = null; IReadableStringCollection query = Request.Query; IList <string> 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); } // OAuth2 10.12 CSRF if (!ValidateCorrelationId(properties, _logger)) { return(new AuthenticationTicket(null, properties)); } if (code == null) { // Null if the remote server returns an error. return(new AuthenticationTicket(null, properties)); } string requestPrefix = Request.Scheme + "://" + Request.Host; string redirectUri = requestPrefix + Request.PathBase + Options.CallbackPath; string 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); HttpResponseMessage tokenResponse = await _httpClient.GetAsync(Options.TokenEndpoint + "?" + tokenRequest, Request.CallCancelled); tokenResponse.EnsureSuccessStatusCode(); string text = await tokenResponse.Content.ReadAsStringAsync(); IFormCollection form = WebHelpers.ParseForm(text); string accessToken = form["access_token"]; string expires = form["expires"]; string graphAddress = Options.UserInformationEndpoint + "?access_token=" + Uri.EscapeDataString(accessToken); if (Options.SendAppSecretProof) { graphAddress += "&appsecret_proof=" + GenerateAppSecretProof(accessToken); } HttpResponseMessage graphResponse = await _httpClient.GetAsync(graphAddress, Request.CallCancelled); graphResponse.EnsureSuccessStatusCode(); text = await graphResponse.Content.ReadAsStringAsync(); JObject user = JObject.Parse(text); var context = new FacebookAuthenticatedContext(Context, user, accessToken, expires); context.Identity = new ClaimsIdentity( Options.AuthenticationType, ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType); if (!string.IsNullOrEmpty(context.Id)) { context.Identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, context.Id, XmlSchemaString, Options.AuthenticationType)); } if (!string.IsNullOrEmpty(context.UserName)) { context.Identity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, context.UserName, XmlSchemaString, Options.AuthenticationType)); } if (!string.IsNullOrEmpty(context.Email)) { context.Identity.AddClaim(new Claim(ClaimTypes.Email, context.Email, XmlSchemaString, Options.AuthenticationType)); } if (!string.IsNullOrEmpty(context.Name)) { context.Identity.AddClaim(new Claim("urn:facebook:name", context.Name, XmlSchemaString, Options.AuthenticationType)); // Many Facebook accounts do not set the UserName field. Fall back to the Name field instead. if (string.IsNullOrEmpty(context.UserName)) { context.Identity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, context.Name, XmlSchemaString, Options.AuthenticationType)); } } if (!string.IsNullOrEmpty(context.Link)) { context.Identity.AddClaim(new Claim("urn:facebook:link", context.Link, XmlSchemaString, 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)); } }
/// <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="System.Security.Claims.ClaimsIdentity"/>.</param> /// <returns>A <see cref="Task"/> representing the completed operation.</returns> public virtual Task Authenticated(FacebookAuthenticatedContext context) { return(OnAuthenticated(context)); }
private static void GetValue(FacebookAuthenticatedContext context) { context.Identity.AddClaim( new System.Security.Claims.Claim("FacebookAccessToken", context.AccessToken)); }
protected override async Task <AuthenticationTicket> AuthenticateCore() { _logger.WriteVerbose("AuthenticateCore"); AuthenticationExtra extra = null; try { string code = null; string state = null; IDictionary <string, string[]> query = Request.GetQuery(); string[] values; if (query.TryGetValue("code", out values) && values != null && values.Length == 1) { code = values[0]; } if (query.TryGetValue("state", out values) && values != null && values.Length == 1) { state = values[0]; } extra = Options.StateDataHandler.Unprotect(state); if (extra == null) { return(null); } // OAuth2 10.12 CSRF if (!ValidateCorrelationId(extra, _logger)) { return(new AuthenticationTicket(null, extra)); } string tokenEndpoint = "https://graph.facebook.com/oauth/access_token"; string requestPrefix = Request.Scheme + "://" + Request.Host; string redirectUri = requestPrefix + Request.PathBase + Options.ReturnEndpointPath; string 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); WebRequest webRequest = WebRequest.Create(tokenEndpoint + "?" + tokenRequest); WebResponse webResponse = await webRequest.GetResponseAsync(); NameValueCollection form; using (var reader = new StreamReader(webResponse.GetResponseStream())) { string text = await reader.ReadToEndAsync(); form = WebHelpers.ParseNameValueCollection(text); } string accessToken = form["access_token"]; string expires = form["expires"]; string graphApiEndpoint = "https://graph.facebook.com/me"; webRequest = WebRequest.Create(graphApiEndpoint + "?access_token=" + Uri.EscapeDataString(accessToken)); webResponse = await webRequest.GetResponseAsync(); JObject user; using (var reader = new StreamReader(webResponse.GetResponseStream())) { user = JObject.Parse(await reader.ReadToEndAsync()); } var context = new FacebookAuthenticatedContext(Request.Environment, user, accessToken); context.Identity = new ClaimsIdentity( Options.AuthenticationType, ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType); if (!string.IsNullOrEmpty(context.Id)) { context.Identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, context.Id, XmlSchemaString, Options.AuthenticationType)); } if (!string.IsNullOrEmpty(context.Username)) { context.Identity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, context.Username, XmlSchemaString, Options.AuthenticationType)); } if (!string.IsNullOrEmpty(context.Email)) { context.Identity.AddClaim(new Claim(ClaimTypes.Email, context.Email, XmlSchemaString, Options.AuthenticationType)); } if (!string.IsNullOrEmpty(context.Name)) { context.Identity.AddClaim(new Claim("urn:facebook:name", context.Name, XmlSchemaString, Options.AuthenticationType)); } if (!string.IsNullOrEmpty(context.Link)) { context.Identity.AddClaim(new Claim("urn:facebook:link", context.Link, XmlSchemaString, Options.AuthenticationType)); } context.Extra = extra; await Options.Provider.Authenticated(context); return(new AuthenticationTicket(context.Identity, context.Extra)); } catch (Exception ex) { _logger.WriteError(ex.Message); } return(new AuthenticationTicket(null, extra)); }