public void LoadUserAuth_By_Name() { // Arrange var userAuth = Sut.CreateUserAuth(NewUserAuth, Password); var authSession = new AuthUserSession { UserAuthName = userAuth.UserName }; var tokens = new AuthTokens(); // Act Sut.LoadUserAuth(authSession, tokens); // Assert authSession.UserName.Should().Be(userAuth.UserName); }
public Session GetValidSession(Guid sessionId) { if (sessionId == default(Guid)) { throw new UnauthorizedException("Se requiere Identificador de Sesion"); } Session authSession = AuthUserSession[sessionId]; if (authSession != default(Session)) { Console.WriteLine("ServiceAuthProvider sessionId {0}", authSession.Id); AuthUserSession.Refresh(authSession); return(authSession); } throw new UnauthorizedException("No Existe Sesion con Id: " + sessionId); }
public void Should_SaveUserAuth() { // Arrange var userAuth = Sut.CreateUserAuth(NewUserAuth, Password); var authUserSession = new AuthUserSession { UserAuthId = userAuth.Id.ToString() }; // Act Sut.SaveUserAuth(authUserSession); // Assert var updatedUserAuth = Sut.GetUserAuth(userAuth.Id.ToString()); updatedUserAuth.ModifiedDate.Should().BeAfter(userAuth.ModifiedDate); }
protected override void LoadUserAuthInfo(AuthUserSession userSession, IAuthTokens tokens, Dictionary <string, string> authInfo) { var idAuthTokens = tokens as IdentityServerAuthTokens; if (!string.IsNullOrWhiteSpace(idAuthTokens?.IdToken)) { #if NETSTANDARD1_6 var jwtToken = new System.IdentityModel.Tokens.Jwt.JwtSecurityToken(idAuthTokens.IdToken); #elif NET45 var jwtToken = new System.IdentityModel.Tokens.JwtSecurityToken(idAuthTokens.IdToken); #endif idAuthTokens.Issuer = jwtToken.Issuer; idAuthTokens.Subject = jwtToken.Subject; foreach (var claim in jwtToken.Claims) { switch (claim.Type) { case JwtClaimTypes.Expiration: idAuthTokens.Expiration = claim.Value; break; case JwtClaimTypes.Audience: idAuthTokens.Audience = claim.Value; break; case JwtClaimTypes.IssuedAt: idAuthTokens.IssuedAt = claim.Value; break; case JwtClaimTypes.AuthenticationTime: idAuthTokens.AuthenticationTime = claim.Value; break; case JwtClaimTypes.Nonce: idAuthTokens.Nonce = claim.Value; break; } } } base.LoadUserAuthInfo(userSession, tokens, authInfo); }
public static RegisterService GetRegistrationService( IUserAuthRepository userAuthRepository, AuthUserSession oAuthUserSession = null, BasicRequest request = null) { if (request == null) { request = new BasicRequest(); } if (oAuthUserSession == null) { oAuthUserSession = request.ReloadSession(); } oAuthUserSession.Id = request.Response.CreateSessionId(request); request.Items[SessionFeature.RequestItemsSessionKey] = oAuthUserSession; var mockAppHost = new BasicAppHost(); mockAppHost.Container.Register <IAuthRepository>(userAuthRepository); var authService = new AuthenticateService { Request = request, }; authService.SetResolver(mockAppHost); mockAppHost.Register(authService); var registrationService = new RegisterService { AuthRepo = userAuthRepository, Request = request, RegistrationValidator = new RegistrationValidator { UserAuthRepo = RegistrationServiceTests.GetStubRepo() }, }; registrationService.SetResolver(mockAppHost); return(registrationService); }
public void ShouldAbortIfStateValuesDoNotMatch() { // var appHost = TestServer.Current; var subject = new AzureAuthenticationProvider(new TestAzureGraphService()); var auth = new Authenticate { UserName = "******" }; subject.CallbackUrl = "http://localhost/myapp/"; var request = new MockHttpRequest("myapp", "GET", "text", "/myapp", new NameValueCollection { { "code", "code123" }, { "session_state", "dontcare" }, { "state", "state123" } }, Stream.Null, new NameValueCollection()); var mockAuthService = MockAuthService(request); using (new HttpResultsFilter { StringResultFn = (tokenRequest, s) => @"{ ""access_token"": ""fake token"", ""id_token"": ""eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctODkwYS0yNzRhNzJhNzMwOWUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83ZmU4MTQ0Ny1kYTU3LTQzODUtYmVjYi02ZGU1N2YyMTQ3N2UvIiwiaWF0IjoxMzg4NDQwODYzLCJuYmYiOjEzODg0NDA4NjMsImV4cCI6MTM4ODQ0NDc2MywidmVyIjoiMS4wIiwidGlkIjoiN2ZlODE0NDctZGE1Ny00Mzg1LWJlY2ItNmRlNTdmMjE0NzdlIiwib2lkIjoiNjgzODlhZTItNjJmYS00YjE4LTkxZmUtNTNkZDEwOWQ3NGY1IiwidXBuIjoiZnJhbmttQGNvbnRvc28uY29tIiwidW5pcXVlX25hbWUiOiJmcmFua21AY29udG9zby5jb20iLCJzdWIiOiJKV3ZZZENXUGhobHBTMVpzZjd5WVV4U2hVd3RVbTV5elBtd18talgzZkhZIiwiZmFtaWx5X25hbWUiOiJNaWxsZXIiLCJnaXZlbl9uYW1lIjoiRnJhbmsifQ."" }" }) { var session = new AuthUserSession { State = "state133" // Not the same as the state in the request above }; try { subject.Authenticate(mockAuthService.Object, session, auth); } catch (UnauthorizedAccessException) { } Assert.False(session.IsAuthenticated); } }
public void LoadUserAuth_By_Token() { // Arrange var userAuth = Sut.CreateUserAuth(NewUserAuth, Password); CreateUserAuthDetails(userAuth, "google"); var authSession = new AuthUserSession(); var tokens = new AuthTokens { UserId = userAuth.Id.ToString(), Provider = "google" }; // Act Sut.LoadUserAuth(authSession, tokens); // Assert authSession.UserName.Should().Be(userAuth.UserName); }
public void ShouldNotAttemptAuthenticationAgainstUnRegisteredDirectory() { using (AadAuthProviderTest.TestAppHost()) { var request = new MockHttpRequest("myapp", "GET", "text", "/myapp", new NameValueCollection { { "redirect", "http://localhost/myapp/secure-resource" } }, Stream.Null, null); var mockAuthService = MockAuthService(_directoryRepository, request); var session = new AuthUserSession(); var username = "******"; var exception = Assert.Throws <UnauthorizedAccessException>(() => Subject.Authenticate(mockAuthService.Object, session, new Authenticate() { UserName = username, provider = AadMultiTenantAuthProvider.Name })); Assert.AreEqual($"Directory not found: @notregistered.com", exception.Message); } }
public Session CreateSession(LoginData userData, string ipAddress, string userAgent) { var response = Validate(userData); if (response == default(Usuario)) { throw new UnauthenticatedException("Usuario No Autenticado"); } if (!response.Activo) { throw new UnauthenticatedException("Usuario se encuentra inactivo"); } return(AuthUserSession.Add( new UserBase() { Name = response.Nombre, UserId = response.Id.ToString() }, ipAddress, userAgent)); }
protected override Task LoadUserAuthInfoAsync(AuthUserSession userSession, IAuthTokens tokens, Dictionary <string, string> authInfo, CancellationToken token = default) { tokens.Gender = authInfo["gender"]; if (tokens.Gender != "none") { userSession.Gender = tokens.Gender; } if (authInfo.ContainsKey("phone")) { tokens.PhoneNumber = authInfo["phone"]; } userSession.PhoneNumber = tokens.PhoneNumber ?? userSession.PhoneNumber; if (authInfo.ContainsKey("birthday")) { tokens.BirthDateRaw = authInfo["birthday"]; if (long.TryParse(tokens.BirthDateRaw, out var unixDateTime)) { tokens.BirthDate = unixDateTime.FromUnixTime(); } } userSession.BirthDateRaw = tokens.BirthDateRaw ?? userSession.BirthDateRaw; userSession.BirthDate = tokens.BirthDate ?? userSession.BirthDate; if (authInfo.ContainsKey("facebook")) { userSession.FacebookUserId = authInfo["facebook"]; } if (authInfo.ContainsKey("twitter")) { userSession.TwitterUserId = authInfo["twitter"]; } userSession.UserAuthName = tokens.Email; return(TypeConstants.EmptyTask); }
public void LoadUserAuthInfo(AuthUserSession userSession, IAuthTokens tokens, Dictionary <string, string> authInfo) { if (userSession == null) { return; } #if !MONO try { using var pc = new PrincipalContext(ContextType.Domain); var user = UserPrincipal.FindByIdentity(pc, userSession.UserAuthName); if (user == null) { return; } tokens.DisplayName = user.DisplayName; tokens.Email = user.EmailAddress; tokens.FirstName = user.GivenName; tokens.LastName = user.Surname; tokens.FullName = (string.IsNullOrWhiteSpace(user.MiddleName)) ? $"{user.GivenName} {user.Surname}" : $"{user.GivenName} {user.MiddleName} {user.Surname}"; tokens.PhoneNumber = user.VoiceTelephoneNumber; userSession.UserAuthName = tokens.Email ?? tokens.UserName; } catch (MultipleMatchesException mmex) { Log.Error("Multiple windows user info for '{0}'".Fmt(userSession.UserAuthName), mmex); } catch (Exception ex) { Log.Error("Could not retrieve windows user info for '{0}'".Fmt(tokens.DisplayName), ex); } #endif }
public void CreateOrMergeAuthSession_Update() { // Arrange var userAuth = Sut.CreateUserAuth(NewUserAuth, Password); var userAuthDetails = CreateUserAuthDetails(userAuth, "google"); var authSession = new AuthUserSession(); var tokens = new AuthTokens { UserId = userAuth.Id.ToString(), Provider = "google", City = userAuthDetails.City }; // Act var result = Sut.CreateOrMergeAuthSession(authSession, tokens); // Assert result.Id.Should().BeGreaterThan(0); result.Id.Should().Be(result.UserAuthId); result.ModifiedDate.Should().BeAfter(userAuth.ModifiedDate); result.City.Should().Be(userAuthDetails.City); }
public void LoadUserAuthInfo(AuthUserSession userSession, IAuthTokens tokens, Dictionary<string, string> authInfo) { if (userSession == null) return; using (var pc = new PrincipalContext(ContextType.Domain)) { var user = UserPrincipal.FindByIdentity(pc, userSession.UserAuthName); tokens.DisplayName = user.DisplayName; tokens.Email = user.EmailAddress; tokens.FirstName = user.GivenName; tokens.LastName = user.Surname; tokens.FullName = string.IsNullOrWhiteSpace(user.MiddleName) ? "{0} {1}".Fmt(user.GivenName, user.Surname) : "{0} {1} {2}".Fmt(user.GivenName, user.MiddleName, user.Surname); tokens.PhoneNumber = user.VoiceTelephoneNumber; } }