Beispiel #1
0
        public LoginResponse AuthenticateUser(LoginRequest loginRequest)
        {
            var loginResponse = new LoginResponse();

            if (!userRepository.IsUserExists(loginRequest.UserName))
            {
                return(loginResponse);
            }

            loginResponse.IsUserExists = true;

            if (!userRepository.IsUserCredentialsValid(loginRequest.UserName, loginRequest.Password))
            {
                return(loginResponse);
            }

            var user            = userRepository.GetUserDetails(loginRequest.UserName);
            var jwtTokenRequest = new JwtTokenRequest
            {
                Email        = user.Email,
                FirstName    = user.FirstName,
                LastName     = user.LastName,
                JsonWebToken = landmarkService.GetJsonWebTokenSection()
            };

            loginResponse.Token = jwtTokenService.GenerateJwtToken(jwtTokenRequest);

            return(loginResponse);
        }
Beispiel #2
0
        public async Task RequestTokenAsync_SendCorrectRequest_ReturnToken()
        {
            const string expectedToken        = "TestToken";
            var          expectedTokenRequest = new JwtTokenRequest
            {
                UserName = "******",
                Password = "******",
                Domain   = "domain"
            };

            var mockHttpClientContext = new MockHttpClientContext();

            mockHttpClientContext
            .Respond()
            .ReturnJson(new { specificAuthToken = expectedToken });

            var jwtClient = new JwtClient(mockHttpClientContext.CreateClient());

            var tokenInfo =
                await jwtClient.RequestTokenAsync(new Uri("http://test.com/auth"), expectedTokenRequest);

            Assert.Equal(expectedToken, tokenInfo);

            mockHttpClientContext
            .CallShouldBeMade("http://test.com/auth")
            .WithVerb(HttpMethod.Post)
            .WithContentType(ContentMediaTypes.Application.Json)
            .WithContentText(JsonSerializer.Serialize(expectedTokenRequest,
                                                      new JsonSerializerOptions()
            {
                PropertyNamingPolicy = JsonNamingPolicy.CamelCase
            }));
        }
        public async Task <IActionResult> Login(JwtTokenRequest request)
        {
            if (request == null)
            {
                return(BadRequest("Invalid client request"));
            }

            var rResult = await _authService.AuthenticateRequest(request);

            return(Ok(rResult));
        }
        public async Task <JwtRequestResult> AuthenticateRequest(JwtTokenRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var requestResult = new JwtRequestResult()
            {
                Succeeded = false,
                UserData  = null
            };

            var user = await _userManager.FindByEmailAsync(request.Email);

            if (user == null)
            {
                return(requestResult);
            }

            var result = await _signInManager.CheckPasswordSignInAsync(user, request.Password, false);

            if (!result.Succeeded)
            {
                return(requestResult);
            }

            var secretKey          = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_tokenModel.Secret));
            var signingCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);

            var claims = new[]
            {
                new Claim(ClaimTypes.Email, request.Email)
            };

            var jwt = new JwtSecurityToken(
                issuer: _tokenModel.Issuer,
                audience: _tokenModel.Audience,
                claims: claims,
                expires: DateTime.Now.AddMinutes(_tokenModel.AccessExpiration),
                signingCredentials: signingCredentials);


            requestResult.UserData = new UserDataDto()
            {
                Id   = user.Id,
                Name = user.UserName
            };
            requestResult.Succeeded = true;
            requestResult.Token     = new JwtSecurityTokenHandler().WriteToken(jwt);

            return(requestResult);
        }
Beispiel #5
0
        private Task <JwtToken> CreateJwtTokenAsync()
        {
            var jwtRequest = new JwtTokenRequest
            {
                Audience = new List <string> {
                    _application.ClientId.ToString()
                },
                Subject = _user.UserId.ToString()
            };

            return(_jwtTokenFactory.CreateJwtTokenAsync(jwtRequest));
        }
