ec2 로 똑같이 배포하는데 참조 블로그
빌드 속도 향상을 위해 스왑메모리 사용 참조 블로그1 참조블로그2
- 내 메모리로 할당
스왑 영역 활성화
스왑 메모리 2기가 생성
java 를 설치하려고 하는데
Unable to locate package openjdk17-jdk
라고 뜬다.
sudo apt update
한 후에 다시
sudo apt install openjdk-17-jdk
하니 다운로드가 되었다.
git clone 해오고 프로젝트 이름 디렉토리로 이동해서 빌드 명령을 했는데 다음과 같이 거부되었다.
Permission denied
권한이 없기 때문에 권한을 주면 실행이 가능하다고 한다.
chmod +x ./gradlew
기다림이 또 시작됐다.
다른 방법도 있지만 이왕 이 방식으로 시작해본거, 성공하고 싶어서 다시 도전 ㅎ
스왑 메모리라는 걸 설정해줘서 프리티어 용량으로 하는데 전보다는 속도가 더 빠르다.
빌드에 성공하고 실행시키는데 뜬 오류
로그를 명령했는데 아무것도 뜨지 않는다.
./gradlew clean build
로 다시 빌드해보았다.
그랬더니 빌드 실패
gradle 버전이 낮춰져있어서 문제라는 것 같다. 팀 프로젝트 파일을 쓰던거라 내가 막 변경할 수 없어서....
다시 처음부터 해서 다른 파일로 해보자!!!! 😖😖😖😖
세 번째 시도니까 더 잘 할 수 있다!!!
프로젝트 내 security 필터 다시 이해하기
Http 요청이 오면 spring security 의 filter chain 을 타기 시작
class JwtAuthenticationFilter(
authenticationManager: AuthenticationManager,
private val jwtAuthenticationFailureHandler: JwtAuthenticationFailureHandler
) : AbstractAuthenticationProcessingFilter(
OrRequestMatcher(
AntPathRequestMatcher("/post/**"),
AntPathRequestMatcher("/comment/**"),
AntPathRequestMatcher("/member/**"),
AntPathRequestMatcher("/admin/**")
), authenticationManager
) {
JwtAuthenticationFilter 의 attemptAuthentication() 호출
토큰을 헤더에서 추출해서 JwtPreAuthenticationToken 인증 객체 생성
override fun attemptAuthentication(request: HttpServletRequest, response: HttpServletResponse): Authentication {
return request.getHeader(HttpHeaders.AUTHORIZATION)
?.let { this.authenticationManager.authenticate(JwtPreAuthenticationToken(it.split(" ")[1])) }
?: JwtPreAuthenticationToken("인증 안된 토큰")
}
AuthenticationManager(JwtAuthenticationProvider) 의 supports 메소드로 해당하는 인증매니저인지 확인
override fun supports(authentication: Class<*>): Boolean =
JwtPreAuthenticationToken::class.java.isAssignableFrom(authentication)
authenticate 메소드 호출해서 인증되면 successfilAuthentication 메소드 통해 JwtAuthentication 인증 객체 반환
override fun authenticate(authentication: Authentication): Authentication {
return (authentication.credentials as String)
.let { jwt ->
jwtPlugin.validateToken(jwt)
.getOrElse { throw JwtAuthenticationException(it as Exception) }
.let { claims ->
val id = claims.payload.subject
val role = claims.payload.get("role", String::class.java)
getAuthentication(id, role, jwt)
}
}
}
실패하면 unsuccessfulAuthentication 메소드 통해 JwtAuthenticationFailuerHandler 의 onAuthenticationFailure 메소드 호출
override fun unsuccessfulAuthentication(
request: HttpServletRequest,
response: HttpServletResponse,
failed: AuthenticationException
) {
jwtAuthenticationFailureHandler.onAuthenticationFailure(request, response, failed)
}
@Component
class JwtAuthenticationFailureHandler(
@Qualifier("handlerExceptionResolver")
private val resolver: HandlerExceptionResolver
) : AuthenticationFailureHandler {
override fun onAuthenticationFailure(
request: HttpServletRequest,
response: HttpServletResponse,
exception: AuthenticationException
) {
resolver.resolveException(request, response, null, exception.cause as Exception)
}
}
AuthenticationEntryPoint
인증 되지 않은 사용자의 접근에 대한 처리
AuthenticatoinFailureHandler
인증을 시도한 사용자의 인증이 실패했을 때
시큐리티 내의 많은 기능들을 어떻게 구현하는지는 사용자에 따라 다름.
'왕초보일지' 카테고리의 다른 글
240130 TIL | (1) | 2024.01.30 |
---|---|
240130 TIL | Ec2/ubuntu/깃클론/swap메모리/배포 (3) | 2024.01.30 |
240126 TIL | 배포를 시도해봤다 (1) | 2024.01.26 |
240125 TIL | (1) | 2024.01.25 |
240124 TIL | (1) | 2024.01.24 |