public static void SingIn(IOwinContext owinContext, User user, ExternalLoginModel externalLogin) { owinContext.Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); var claimsMapper = new RegisteredExternal(user, externalLogin); var oAuthIdentity = CreateIdentity(claimsMapper, OAuthDefaults.AuthenticationType); var cookieIdentity = CreateIdentity(claimsMapper, CookieAuthenticationDefaults.AuthenticationType); var properties = CreateProperties(user); owinContext.Authentication.SignIn(properties, oAuthIdentity, cookieIdentity); }
public RegisteredExternal(User user, ExternalLoginModel extLogin) { this.Id = user.Id.ToString(); this.Email = user.Email; this.FullName = user.FullName ?? string.Empty; this.AvatarUrl = UserProvider.GetAvatarUrl(user); this.Sid = extLogin.ProviderKey; this.Version = this.GetVersion(user.TimeStamp); this.IsVerified = user.IsVerified.ToString(); this.Issuer = ClaimsIdentity.DefaultIssuer; this.OriginalIssuer = extLogin.Provider.ToString(); }
public NotRegisteredExternal(ExternalLoginModel extLogin) { this.Id = string.Empty; this.Email = extLogin.Email ?? string.Empty; this.FullName = extLogin.FullName ?? string.Empty; this.AvatarUrl = extLogin.AvatarUrl ?? string.Empty; this.Sid = extLogin.ProviderKey; this.Version = string.Empty; this.IsVerified = false.ToString(); this.Issuer = extLogin.Provider.ToString(); this.OriginalIssuer = this.Issuer; }
public async Task<User> CreateExternalAsync(ExternalLoginModel externalInfo) { var userRegistration = new UserRegistration() { Email = externalInfo.Email, FullName = externalInfo.FullName, Avatar = await GetExternalAvatarAsync(externalInfo), ExternalLoginInfo = new ExternalLoginInfo { ProviderType = externalInfo.Provider, ProviderKey = externalInfo.ProviderKey } }; return await this.UsersManager.CreateUserAsync(userRegistration); }
public static ExternalLoginModel FromIdentity(ClaimsIdentity identity) { if (identity == null) { return null; } Claim idClaim = identity.FindFirst(ClaimTypes.NameIdentifier); if (!IsOk(idClaim)) return null; ExternalLoginModel result = new ExternalLoginModel(); result.IsRegistered = (idClaim.Issuer == ClaimsIdentity.DefaultIssuer); ExternalLoginProvider loginProvider; if (!Enum.TryParse<ExternalLoginProvider>(idClaim.OriginalIssuer, ignoreCase: true, result: out loginProvider)) return null; result.Provider = loginProvider; if (identity.AuthenticationType == DefaultAuthenticationTypes.ExternalCookie) { result.ProviderKey = idClaim.Value; result.Email = identity.FindFirstValue(ClaimTypes.Email); result.FullName = loginProvider == ExternalLoginProvider.Facebook ? identity.FindFirstValue("urn:facebook:name") : identity.FindFirstValue(ClaimTypes.Name); } else { result.ProviderKey = identity.FindFirstValue(ClaimTypes.Sid); result.Email = identity.FindFirstValue(ClaimTypes.Email); result.FullName = identity.FindFirstValue(ClaimTypes.GivenName); } result.AvatarUrl = identity.FindFirstValue(OwinHelper.ClaimTypeAvatarUrl); return result; }
public static UserViewModel MapUserToViewModel(User user, ExternalLoginModel externalLogin) { return new UserViewModel { Email = user.Email, FullName = user.FullName, IsVerified = user.IsVerified, AvatarUrl = GetAvatarUrl(user), IsRegistered = true, LoginProvider = externalLogin.Provider.ToString() }; }
private static Task<byte[]> GetExternalAvatarAsync(ExternalLoginModel externalInfo) { if (string.IsNullOrEmpty(externalInfo.AvatarUrl)) return null; var client = HttpHelper.CreateHttpClient(); return client.GetByteArrayAsync(externalInfo.AvatarUrl); }
public static void SingIn(IOwinContext owinContext, ExternalLoginModel externalLogin) { var claimsMapper = new NotRegisteredExternal(externalLogin); var identity = CreateIdentity(claimsMapper, OAuthDefaults.AuthenticationType); owinContext.Authentication.SignIn(identity); }
public static AccessToken CreateToken(IOwinContext owinContext, User user, ExternalLoginModel externalLogin) { var claimsMapper = new RegisteredExternal(user, externalLogin); return CreateToken(owinContext, user, claimsMapper); }