랄라

[TIL 21일차]25.03.17 본문

내일배움캠프/TIL

[TIL 21일차]25.03.17

devdaeun 2025. 3. 20. 10:31

gateway에서 인가처리를 위해

jwt 토큰의 payload 정보를 추출하여 header에 넣어 서브모듈에서 원활하게 사용할 수 있도록 진행하던 중

 

토큰 secretkey를 생성하기위해 찾던중 윈도우 파워쉘에서 해당 형식의 랜덤코드를 작성할 수 있다고해 

시도해보았다.

 

본래 웹페이지 상의 jwt 토큰은 base64URL 형식으로 구성되어있는데

나는 BASE64 형식의 토큰을 구성해서 발생한 오류였다.

 

다시 base64URL 형식의 랜덤코드를 받아오도록 명령어를 다시 찾아 수정하였다.

 

 

 Claims 클래스로 정보들을 받아오는 로직에서 deprecated 된 부분이 많다는 알림이 표시되었다. 

 private Claims extractClaims(String token) {
        return Jwts.parser()
                .setSigningKey(Decoders.BASE64URL.decode(secretKey))
                .build()
                .parseClaimsJws(token)
                .getBody();
    }

 

수정코드

private Claims extractClaims(String token) {
        SecretKey key = Keys.hmacShaKeyFor(Decoders.BASE64.decode(secretKey));
        //SecretKey 형태로 변환
        
        return Jwts.parser()
                .verifyWith(key)
                .build()
                .parseSignedClaims(token)
                .getPayload();
    }

 

해당 코드들을 수정하여 진행

Jwt.parserBuilder() Deprecated

 

Jwt.parserBuilder() Deprecated

JWT 토큰 로직을 짜는 중 Gradle: io.jsonwebtoken:jjwt-api:0.12.5 버전에서Jwt.parserBuilder() Deprecated가 되었다고 뜬다.parserBuilder -> parser()setSigningKey(key) -> verifyWith(key)parseClaimsJws(token) -> parseSignedClaims(token)로 바

myeongju00.tistory.com

 

 


2. 헤더에 정보들을 넣어서 토큰정보를 업데이트 한뒤, 서브모듈에서 @RequstHeader로 정보를 받아올 수 있게 진행하기로 했지만. 오류가 발생

 

계속해서 400에러가 발생.

게이트웨이에서 log.info로 각각 user_id와 role 값을 출력해보았을때는 정상적으로 값이 들어있는걸 확인함.

 

mutate().header()를 사용하여 요청 헤더를 변경한 후 그 변경된 요청을 필터 체인에 전달하고 있는 것처럼 보이지만,

사실 여기에서 변경된 요청을 제대로 반영하지 않아 문제가 된것 같다.

mutate() 메서드는 요청의 변경 사항을 즉시 반영하지 않습니다.
헤더를 설정하는 것만으로는 새로운 요청을 만들지 않고, 원본 요청을 그대로 유지하게 됩니다.
수정된 요청을 필터 체인으로 전달할 때, mutate()를 호출해서
request()를 올바르게 설정해야 변경된 요청이 필터 체인에 전달됩니다.

 

ServerHttpRequest 클래스로 해당 header 수정정보를 받아온 뒤,

return chain.filter(exchange.mutate().request(modifiedRequest).build());

해당 리턴코드에 작성하여 수정을 진행하니 정상적으로 header값이 호출되었다.

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

[TIL 23일차]25.03.19  (0) 2025.03.20
[TIL 22일차]25.03.18  (0) 2025.03.20
[TIL 20일차]25.03.14  (0) 2025.03.15
[TIL 19일차]25.03.12  (0) 2025.03.13
[TIL 18일차]25.03.11  (0) 2025.03.13