public async Task <AuthenticatedAccountResponse> AuthenticateAsync(Account account)
        {
            string accessToken  = _accessTokenGenerator.GenerateToken(account);
            string refreshToken = _refreshTokenGenerator.GenerateToken();

            RefreshToken refreshTokenDTO = new RefreshToken()
            {
                Token     = refreshToken,
                AccountId = account.Id
            };
            await _refreshTokenRepository.CreateAsync(refreshTokenDTO);

            return(new AuthenticatedAccountResponse(accessToken, refreshToken));
        }
        public async Task <AuthenticatedUserResponse> Authenticate(User user)
        {
            string accessToken  = _accessTokenGenerator.GenerateToken(user);
            string refreshToken = _refreshTokenGenerator.GenerateToken();

            RefreshToken refreshTokenDTO = new RefreshToken()
            {
                Token  = refreshToken,
                UserId = user.Id
            };
            await _refreshTokenRepository.Create(refreshTokenDTO);

            return(new AuthenticatedUserResponse()
            {
                AccessToken = accessToken,
                RefreshToken = refreshToken
            });
        }
示例#3
0
        public Common.Message.AuthorizationResult CheckAccess(Common.Message.AuthorizationRequest request)
        {
            AuthorizationResult result         = new AuthorizationResult();
            TokenValidator      tokenValidator = new TokenValidator();

            var validationResult = tokenValidator.ValiateIdentityToken(request.IdentityToken);

            if (validationResult.IsError)
            {
                result.ErrorMessage = validationResult.Error;
                return(result);
            }
            AccessTokenGenerator generator = new AccessTokenGenerator();
            var accessToken = generator.GenerateToken(request.IdentityToken, request.Resource);

            result.AccessToken = accessToken;
            return(result);
        }
        public IActionResult Login(UserLogInDTO loginUser)
        {
            var user = new UserLogInDTO(
                loginUser.Email,
                loginUser.PasswordHash
                );

            if (!ModelState.IsValid)
            {
                return(BadRequest("That user does not exist!"));
            }

            var userdb = Context.Users.FirstOrDefault(u => (u.Email == user.Email));

            if (userdb == null)
            {
                return(Unauthorized());
            }


            bool isPwCorrect = PasswordHasher.VerifyPassword(user.PasswordHash, userdb.PasswordHash);

            if (!isPwCorrect)
            {
                return(Unauthorized());
            }

            string accessToken = AccessTokenGenerator.GenerateToken(userdb);

            Response.Cookies.Append("accessToken", accessToken, new CookieOptions
            {
                HttpOnly = true
            });

            return(Ok(new
            {
                message = "success"
            }));
        }
示例#5
0
        public async Task <IActionResult> LoginAsync(LoginModel model)
        {
            if (ModelState.IsValid is false)
            {
                return(BadRequest());
            }

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

            if (user is null || await _userManager.CheckPasswordAsync(user, model.Password) is false)
            {
                return(Unauthorized());
            }

            var authClaims = await GetUserAuthClaimsAsync(user);

            var authSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWT:Secret"]));

            string token = _accessTokenGenerator.GenerateToken(_configuration["JWT:ValidIssuer"],
                                                               _configuration["JWT:ValidAudience"], authClaims, authSigningKey);

            return(Ok(token));
        }