public static ProfileViewModel CreateModel(ExternalLoginInfo loginInfo) { if (loginInfo == null) throw new ArgumentNullException("loginInfo"); var model = new ProfileViewModel(); model.Name = loginInfo.ExternalIdentity.Name; model.Email = loginInfo.Email; var claim = loginInfo.ExternalIdentity.Claims.FirstOrDefault(c => c.Type == "urn:facebook:first_name"); if (claim != null) model.FirstName = claim.Value; claim = loginInfo.ExternalIdentity.Claims.FirstOrDefault(c => c.Type == "urn:facebook:last_name"); if (claim != null) model.LastName = claim.Value; claim = loginInfo.ExternalIdentity.Claims.FirstOrDefault(c => c.Type == "urn:facebook:gender"); if (claim != null) model.Gender = claim.Value; DateTime birthDay = DateTime.MinValue; claim = loginInfo.ExternalIdentity.Claims.FirstOrDefault(c => c.Type == "urn:facebook:birthday"); if (claim != null && DateTime.TryParseExact(claim.Value, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out birthDay)) model.BirthDay = birthDay; return model; }
public async Task ExternalSignInAsync_ExternalDisabledUser_UserNotSignedIn() { mMembershipFakeFactory.UserExternal.Enabled = false; UserInfoProvider.SetUserInfo(mMembershipFakeFactory.UserExternal); var externalLoginInfo = new Microsoft.AspNet.Identity.Owin.ExternalLoginInfo { Login = new UserLoginInfo(mMembershipFakeFactory.ExternalLogin.LoginProvider, mMembershipFakeFactory.ExternalLogin.IdentityKey) }; var result = await mSignInManager.ExternalSignInAsync(externalLoginInfo, false); CMSAssert.All( () => Assert.AreEqual(SignInStatus.LockedOut, result), () => Assert.IsNull(mOwinContext.Authentication.AuthenticationResponseGrant)); }
public async Task ExternalSignInAsync_ClaimsContainCorrectSecurityStamp() { var externalLoginInfo = new Microsoft.AspNet.Identity.Owin.ExternalLoginInfo { Login = new UserLoginInfo(mMembershipFakeFactory.ExternalLoginWithSecurityStamp.LoginProvider, mMembershipFakeFactory.ExternalLoginWithSecurityStamp.IdentityKey) }; var result = await mSignInManager.ExternalSignInAsync(externalLoginInfo, false); var claims = mOwinContext.Authentication.AuthenticationResponseGrant.Identity.Claims; CMSAssert.All( () => Assert.AreEqual(SignInStatus.Success, result), () => Assert.AreEqual(4, claims.Count()), () => Assert.IsTrue(claims.Any(x => x.Value == MembershipFakeFactory.SECURITY_STAMP), "Security stamp in claims is incorrect.")); }
private static void SetCommenterValuesFromResponse(ExternalLoginInfo response, Commenter commenter) { var claims = response.ExternalIdentity; var emailClaim = claims.FindFirst(ClaimTypes.Email); var nameClaim = claims.FindFirst(ClaimTypes.Name); var urlClaim = claims.FindFirst("urn:google:profile"); if (string.IsNullOrWhiteSpace(commenter.Email) && emailClaim != null && string.IsNullOrWhiteSpace(emailClaim.Value) == false) commenter.Email = emailClaim.Value; if (string.IsNullOrWhiteSpace(commenter.Name) && nameClaim != null && string.IsNullOrWhiteSpace(nameClaim.Value) == false) commenter.Name = nameClaim.Value; if (string.IsNullOrWhiteSpace(commenter.Url) && urlClaim != null && string.IsNullOrWhiteSpace(urlClaim.Value) == false) commenter.Url = urlClaim.Value; }
public async Task ExternalSignInAsync_ExternalUser_UserSignedIn() { var externalLoginInfo = new Microsoft.AspNet.Identity.Owin.ExternalLoginInfo { Login = new UserLoginInfo(mMembershipFakeFactory.ExternalLogin.LoginProvider, mMembershipFakeFactory.ExternalLogin.IdentityKey) }; var result = await mSignInManager.ExternalSignInAsync(externalLoginInfo, false); var claims = mOwinContext.Authentication.AuthenticationResponseGrant.Identity.Claims; CMSAssert.All( () => Assert.AreEqual(SignInStatus.Success, result), () => Assert.AreEqual(4, claims.Count()), () => Assert.IsTrue(claims.Any(x => x.Value == mMembershipFakeFactory.UserExternal.UserID.ToString()), "ID claim missing"), () => Assert.IsTrue(claims.Any(x => x.Value == mMembershipFakeFactory.UserExternal.UserName), "Name claim missing"), () => Assert.IsTrue(claims.Any(x => x.Value == mMembershipFakeFactory.UserExternal.UserSecurityStamp), "Security stamp claim missing")); }
protected override string CreateUniqueUserName(Microsoft.AspNet.Identity.UserManager <ApplicationUser> userManager, Microsoft.AspNet.Identity.Owin.ExternalLoginInfo externalLoginInfo) { Assert.ArgumentNotNull((object)userManager, nameof(userManager)); Assert.ArgumentNotNull((object)externalLoginInfo, nameof(externalLoginInfo)); IdentityProvider identityProvider = this.FederatedAuthenticationConfiguration.GetIdentityProvider(externalLoginInfo.ExternalIdentity); if (identityProvider == null) { throw new InvalidOperationException("Unable to retrieve identity provider for given identity"); } string domain = identityProvider.Domain; string email = externalLoginInfo.DefaultUserName; // return email and domain return($"{domain}\\\\\\\\{email}"); }