private async Task <User> RegisterExternalUserAsync(ExternalAuthUserInfo externalUser) { var user = await _userRegistrationManager.RegisterAsync( externalUser.Name, externalUser.Surname, externalUser.EmailAddress, externalUser.EmailAddress, Authorization.Users.User.CreateRandomPassword(), true ); user.Logins = new List <UserLogin> { new UserLogin { LoginProvider = externalUser.Provider, ProviderKey = externalUser.ProviderKey, TenantId = user.TenantId } }; await CurrentUnitOfWork.SaveChangesAsync(); return(user); }
public override async Task <ExternalAuthUserInfo> GetUserInfo(string accessCode) { ExternalAuthUserInfo externalAuthUserInfo; using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.UserAgent.ParseAdd("Microsoft ASP.NET Core OAuth middleware"); client.DefaultRequestHeaders.Accept.ParseAdd("application/json"); client.Timeout = TimeSpan.FromSeconds(30.0); client.MaxResponseContentBufferSize = 10485760L; HttpResponseMessage httpResponseMessage = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, GoogleDefaults.UserInformationEndpoint) { Headers = { Authorization = new AuthenticationHeaderValue("Bearer", accessCode) } }); httpResponseMessage.EnsureSuccessStatusCode(); JObject user = JObject.Parse(await httpResponseMessage.Content.ReadAsStringAsync()); externalAuthUserInfo = new ExternalAuthUserInfo() { Name = user.Value <string>("displayName"), EmailAddress = user.Value <JArray>("emails").First().Value <string>("value"), ProviderKey = user.Value <string>("id"), Provider = ProviderName, AvatarUrl = user.Value <JObject>("image").Value <string>("url"), }; } return(externalAuthUserInfo); }
public override async Task <ExternalAuthUserInfo> GetUserInfo(string accessCode) { string requestUri = QueryHelpers.AddQueryString(QueryHelpers.AddQueryString(QueryHelpers.AddQueryString("https://graph.facebook.com/v2.8/me", "access_token", accessCode), "appsecret_proof", this.GenerateAppSecretProof(accessCode)), "fields", "email,last_name,first_name,middle_name"); ExternalAuthUserInfo externalAuthUserInfo; using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.UserAgent.ParseAdd("Microsoft ASP.NET Core OAuth middleware"); client.DefaultRequestHeaders.Accept.ParseAdd("application/json"); client.DefaultRequestHeaders.Host = "graph.facebook.com"; client.Timeout = TimeSpan.FromSeconds(30.0); client.MaxResponseContentBufferSize = 10485760L; HttpResponseMessage async = await client.GetAsync(requestUri); async.EnsureSuccessStatusCode(); JObject user = JObject.Parse(await async.Content.ReadAsStringAsync()); string firstName = FacebookHelper.GetFirstName(user); string middleName = FacebookHelper.GetMiddleName(user); if (!middleName.IsNullOrEmpty()) { firstName += middleName; } externalAuthUserInfo = new ExternalAuthUserInfo() { Name = firstName, EmailAddress = FacebookHelper.GetEmail(user), Surname = FacebookHelper.GetLastName(user), Provider = "Facebook", ProviderKey = FacebookHelper.GetId(user) }; } return(externalAuthUserInfo); }
private async Task <User> RegisterExternalUserAsync(ExternalAuthUserInfo externalLoginInfo) { string username; using (var providerManager = _externalLoginInfoManagerFactory.GetExternalLoginInfoManager(externalLoginInfo.Provider)) { username = providerManager.Object.GetUserNameFromExternalAuthUserInfo(externalLoginInfo); } var user = await _userRegistrationManager.RegisterAsync( externalLoginInfo.Name, externalLoginInfo.Surname, externalLoginInfo.EmailAddress, username, await _userManager.CreateRandomPassword(), true, null ); user.Logins = new List <UserLogin> { new UserLogin { LoginProvider = externalLoginInfo.Provider, ProviderKey = externalLoginInfo.ProviderKey, TenantId = user.TenantId } }; await CurrentUnitOfWork.SaveChangesAsync(); return(user); }
private async Task <User> RegisterExternalUserAsync(ExternalAuthUserInfo externalUser) { //var user = await _userRegistrationManager.RegisterAsync( // externalUser.Name, // externalUser.Surname, // externalUser.EmailAddress, // externalUser.EmailAddress, // Authorization.Users.User.CreateRandomPassword(), // true //); //user.Logins = new List<UserLogin> //{ // new UserLogin // { // LoginProvider = externalUser.Provider, // ProviderKey = externalUser.ProviderKey, // TenantId = user.TenantId // } //}; //await CurrentUnitOfWork.SaveChangesAsync(); //return user; return(null); }
// Token: 0x06000039 RID: 57 RVA: 0x000024D0 File Offset: 0x000006D0 public override async Task <ExternalAuthUserInfo> GetUserInfo(string accessCode) { ExternalAuthUserInfo result; using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.UserAgent.ParseAdd("Microsoft ASP.NET Core OAuth middleware"); client.DefaultRequestHeaders.Accept.ParseAdd("application/json"); client.Timeout = TimeSpan.FromSeconds(30.0); client.MaxResponseContentBufferSize = 10485760L; HttpResponseMessage httpResponseMessage = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, MicrosoftAccountDefaults.UserInformationEndpoint) { Headers = { Authorization = new AuthenticationHeaderValue("Bearer", accessCode) } }); httpResponseMessage.EnsureSuccessStatusCode(); JObject user = JObject.Parse(await httpResponseMessage.Content.ReadAsStringAsync()); result = new ExternalAuthUserInfo { Name = MicrosoftAccountHelper.GetDisplayName(user), EmailAddress = MicrosoftAccountHelper.GetEmail(user), Surname = MicrosoftAccountHelper.GetSurname(user), Provider = "Microsoft", ProviderKey = MicrosoftAccountHelper.GetId(user) }; } return(result); }
public override async Task <ExternalAuthUserInfo> GetUserInfo(string accessCode) { var endpoint = QueryHelpers.AddQueryString("https://graph.facebook.com/v2.12/me", "access_token", accessCode); endpoint = QueryHelpers.AddQueryString(endpoint, "appsecret_proof", GenerateAppSecretProof(accessCode)); endpoint = QueryHelpers.AddQueryString(endpoint, "fields", "email,last_name,first_name,middle_name"); using (var client = new HttpClient()) { client.DefaultRequestHeaders.UserAgent.ParseAdd("Microsoft ASP.NET Core OAuth middleware"); client.DefaultRequestHeaders.Accept.ParseAdd("application/json"); client.DefaultRequestHeaders.Host = "graph.facebook.com"; client.Timeout = TimeSpan.FromSeconds(30); client.MaxResponseContentBufferSize = 1024 * 1024 * 10; // 10 MB var response = await client.GetAsync(endpoint); response.EnsureSuccessStatusCode(); var payload = JObject.Parse(await response.Content.ReadAsStringAsync()); var results = new ExternalAuthUserInfo { Name = (string)payload.SelectToken("first_name"), EmailAddress = (string)payload.SelectToken("email"), Surname = $"{(string)payload.SelectToken("last_name")} {(string)payload.SelectToken("middle_name")}", Provider = Name, ProviderKey = (string)payload.SelectToken("id") }; return(results); //throw new UserFriendlyException("This Feature is not available in this sample."); } }
private async Task <User> RegisterExternalUserAsync(ExternalAuthUserInfo externalUser) { /* --- 微信 * var user = await _userRegistrationManager.RegisterAsync<MemberUser>( * externalUser.Name, * externalUser.Surname, * externalUser.EmailAddress, * externalUser.EmailAddress, * Authorization.Users.User.CreateRandomPassword(), * true * ); * * if (externalUser is WechatAuthUserInfo) * { * user.SessionKey = (externalUser as WechatAuthUserInfo).SessionKey; * } * * user.Logins = new List<UserLogin> * { * new UserLogin * { * LoginProvider = externalUser.Provider, * ProviderKey = externalUser.ProviderKey, * TenantId = user.TenantId * } * }; * * await CurrentUnitOfWork.SaveChangesAsync(); * * return user; */ //var user = await _userRegistrationManager.RegisterAsync( var user = await _userRegistrationManager.RegisterAsync <MemberUser> ( // externalUser.Name, externalUser.Surname, externalUser.EmailAddress, externalUser.EmailAddress, // Username Authorization.Users.User.CreateRandomPassword(), true ); user.Logins = new List <UserLogin> { new UserLogin { LoginProvider = externalUser.Provider, ProviderKey = externalUser.ProviderKey, TenantId = user.TenantId } }; await CurrentUnitOfWork.SaveChangesAsync(); return(user); }
private bool ProviderKeysAreEqual(ExternalAuthenticateModel model, ExternalAuthUserInfo userInfo) { if (userInfo.ProviderKey == model.ProviderKey) { return(true); } ; return(userInfo.ProviderKey == model.ProviderKey.Replace("-", "").TrimStart('0')); }
private async Task <ExternalAuthUserInfo> GetExternalUserInfo(ExternalAuthenticateModel model) { ExternalAuthUserInfo userInfo = await _externalAuthManager.GetUserInfo(model.AuthProvider, model.ProviderAccessCode); if (userInfo.ProviderKey != model.ProviderKey) { throw new UserFriendlyException(L("CouldNotValidateExternalUser")); } return(userInfo); }
private async Task <User> RegisterExternalUserAsync(ExternalAuthUserInfo externalUser) { var user = await _userRegistrationManager.RegisterAsync <MemberUser>( externalUser.Name, externalUser.Surname, externalUser.EmailAddress, externalUser.EmailAddress, Authorization.Users.User.CreateRandomPassword(), true ); if (externalUser is WechatMiniAuthUserInfo) { user.SessionKey = (externalUser as WechatMiniAuthUserInfo).SessionKey; } if (externalUser is WechatH5AuthUserInfo) { //缓存access token 干啥用? var h5User = externalUser as WechatH5AuthUserInfo; user.WechatH5RefreshToken = h5User.RefreshToken; user.WechatH5RefreshTokenExpiredIn = DateTime.Now.AddDays(30); user.NickName = h5User.NickName; user.Province = h5User.Province; user.City = h5User.City; user.Gender = h5User.Gender; user.Country = h5User.Country; user.HeadLogo = h5User.HeadLogo; user.UnionId = h5User.UnionId; user.OpenId = h5User.OpenId; } user.Logins = new List <UserLogin> { new UserLogin { LoginProvider = externalUser.Provider, ProviderKey = externalUser.ProviderKey, TenantId = user.TenantId } }; await CurrentUnitOfWork.SaveChangesAsync(); return(user); }
/// <summary> /// Gets the user information. /// </summary> /// <param name="accessCode">The access code.</param> /// <returns></returns> public override async Task <ExternalAuthUserInfo> GetUserInfo(string accessCode) { var oauthApi = new OAuthApi(); var oAuthTokenApiResult = oauthApi.Get(accessCode); if (!oAuthTokenApiResult.IsSuccess()) { return(null); } var weChatUser = oauthApi.GetUserInfo(oAuthTokenApiResult.AccessToken, oAuthTokenApiResult.OpenId); var externalAuthUserInfo = new ExternalAuthUserInfo { EmailAddress = weChatUser.OpenId + "@test.cn", Surname = weChatUser.NickName, ProviderKey = weChatUser.OpenId, Provider = Name, Name = weChatUser.OpenId }; return(await Task.FromResult(externalAuthUserInfo)); }
private async Task <User> RegisterExternalUserAsync(ExternalAuthUserInfo externalLoginInfo) { var user = await _userRegistrationManager.RegisterAsync( externalLoginInfo.FirstName, externalLoginInfo.LastName, externalLoginInfo.UserName, externalLoginInfo.YourName, externalLoginInfo.ContentType, externalLoginInfo.ContentVolume, externalLoginInfo.Industry, externalLoginInfo.IsContentShedule, externalLoginInfo.CMS, externalLoginInfo.Website, externalLoginInfo.Company, externalLoginInfo.UserType, externalLoginInfo.PhoneNumber, externalLoginInfo.EmailAddress, externalLoginInfo.Password, true ); user.Logins = new List <UserLogin> { new UserLogin { LoginProvider = externalLoginInfo.Provider, ProviderKey = externalLoginInfo.ProviderKey, TenantId = user.TenantId } }; await CurrentUnitOfWork.SaveChangesAsync(); return(user); }
private async Task <User> RegisterExternalUserAsync(ExternalAuthUserInfo externalUser) { var user = await _userRegistrationManager.RegisterAsync( externalUser.Name, externalUser.EmailAddress, externalUser.EmailAddress, UserManagerment.Users.User.CreateRandomPassword(), true ); if (Uri.TryCreate(externalUser.AvatarUrl, UriKind.Absolute, out var uri)) { using (var httpClient = new HttpClient()) { var avatarBytes = await httpClient.GetByteArrayAsync(uri); var storedFile = new DataFileObject(AbpSession.TenantId, avatarBytes); await _dataFileObjectManager.SaveAsync(storedFile); user.ProfilePictureId = storedFile.Id; } } user.Logins = new List <UserLogin> { new UserLogin { LoginProvider = externalUser.Provider, ProviderKey = externalUser.ProviderKey, TenantId = user.TenantId } }; await CurrentUnitOfWork.SaveChangesAsync(); return(user); }
public virtual string GetUserNameFromExternalAuthUserInfo(ExternalAuthUserInfo userInfo) { return(userInfo.EmailAddress.ToMd5()); }
public async Task <ExternalAuthenticateResultModel> ExternalAuthenticate([FromBody] ExternalAuthenticateModel model) { var loginResult = await _logInManager.LoginAsync(new UserLoginInfo(model.AuthProvider, model.ProviderKey, model.AuthProvider), GetTenancyNameOrNull()); if (loginResult.Identity != null) { await _signInManager.SignInAsync(loginResult.Identity, true); } await UnitOfWorkManager.Current.SaveChangesAsync(); switch (loginResult.Result) { case AbpLoginResultType.Success: { var accessToken = CreateAccessToken(CreateJwtClaims(loginResult.Identity)); return(new ExternalAuthenticateResultModel { AccessToken = accessToken, EncryptedAccessToken = GetEncrpyedAccessToken(accessToken), ExpireInSeconds = (int)_configuration.Expiration.TotalSeconds }); } case AbpLoginResultType.UnknownExternalLogin: { var externalUser = new ExternalAuthUserInfo() { EmailAddress = model.EmailAddress, Name = model.Name, Provider = model.AuthProvider, ProviderKey = model.ProviderKey, Surname = model.Surname }; var newUser = await RegisterExternalUserAsync(externalUser); if (!newUser.IsActive) { return(new ExternalAuthenticateResultModel { WaitingForActivation = true }); } // Try to login again with newly registered user! loginResult = await _logInManager.LoginAsync(new UserLoginInfo(model.AuthProvider, model.ProviderKey, model.AuthProvider), GetTenancyNameOrNull()); if (loginResult.Result != AbpLoginResultType.Success) { throw _abpLoginResultTypeHelper.CreateExceptionForFailedLoginAttempt( loginResult.Result, model.ProviderKey, GetTenancyNameOrNull() ); } return(new ExternalAuthenticateResultModel { AccessToken = CreateAccessToken(CreateJwtClaims(loginResult.Identity)), ExpireInSeconds = (int)_configuration.Expiration.TotalSeconds }); } default: { throw _abpLoginResultTypeHelper.CreateExceptionForFailedLoginAttempt( loginResult.Result, model.ProviderKey, GetTenancyNameOrNull() ); } } }