Skip to content

Commit

Permalink
#18 [Update] 로그인 관련 코드 패키지 이동
Browse files Browse the repository at this point in the history
  • Loading branch information
Anna-Jin committed Jul 15, 2022
1 parent a4a0331 commit 8224362
Show file tree
Hide file tree
Showing 32 changed files with 94 additions and 107 deletions.
7 changes: 0 additions & 7 deletions src/main/java/com/mpnp/baechelin/BaechelinApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,12 @@

import com.mpnp.baechelin.config.properties.AppProperties;
import com.mpnp.baechelin.config.properties.CorsProperties;
import io.netty.channel.ChannelOption;
import io.netty.handler.timeout.ReadTimeoutHandler;
import io.netty.handler.timeout.WriteTimeoutHandler;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.*;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import reactor.netty.http.client.HttpClient;

import java.time.Duration;
import java.util.concurrent.TimeUnit;


@EnableJpaAuditing
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

import com.mpnp.baechelin.config.properties.AppProperties;
import com.mpnp.baechelin.config.properties.CorsProperties;
import com.mpnp.baechelin.oauth.entity.RoleType;
import com.mpnp.baechelin.oauth.exception.RestAuthenticationEntryPoint;
import com.mpnp.baechelin.oauth.filter.TokenAuthenticationFilter;
import com.mpnp.baechelin.oauth.handler.OAuth2AuthenticationFailureHandler;
import com.mpnp.baechelin.oauth.handler.OAuth2AuthenticationSuccessHandler;
import com.mpnp.baechelin.oauth.handler.TokenAccessDeniedHandler;
import com.mpnp.baechelin.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository;
import com.mpnp.baechelin.oauth.service.CustomOAuth2UserService;
import com.mpnp.baechelin.oauth.token.AuthTokenProvider;
import com.mpnp.baechelin.user.repository.UserRefreshTokenRepository;
import com.mpnp.baechelin.login.oauth.entity.RoleType;
import com.mpnp.baechelin.login.jwt.exception.RestAuthenticationEntryPoint;
import com.mpnp.baechelin.login.jwt.filter.TokenAuthenticationFilter;
import com.mpnp.baechelin.login.oauth.handler.OAuth2AuthenticationFailureHandler;
import com.mpnp.baechelin.login.oauth.handler.OAuth2AuthenticationSuccessHandler;
import com.mpnp.baechelin.login.jwt.handler.TokenAccessDeniedHandler;
import com.mpnp.baechelin.login.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository;
import com.mpnp.baechelin.login.oauth.service.CustomOAuth2UserService;
import com.mpnp.baechelin.login.jwt.AuthTokenProvider;
import com.mpnp.baechelin.login.jwt.repository.UserRefreshTokenRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.oauth.exception;
package com.mpnp.baechelin.exception;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.oauth.token;
package com.mpnp.baechelin.login.jwt;

import io.jsonwebtoken.*;
import io.jsonwebtoken.security.SignatureException;
Expand Down Expand Up @@ -48,10 +48,7 @@ private String createAuthToken(String id, String role, Date expiry) {
.compact();
}

public boolean validate() {
return this.getTokenClaims() != null;
}

