[Spring Boot] Exception 처리 - 에러 페이지 적용(화면), 에러 코드 적용(API)
2023. 1. 9. 23:57
Spring Boot/문법 정리
Exception을 발생시키는 방법 잘못된 요청 전송 ex) 존재하지 않는 URL 접근 => 404 Error 발생 인증하지 않음 => 401 Error 발생 서버 내부 에러 => 500 Error 발생 이와 같이 직접 잘못된 요청을 전송하여 에러를 발생시킬 수 있음 throw를 사용해 직접 에러를 던져주기 throw new RuntimeException(); throw new IllegalArgumentException(); HttpServletResponse에 에러를 담아서 전송 response.sendError(403); response.sendError(404, "404에러가 발생했습니다!"); 아래와 같이 Path Variable을 활용하여 원하는 에러를 발생 시킬 수도 있음 @GetMappin..
[Spring Boot] Front-End 없이 Jwt 화면 로그인 구현
2023. 1. 7. 17:33
Spring Boot/문법 정리
구현 배경 Spring Boot로 Jwt Login 구현 시 항상 API로만 구현했었음 로그인에 성공하면 Jwt Token을 발행해주는데, 이 Token을 클라이언트 측에서 가지고 있다가 다른 요청을 할 때 Header의 "Authorization"에 "Bearer " + Jwt Token 을 넣어서 전송해야 함 이 작업은 Front-End에서는 쉽게 구현이 가능하고 Front-End에서 하는 작업이지만 Front-End 없이 구현할 방법을 생각해 봄 => Jwt Token을 쿠키를 사용해 전달하여 구현 성공 구현 방법 유저가 로그인 성공 시 쿠키에 "jwtToken"라는 Key 값에 발급받은 JwtToken값을 넣어서 전송 유저는 다음 요청 시 해당 쿠키를 같이 전송 서버 측에서는 쿠키에 "jwtTok..
[Spring Boot] Spring Security를 사용한 Jwt Token 로그인 구현
2023. 1. 7. 14:11
Spring Boot/문법 정리
JWT란? JSON Web Token의 줄임말로 JSON 객체로 정보를 주고 받을 때, 안전하게 전송하기 위한 방식 HMAC, RSA 등의 암호화 방식을 사용해 서명함 로그인 기능 구현 등에 사용 JWT 구조 JWT는 Header, Payload, Signature로 이루어져 있으며 각각 점으로 구분 ex) xxxxxxx.yyyyyyy.zzzzzzzzz Header Header은 일반적으로 토큰 유형(JWT)과 사용중인 서명 알고리즘(HMAC, SHA256 등)이 포함됨 예시 { "typ": "JWT", "alg": "HS256" } Payload Payload는 등록된 클레임과 개인 클레임 등으로 이루어짐 등록된 클레임 : iss(발행자), exp(만료시간), sub(제목), aud(대상) 등이 있음 ..
[Spring Boot] Spring Security 인증, 인가 실패 처리 - authenticationEntryPoint, accessDeniedHandler
2023. 1. 7. 01:58
Spring Boot/문법 정리
[Spring Boot] Spring Security를 사용한 로그인 구현 (Form Login) 여기서 Spring Security를 사용한 로그인을 구현했었음 인증, 인가 실패 시 Spring Security에서 정해진 방식대로 처리했었음 인증 실패 시 401 에러 출력 or 로그인 페이지로 redirect 인가 실패 시 403 에러 출력 인증, 인가 실패 시 내가 원하는 방식으로 처리하고 싶다면 authenticationEntryPoint(인증 실패), accessDeniedHandler(인가 실패)를 사용하면 됨 authenticationEntryPoint, accessDeniedHandler 사용 예제 SecurityConfig 전에 작성한 SecurityConfig의 configure(Http..
[Spring Boot] Spring Security를 사용한 로그인 구현 (Form Login)
2023. 1. 6. 20:06
Spring Boot/문법 정리
Spring Security 란? Spring에서 제공하는 애플리케이션의 보안 (권한, 인증, 인가 등)을 담당하는 프레임워크 Spring Security는 인증과 권한에 대한 부분을 Filter의 흐름에 따라 처리 [Spring Boot] Session을 사용한 로그인 구현에서 세션을 통해 로그인 하는 방법을 정리했었음 로그인 성공 시 직접 세션에 "userId"라는 attributes에 userId를 담아 로그인을 진행했었음 Security에는 Security Session이 존재하고, 로그인 성공 시 여기에 Authentication을 넣어줘야 함 Authentication에는 UserDetails라는 유저 정보를 또 넣어 줘야함 Security Session(Authentication(UserDe..
[Spring Boot] Session을 사용한 로그인 구현
2023. 1. 4. 18:39
Spring Boot/문법 정리
세션(Session) 이란? 일정 시간동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술 쿠키 로그인 예제에서 확인했듯이 쿠키는 사용자의 정보를 사용자 컴퓨터 메모리에 저장하지만 세션은 서버측에 저장 세션을 사용한 로그인 구현 개념 로그인 성공 시 세션을 하나 생성 이 세션의 Key 값은 UUID(중복되지 않는 랜덤값, 예측 불가)으로 설정 Value 값에 사용자 정보를 넣음 생성한 세션을 서버측 세션 저장소에 보관 세션의 Key값(UUID)을 쿠키를 통해 사용자에게 전달 사용자는 로그인 성공 이후 다른 요청을 할 때마다 이 쿠키를 서버에 같이 보내줌 서버 측에서 사용자에게 쿠키를 통해 UUID값을 받는다면, 전달받은 UUID를 Key 값으로 갖는 세션을..
[Spring Boot] Cookie를 사용한 로그인 구현
2023. 1. 2. 00:51
Spring Boot/문법 정리
쿠키(Cookie) 란? 쿠키 : 사용자가 웹사이트 접속시 사용자의 개인 장치에 다운로드되고 브라우저에 저장되는 작은 텍스트 파일 웹사이트는 이 쿠키를 이용해 사용자의 장치를 인식하고 일부 데이터를 저장하기도 함 쿠키를 사용한 로그인 구현 개념 쿠키를 사용하여 로그인 기능을 구현할 수 있음 로그인 성공 시 서버가 쿠키에 사용자 정보를 넣어줌 클라이언트 측에서는 다음 요청을 할 때마다 이 쿠키를 서버에 같이 보내줌 서버에서는 이 쿠키를 확인해 로그인 했는지와 유저 정보, 권한 등을 확인할 수 있음 쿠키 생성 방법 new Cookie() 메서드를 통해 쿠키 생성 쿠키 생성 시 Key, Value 값을 넣어줄 수 있음 Cookie cookie = new Cookie("userId", String.valueOf..