Filter
- Filters perform filtering in the doFilter method. Every Filter has access to a FilterConfig object from which it can obtain its initialization parameters, and a reference to the ServletContext which it can use, for example, to load resources needed for filtering tasks.
OncePerRequestFilter
- Filter base class that aims to guarantee a single execution per request dispatch, on any servlet container. It provides a doFilterInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) method with HttpServletRequest and HttpServletResponse arguments.
========================================
JWT vs Session 이 서로 비교대상이지
Bcrypt 와 JWT는 비교대상이 아니다.
JWT 는
Header.payload.signature 로 나누어져 있으며, 전송을 위하여 Base64로 인코딩되어 있다.
Header, payload는 해독이 가능하므로 민감한 정보를 넣으면안된다.
Header 는 JWT 토큰을 어떻게 해석해야 하는지 나타내며 두가지 정보로 구성되어 있다.
alg : 알고리즘 장식을 지정, 서명 및 토큰 검증에 사용한다.
typ : 토근의 타입을 지정한다.
{
"alg" : "HS256",
"typ" : JWT
}
payload 는 기본적으로 json의 형태로 name : value 쌍으로 이루워짐 또한 payload에 있는 속성을 Claim이라고함
Claim은
등록된 클레임, 공개 클래임, 비공개 클래임으로 되어있다.
signature(서명)
Header, payload는 암호화한것이 아니라 단순히 JSON 문자열을 Base64로 인코딩한 것으로, Header, payload를 디코딩하면 내용을 확인할 수 있습니다. 이 경우를 막기위하여 위변조했는지 검증했는지 확인하기 위한 부분이다.
Signature는 헤더의 인코딩 값, 정보의 인코딩 값을 합친 후 비밀키로 해쉬화하여 생성합니다.
================================================
Access Token // Refresh Token
토큰의 만료시간
토큰 방식을 이용하여 회원 인증을 구현하면 몇가지 문제가 생기는데, 토큰을 한번 발행하고, 클라이언트에게 보내고 나면 토큰을 삭제할 수 없다. JWT 토큰은 클라이언트의 Storage에 저장되어 사용되는데 이를 삭제하기 위해서 토큰을 발행할 때는 무조건 만료시간을 넣어줘야 한다.
하지만 만료시간을 너무 짧게할경우 인증을 자주 해야하므로 나타난게 Access Token, Refresh Token이다.

// JWT는 로그인 상태를 확인하기 위해 Session 대신에 사용되고 있음 그렇다면,
// Login Page에서는 JWT를 확인하지 않는가? --> Login 하면 Login페이지 대신에 Logout이 뜨긴함
1. 사용자가 ID / PWD 로그인 요청을 보냄
2. Server에서 Spring security에 의하여 /CustomLogin에 의하여 로그인 처리가 됨
3. 로그인이 성공되면 CustomLoginSuccessHandler에서 JWT 토큰을 발행해줌
4. 그 후 로그인 상태확인을 JWT 토큰을 확인하여 실행한다...
--> 그렇다면 로그인하고난 후 사용하는 페이지를 Filter로 등록하여 JWT 토큰을 확인하도록 하는건가?
https://daily-coding-diary.tistory.com/21
[Java] 3. JWT와 bcrypt 적용하기
JWT와 bcrypt를 사용하기 위해 pom.xml에 // bcrypt관련 org.springframework.security spring-security-web 5.5.2 // JWT관련 io.jsonwebtoken jjwt 0.9.1 com.googlecode.json-simple json-simple 1.1.1 이 내용..
daily-coding-diary.tistory.com
=====================================================================================
'dev > Spring-security' 카테고리의 다른 글
[Spring] Spring-security를 JSP에서 사용하기 (0) | 2022.08.20 |
---|---|
[Spring] Spring security - ApplicationFilterchain, DelegatingFilterProxy (0) | 2022.08.20 |
[Spring] Spring Security 대략적인 흐름 (0) | 2022.08.06 |
[Spring] spring security 중간정리 (0) | 2022.08.06 |
[Spring] UserDetailsService 활용 (0) | 2022.08.05 |