tevelop RSS 태그 관리 글쓰기 방명록
2022-12-28 20:51:25

https://github.com/jwtk/jjwt

public String createToken(String username, UserRole userRole) {
        Date date = new Date();

        return BEARER_PREFIX +
                Jwts.builder()
                        .setSubject(username) // jwt의 주체, 발급자의 컨텍스트에서 로컬로 고유하거나 전역적으로 고유해야한다. 이 클레임은 선택사항
                        .claim(AUTHORIZATION_KEY, userRole) // 표준 setter 메서드 클레임과 일치하지 않는 하나 이상의 사용자 지정 클레임을 설정해야하는 경우, key-value
                        .setExpiration(new Date(date.getTime() + TOKEN_TIME))
                        .setIssuedAt(date)
                        .signWith(key, signatureAlgorithm) // 서명 키 지정
                        .compact(); // 최종 문자열 형태로 압축한다.
    }

setSubject, claim이런게 대체 뭔지 아무리 찾아도 없어서 공식문서를 뒤졌다. 역시 공식문서를 먼저 봐야하는것임을 다시 한번 깨닳았다.


UserDetails가 있는 이유?

시큐리티 내부에서 유저를 검증하고 모든 접근에 대해서 유저를 검증한다.

그 과정속에서 시큐리티는 클라이언트가 만든 유저는 수만가지라 그것을 다 처리할 수 없으니 클라이언트는 UserDetails 객체로 통합해서 Optional처럼 한번 유저 객체를 감싼 형태로 UserDetails 객체만 받도록 한다. 그래야 통합적인 처리가 가능하므로.

시큐리티쪽에서도 그래서 UserDetailsImpl만드는게 시큐리티에 던져줄 것은 우리가 만든 User가 아닌 UserDetailsImpl을 던져주게 된다. 

'내일배움캠프 > TIL' 카테고리의 다른 글

2023/1/5  (0) 2023.01.05
2023/1/1 포스트맨에 토큰값 세팅하기  (0) 2023.01.03
2022.12.22  (2) 2022.12.22
2022.12.19  (0) 2022.12.19
2022.12.16  (0) 2022.12.16
tevelop. Designed by 코딩재개발.