Beispiel #1
0
        public Task <Result <AuthenticateResponseModel> > Authenticate(AuthenticateRequestModel model, string ipAddress)
        {
            try
            {
                var user = _userLoginService.Authenticate(model);

                if (user == null)
                {
                    return(Task.FromResult(ResultMessage <AuthenticateResponseModel> .Error(Constants.NotFoundUserLogin)));
                }

                var employee = _employeeService.GetEmployee(user.FkEmpId ?? 0);

                var jwtToken = GenerateJwtToken(user);

                var refreshToken = GenerateRefreshToken(ipAddress, model.Username);

                _refreshTokenService.CreateRefreshToken(refreshToken);

                var resultAuthentication = new AuthenticateResponseModel(employee, jwtToken, refreshToken.Token, user.Role);

                return(Task.FromResult(ResultMessage <AuthenticateResponseModel> .Success(resultAuthentication)));
            }
            catch (Exception ex)
            {
                return(Task.FromResult(ResultMessage <AuthenticateResponseModel> .ExceptionError(ex)));
            }
        }
        private async void ExecuteLoginCommand()
        {
            if (GlobalVariables.ServerIsOnline)
            {
                RequestIsWorking = true;

                HttpResponseMessage resp = await Client.PostAsJsonAsync(GlobalVariables.BackendServer_URL + "/api/Users/authenticate", authenticate);

                RequestIsWorking = false;
                if (resp.IsSuccessStatusCode)
                {
                    AuthenticateResponseModel Response = await resp.Content.ReadAsAsync <AuthenticateResponseModel>();

                    GlobalVariables.Token = Response.Token;
                    await LoadingVorbelegung(Response.Id);

                    Messenger.Default.Send(new AktualisiereBerechtigungenMessage());
                    Messenger.Default.Send(new OpenViewMessage {
                        ViewType = ViewType.viewWertpapierUebersicht
                    });
                    Messenger.Default.Send(new CloseViewMessage(), "Login");
                }
                else if (resp.StatusCode == System.Net.HttpStatusCode.BadRequest)
                {
                    SendExceptionMessage("User oder Passwort ist falsch");
                }
            }
        }
Beispiel #3
0
        public async Task <AuthenticateResponseModel> GetUserByAccessTokenAsync(string token)
        {
            AuthenticateResponseModel request = new AuthenticateResponseModel();

            request.Token = token;
            string responseString = await CallAsync(GetByTokenServiceName, JsonConvert.SerializeObject(request), MethodTypeEnum.POST, token);

            AuthenticateResponseModel response = JsonConvert.DeserializeObject <AuthenticateResponseModel>(responseString);

            return(response);
        }
        public async Task MarkUserAsAuthenticated(AuthenticateResponseModel user)
        {
            await _localStorageService.SetItemAsync("accessToken", user.Token);

            await _localStorageService.SetItemAsync("refreshToken", user.Token);

            _state.userState = user;
            var identity = GetClaimsIdentity(user);

            var claimsPrincipal = new ClaimsPrincipal(identity);

            NotifyAuthenticationStateChanged(Task.FromResult(new AuthenticationState(claimsPrincipal)));
        }
        private ClaimsIdentity GetClaimsIdentity(AuthenticateResponseModel user)
        {
            var claimsIdentity = new ClaimsIdentity();

            if (user.Username != null)
            {
                claimsIdentity = new ClaimsIdentity(new[]
                {
                    new Claim(ClaimTypes.Name, user.Username)
                }, "apiauth_type");
            }

            return(claimsIdentity);
        }
Beispiel #6
0
        public IActionResult GetByToken(AuthenticateResponseModel userRequest)
        {
            User user = _userService.GetById(Convert.ToInt32(HttpContext.User.Identity.Name));

            return(Ok(new AuthenticateResponseModel {
                ID = user.ID,
                FirstName = user.FirstName,
                LastName = user.LastName,
                Result = "",
                Token = userRequest.Token,
                Username = user.Email,
                TeamList = GetTeams(user)
            }));
        }