Beispiel #6
0
        private async Task CreateJwtTokenAsync()
        {
            var jwtRequest = new JwtTokenRequest
            {
                Audience = new List <string> {
                    _code.ClientId.ToString()
                },
                Subject = _code.UserId?.ToString(),
                Scope   = _code.Scope
            };

            _jwtToken = await _jwtTokenFactory.CreateJwtTokenAsync(jwtRequest);
        }
Beispiel #7
0
        private Task <JwtToken> CreateJwtTokenAsync()
        {
            var jwtRequest = new JwtTokenRequest
            {
                Audience = new List <string> {
                    _refreshToken.Application.ClientId.ToString()
                },
                Subject = _refreshToken.UserId.ToString(),
                Scope   = _scope
            };

            return(_jwtTokenFactory.CreateJwtTokenAsync(jwtRequest));
        }
Beispiel #8
0
        public HandleResult HandleRequest(JwtTokenRequest request)
        {
            var user = context.Users.Where(x => x.UserName == request.User && x.Password == request.Password).FirstOrDefault();

            if (user != null)
            {
                return(new HandleResult {
                    Success = true
                });
            }
            return(new HandleResult {
                Success = false, Message = "Invalid user / password"
            });
        }
Beispiel #9
0
 public HandleResult HandleRequest(JwtTokenRequest request)
 {
     if (request.User == "admin" && request.Password == "admin")
     {
         return(new HandleResult {
             Success = true
         });
     }
     else
     {
         return(new HandleResult {
             Success = false, Message = "Invalid user/password"
         });
     }
 }
Beispiel #10
0
        public async Task <IActionResult> Token([FromBody] JwtTokenRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var identity = GenerateClaimsIdentity(request.Name, request.Name);
            var jwt      = new JwtTokenResponse
            {
                Id          = identity.Claims.Single(c => c.Type == Constants.UserIdClaimTypeName).Value,
                AccessToken = await GenerateEncodedToken(request.Name, identity),
                ExpiresIn   = (long)_jwtIssuerOptions.ValidFor.TotalSeconds
            };

            return(Ok(jwt));
        }
        public string GenerateJwtToken(JwtTokenRequest request)
        {
            var securityKey       = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(request.JsonWebToken.SecretKey));
            var signinCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);

            var claims = new List <Claim> {
                new Claim(ClaimTypes.Email, request.Email),
                new Claim(ClaimTypes.Name, request.FirstName),
                new Claim(ClaimTypes.Surname, request.LastName)
            };
            var tokeOptions = new JwtSecurityToken(
                issuer: request.JsonWebToken.Domain,
                audience: request.JsonWebToken.Domain,
                claims: claims,
                expires: DateTime.Now.AddMinutes(5),
                signingCredentials: signinCredentials
                );

            var token = new JwtSecurityTokenHandler().WriteToken(tokeOptions);

            return(token);
        }
Beispiel #12
0
        public void GenerateJwtToken_Should_generate_and_return_token()
        {
            // Arrange
            jwtTokenSerivce = new JwtTokenService();

            var request = new JwtTokenRequest()
            {
                Email        = "*****@*****.**",
                FirstName    = "first",
                LastName     = "last",
                JsonWebToken = new JsonWebToken
                {
                    Domain    = "",
                    SecretKey = "thisIsSecrectKeyValue"
                }
            };

            // Act
            var response = jwtTokenSerivce.GenerateJwtToken(request);

            // Assert
            Assert.IsNotNull(response);
            Assert.IsTrue(response.Length > 50);
        }
Beispiel #13
0
 public Task <JwtTokenResponse> GetToken([FromBody] JwtTokenRequest request, CancellationToken cancellationToken)
 => Send(request, cancellationToken);
        public async Task <JwtTokenResponse> GetJwtToken(JwtTokenRequest request, CancellationToken cancellationToken)
        {
            var token = await GetJwtToken(request.Username !, request.Password !, cancellationToken);

            return(new JwtTokenResponse(token));
        }