public ReadUserM Login(string email, string password) { ReadUserM user = new ReadUserM(); //비밀번호 검증 bool verified = userService.VerifyUser(email, password); // 비밀번호 검증 완료 시 if (verified) { UserT userEntity = userService.GetUserByEmail(email); user = mapper.Map <UserT, ReadUserM>(userEntity); // 토큰생성 TokenT authEntity = authService.CreateToken(user); TokenM token = mapper.Map <TokenT, TokenM>(authEntity); user.Token = token; } else { throw new IncorrectDataException("비밀번호가 올바르지 않습니다.", "비밀번호 오류", LayerID.AuthController); } logger.Log(LogLevel.Info, string.Format("호출 성공 : {0}", MethodBase.GetCurrentMethod().Name)); return(user); }
public Response <ReadUserM> ReadUser(string userNo) { Response <ReadUserM> response = new Response <ReadUserM>(); UserT userEntity = userService.GetUser(userNo); ReadUserM user = mapper.Map <UserT, ReadUserM>(userEntity); if (user != null) { response.Result = user; response.Status = ((int)HttpStatusCode.OK).ToString(); } else { throw new NotFoundException("사용자가 존재하지 않습니다.", "사용자 조회 오류", LayerID.UserController); } logger.Log(LogLevel.Info, string.Format("호출 성공 : {0}", MethodBase.GetCurrentMethod().Name)); return(response); }
public TokenM RefreshToken(string accessToken, string refreshToken) { TokenM tokenModel = new TokenM(); TokenT token = authService.ReadAccessToken(accessToken, refreshToken); DateTime validTo = new JwtSecurityTokenHandler().ReadJwtToken(accessToken).ValidTo; DateTime tokenExpiredTime = CommonHelper.GetDateTime(validTo); if (tokenExpiredTime < DateTime.Now) { UserT userEntity = userService.GetUser(token.UserNo); ReadUserM user = mapper.Map <UserT, ReadUserM>(userEntity); TokenT authEntity = authService.CreateToken(user); tokenModel = mapper.Map <TokenT, TokenM>(authEntity); } else { throw new BadRequestException("토큰 만료 시간이 유효합니다.", "토큰 오류", LayerID.AuthController); } logger.Log(LogLevel.Info, string.Format("호출 성공 : {0}", MethodBase.GetCurrentMethod().Name)); return(tokenModel); }
public TokenT CreateToken(ReadUserM user) { // authentication successful so generate jwt token var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(AppConfiguration.JwtSecret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Sid, user.UserNo) }), Expires = DateTime.Now.AddHours(2), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature), IssuedAt = DateTime.Now, Audience = "aud.allthatbts.com", Issuer = "api.allthatbts.com", }; var token = tokenHandler.CreateToken(tokenDescriptor); TokenT apiToken = new TokenT() { UserNo = user.UserNo, AccessToken = tokenHandler.WriteToken(token), AccessTokenExpireDate = tokenDescriptor.Expires.Value, RefreshToken = CreateRefreshToken(), RefreshTokenExpireDate = DateTime.Now.AddDays(7), Scope = null }; // 토큰 DB에 저장 authRepository.UpsertToken(apiToken); apiToken = authRepository.SelectToken(user.UserNo); return(apiToken); }