Beispiel #7
0
        public async Task <AuthenticateResponseModel> Authenticate(AuthenticateModel user)
        {
            AuthenticateModel request = new AuthenticateModel {
                Email = user.Email, Remember = user.Remember
            };

            using (var hmac = new System.Security.Cryptography.HMACSHA512(Convert.FromBase64String(AppSettings.HashKey)))
            {
                request.Password = Convert.ToBase64String(hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(user.Password)));
            }
            string responseString = await CallAsync(AuthenticationServiceName, JsonConvert.SerializeObject(request), MethodTypeEnum.POST, null);

            AuthenticateResponseModel response = JsonConvert.DeserializeObject <AuthenticateResponseModel>(responseString);

            return(response);
        }
        public async Task <IActionResult> Authenticate(AuthenticateModel model)
        {
            AuthenticateResponseModel response = await _userService.AuthenticateAsync(new AuthenticateRequestModel
            {
                Secret   = _configuration["Security:Secret"],
                Username = model.UserName,
                Password = model.Password,
            });

            if (response == null)
            {
                return(BadRequest(new { message = "Username or password is incorrect" }));
            }

            return(Ok(response));
        }
Beispiel #9
0
        public async Task <AuthenticateResponseModel> Login(AuthenticateRequestModel model)
        {
            var user = _dataContext.AppUsers.Where(x => x.Username == model.Username).FirstOrDefault();

            if (user == null)
            {
                throw new Exception(IUserService.Message_UserOrPasswordIsWrong);
            }
            bool verified       = false;
            var  passwordHasher = new PasswordHasher <User>();

            var result = passwordHasher.VerifyHashedPassword(user, user.Password, model.Password);

            if (result == PasswordVerificationResult.Success)
            {
                verified = true;
            }
            else if (result == PasswordVerificationResult.SuccessRehashNeeded)
            {
                verified = true;
            }
            else if (result == PasswordVerificationResult.Failed)
            {
                verified = false;
            }

            if (verified == false)
            {
                throw new Exception(IUserService.Message_UserOrPasswordIsWrong);
            }

            // authentication successful so generate jwt token
            var token = generateJwtToken(user);

            var authenResponse = new AuthenticateResponseModel(user, token);

            var query = (from ur in _dataContext.UserRoles
                         join rp in _dataContext.RolePermissons on ur.RoleId equals rp.RoleId
                         join p in _dataContext.Permissons on rp.PermissionId equals p.Id
                         select p.Key).Distinct();

            authenResponse.Rights = query.ToList();
            return(authenResponse);
        }
        public override async Task <AuthenticationState> GetAuthenticationStateAsync()
        {
            var accessToken = await _localStorageService.GetItemAsync <string>("accessToken");

            ClaimsIdentity identity        = new ClaimsIdentity();
            var            claimsPrincipal = new ClaimsPrincipal();

            if (accessToken != null && accessToken != string.Empty)
            {
                AuthenticateResponseModel user = await _service.GetUserByAccessTokenAsync(accessToken);

                if (user != null)
                {
                    _state.userState = user;
                    identity         = GetClaimsIdentity(user);
                    claimsPrincipal  = new ClaimsPrincipal(identity);
                }
            }
            return(await Task.FromResult(new AuthenticationState(claimsPrincipal)));
        }
Beispiel #11
0
        public Task <Result <AuthenticateResponseModel> > RefreshToken(string token, string ipAddress)
        {
            try
            {
                var refreshToken = _refreshTokenService.GetRefreshTokenByToken(token);
                if (refreshToken == null)
                {
                    return(Task.FromResult(ResultMessage <AuthenticateResponseModel> .Error(Constants.InvalidToken)));
                }

                if (!refreshToken.IsActive && !refreshToken.IsExpired)
                {
                    return(Task.FromResult(ResultMessage <AuthenticateResponseModel> .Error(Constants.TokenExpired)));
                }

                var user = _userLoginService.GetAllUser().FirstOrDefault(f => f.Username == refreshToken.CreateByUser);

                if (user == null)
                {
                    return(Task.FromResult(ResultMessage <AuthenticateResponseModel> .Error(Constants.NotFoundUserLogin)));
                }

                var employee = _employeeService.GetEmployee(user.FkEmpId ?? 0);

                var jwtToken = GenerateJwtToken(user);

                var resultAuthentication = new AuthenticateResponseModel(employee, jwtToken, refreshToken.Token, user.Role);

                return(Task.FromResult(ResultMessage <AuthenticateResponseModel> .Success(resultAuthentication)));
            }
            catch (Exception ex)

            {
                return(Task.FromResult(ResultMessage <AuthenticateResponseModel> .ExceptionError(ex)));
            }
        }