// 토큰 유효성 검사
public boolean tokenValidate() {
Jws<Claims> claimsJws = Jwts.parserBuilder()
.setSigningKey(key)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mpnp.baechelin.oauth.token;
package com.mpnp.baechelin.login.jwt;

import com.mpnp.baechelin.oauth.exception.TokenValidFailedException;
import com.mpnp.baechelin.login.jwt.exception.TokenValidFailedException;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.security.Keys;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -46,7 +46,7 @@ public AuthToken convertAuthToken(String token) {
// 인증 객체 생성
public Authentication getAuthentication(AuthToken authToken) {
// 유효한 토큰일 때
if (authToken.validate()) {
if (authToken.tokenValidate()) {
Claims claims = authToken.getTokenClaims();
Collection<? extends GrantedAuthority> authorities =
Arrays.stream(new String[] {claims.get(AUTHORITIES_KEY).toString()})
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mpnp.baechelin.config.security;
package com.mpnp.baechelin.login.jwt.config;

import com.mpnp.baechelin.oauth.token.AuthTokenProvider;
import com.mpnp.baechelin.login.jwt.AuthTokenProvider;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.mpnp.baechelin.oauth.controller;
package com.mpnp.baechelin.login.jwt.controller;

import com.mpnp.baechelin.oauth.common.AuthResponse;
import com.mpnp.baechelin.oauth.service.AuthService;
import com.mpnp.baechelin.login.oauth.common.AuthResponse;
import com.mpnp.baechelin.login.jwt.service.TokenService;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -14,13 +14,13 @@
@RestController
@RequestMapping("/auth")
@RequiredArgsConstructor
public class AuthController {
public class TokenController {

private final AuthService authService;
private final TokenService tokenService;

@ApiOperation(value = "Access Token 만료 시 Refresh Token을 이용하여 재발급 받는 메소드")
@GetMapping("/refresh")
public AuthResponse refreshToken (HttpServletRequest request, HttpServletResponse response) {
return authService.refreshToken(request, response);
return tokenService.refreshToken(request, response);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.user.domain;
package com.mpnp.baechelin.login.jwt.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Builder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.mpnp.baechelin.oauth.exception;
package com.mpnp.baechelin.login.jwt.exception;

import com.google.gson.JsonObject;
import com.mpnp.baechelin.exception.ErrorCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.oauth.exception;
package com.mpnp.baechelin.login.jwt.exception;

public class TokenValidFailedException extends RuntimeException {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.mpnp.baechelin.oauth.filter;
package com.mpnp.baechelin.login.jwt.filter;

import com.mpnp.baechelin.oauth.exception.ErrorCode;
import com.mpnp.baechelin.oauth.token.AuthToken;
import com.mpnp.baechelin.oauth.token.AuthTokenProvider;
import com.mpnp.baechelin.exception.ErrorCode;
import com.mpnp.baechelin.login.jwt.AuthToken;
import com.mpnp.baechelin.login.jwt.AuthTokenProvider;
import com.mpnp.baechelin.util.HeaderUtil;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.MalformedJwtException;
Expand Down Expand Up @@ -47,6 +47,7 @@ protected void doFilterInternal(
// SecurityContextHolder 에 인증 객체를 넣는다.
SecurityContextHolder.getContext().setAuthentication(authentication);
}
// 에러가 발생했을 때, request에 attribute를 세팅하고 RestAuthenticationEntryPoint로 request를 넘겨준다.
} catch (SignatureException e) {
log.info("잘못된 JWT 서명입니다.");
request.setAttribute("exception", ErrorCode.WRONG_TYPE_SIGNATURE.getCode());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.oauth.handler;
package com.mpnp.baechelin.login.jwt.handler;

import lombok.RequiredArgsConstructor;
import org.springframework.security.access.AccessDeniedException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mpnp.baechelin.user.repository;
package com.mpnp.baechelin.login.jwt.repository;

import com.mpnp.baechelin.user.domain.UserRefreshToken;
import com.mpnp.baechelin.login.jwt.entity.UserRefreshToken;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.mpnp.baechelin.oauth.service;
package com.mpnp.baechelin.login.jwt.service;

import com.mpnp.baechelin.config.properties.AppProperties;
import com.mpnp.baechelin.oauth.common.AuthResponse;
import com.mpnp.baechelin.oauth.entity.RoleType;
import com.mpnp.baechelin.oauth.token.AuthToken;
import com.mpnp.baechelin.oauth.token.AuthTokenProvider;
import com.mpnp.baechelin.user.domain.UserRefreshToken;
import com.mpnp.baechelin.user.repository.UserRefreshTokenRepository;
import com.mpnp.baechelin.login.oauth.common.AuthResponse;
import com.mpnp.baechelin.login.oauth.entity.RoleType;
import com.mpnp.baechelin.login.jwt.AuthToken;
import com.mpnp.baechelin.login.jwt.AuthTokenProvider;
import com.mpnp.baechelin.login.jwt.entity.UserRefreshToken;
import com.mpnp.baechelin.login.jwt.repository.UserRefreshTokenRepository;
import com.mpnp.baechelin.util.CookieUtil;
import com.mpnp.baechelin.util.HeaderUtil;
import io.jsonwebtoken.Claims;
Expand All @@ -24,7 +24,7 @@
@Service
@RequiredArgsConstructor
@Transactional
public class AuthService {
public class TokenService {

private final AppProperties appProperties;
private final AuthTokenProvider tokenProvider;
Expand Down Expand Up @@ -55,7 +55,7 @@ public AuthResponse refreshToken(HttpServletRequest request, HttpServletResponse
.orElse((null));
AuthToken authRefreshToken = tokenProvider.convertAuthToken(refreshToken);

if (!authRefreshToken.validate()) {
if (!authRefreshToken.tokenValidate()) {
return AuthResponse.invalidRefreshToken();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mpnp.baechelin.oauth.common;
package com.mpnp.baechelin.login.oauth.common;

import com.mpnp.baechelin.oauth.exception.ErrorCode;
import com.mpnp.baechelin.exception.ErrorCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.mpnp.baechelin.oauth.common;
package com.mpnp.baechelin.login.oauth.common;

import com.mpnp.baechelin.oauth.exception.ErrorCode;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.oauth.entity;
package com.mpnp.baechelin.login.oauth.entity;

import lombok.Getter;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.oauth.entity;
package com.mpnp.baechelin.login.oauth.entity;

import lombok.AllArgsConstructor;
import lombok.Getter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.oauth.entity;
package com.mpnp.baechelin.login.oauth.entity;

import com.mpnp.baechelin.user.domain.User;
import lombok.*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.oauth.exception;
package com.mpnp.baechelin.login.oauth.exception;

public class OAuthProviderMissMatchException extends RuntimeException {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mpnp.baechelin.oauth.handler;
package com.mpnp.baechelin.login.oauth.handler;

import com.mpnp.baechelin.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository;
import com.mpnp.baechelin.login.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository;
import com.mpnp.baechelin.util.CookieUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.AuthenticationException;
Expand All @@ -14,8 +14,6 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import static com.mpnp.baechelin.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository.REDIRECT_URI_PARAM_COOKIE_NAME;

@Component
@RequiredArgsConstructor
public class OAuth2AuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
Expand All @@ -32,7 +30,7 @@ public void onAuthenticationFailure(
AuthenticationException exception) throws IOException, ServletException {

// 리프레시 토큰을 저장한 쿠키에 들어있는 redirect uri를 가져온다.
String targetUrl = CookieUtil.getCookie(request, REDIRECT_URI_PARAM_COOKIE_NAME)
String targetUrl = CookieUtil.getCookie(request, OAuth2AuthorizationRequestBasedOnCookieRepository.REDIRECT_URI_PARAM_COOKIE_NAME)
.map(Cookie::getValue)
.orElse("/");

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.mpnp.baechelin.oauth.handler;
package com.mpnp.baechelin.login.oauth.handler;

import com.mpnp.baechelin.config.properties.AppProperties;
import com.mpnp.baechelin.oauth.entity.ProviderType;
import com.mpnp.baechelin.oauth.entity.RoleType;
import com.mpnp.baechelin.oauth.info.OAuth2UserInfo;
import com.mpnp.baechelin.oauth.info.OAuth2UserInfoFactory;
import com.mpnp.baechelin.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository;
import com.mpnp.baechelin.oauth.token.AuthToken;
import com.mpnp.baechelin.oauth.token.AuthTokenProvider;
import com.mpnp.baechelin.user.domain.UserRefreshToken;
import com.mpnp.baechelin.user.repository.UserRefreshTokenRepository;
import com.mpnp.baechelin.login.oauth.entity.ProviderType;
import com.mpnp.baechelin.login.oauth.entity.RoleType;
import com.mpnp.baechelin.login.oauth.info.OAuth2UserInfo;
import com.mpnp.baechelin.login.oauth.info.OAuth2UserInfoFactory;
import com.mpnp.baechelin.login.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository;
import com.mpnp.baechelin.login.jwt.AuthToken;
import com.mpnp.baechelin.login.jwt.AuthTokenProvider;
import com.mpnp.baechelin.login.jwt.entity.UserRefreshToken;
import com.mpnp.baechelin.login.jwt.repository.UserRefreshTokenRepository;
import com.mpnp.baechelin.util.CookieUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.Authentication;
Expand All @@ -29,8 +29,8 @@
import java.util.Date;
import java.util.Optional;

import static com.mpnp.baechelin.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository.REDIRECT_URI_PARAM_COOKIE_NAME;
import static com.mpnp.baechelin.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository.REFRESH_TOKEN;
import static com.mpnp.baechelin.login.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository.REDIRECT_URI_PARAM_COOKIE_NAME;
import static com.mpnp.baechelin.login.oauth.repository.OAuth2AuthorizationRequestBasedOnCookieRepository.REFRESH_TOKEN;

// 로그인 성공 시 처리해주는 클래스
@Component
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.oauth.info;
package com.mpnp.baechelin.login.oauth.info;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.mpnp.baechelin.oauth.info;
package com.mpnp.baechelin.login.oauth.info;

import com.mpnp.baechelin.oauth.entity.ProviderType;
import com.mpnp.baechelin.oauth.info.impl.GoogleOAuth2UserInfo;
import com.mpnp.baechelin.oauth.info.impl.KakaoOAuth2UserInfo;
import com.mpnp.baechelin.oauth.info.impl.NaverOAuth2UserInfo;
import com.mpnp.baechelin.login.oauth.entity.ProviderType;
import com.mpnp.baechelin.login.oauth.info.impl.GoogleOAuth2UserInfo;
import com.mpnp.baechelin.login.oauth.info.impl.KakaoOAuth2UserInfo;
import com.mpnp.baechelin.login.oauth.info.impl.NaverOAuth2UserInfo;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mpnp.baechelin.oauth.info.impl;
package com.mpnp.baechelin.login.oauth.info.impl;

import com.mpnp.baechelin.oauth.info.OAuth2UserInfo;
import com.mpnp.baechelin.login.oauth.info.OAuth2UserInfo;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.mpnp.baechelin.oauth.info.impl;
package com.mpnp.baechelin.login.oauth.info.impl;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.mpnp.baechelin.oauth.info.OAuth2UserInfo;
import com.mpnp.baechelin.login.oauth.info.OAuth2UserInfo;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mpnp.baechelin.oauth.info.impl;
package com.mpnp.baechelin.login.oauth.info.impl;

import com.mpnp.baechelin.oauth.info.OAuth2UserInfo;
import com.mpnp.baechelin.login.oauth.info.OAuth2UserInfo;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mpnp.baechelin.oauth.repository;
package com.mpnp.baechelin.login.oauth.repository;


import com.mpnp.baechelin.util.CookieUtil;
Expand Down
Loading

0 comments on commit 8224362

Please sign in to comment.