inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

API Gateway - Filter 추가

jwt 관련 질문입니다.

1747

JUNI

작성한 질문수 22

0

signWith(SignatureAlgorithm.HS256, env.getProperty("token.secret"))

jwt 버전 0.10 버전이상부터는 관련 내용이 문자열이 작다고 합니다. 혹시 0.11버전에 맞춰서 한다면 어떤 방식으로 해야합니까?

추가적으로 signWith의 deprecated 또한 해결 하는 방법에 대해 알려주시면 감사하겠습니다. => document 사이트 위치라도 알려주시면 직접찾아보겠습니다. 전체적으로 따라해봤는데 해쉬값이 작다고 하여 관련내용에 대해 이해를 하지 못해서 작성합니다.

jwt JPA spring-boot spring-cloud architecture Kafka msa

답변 2

0

JUNI

감사합니다.

0

Dowon Lee

안녕하세요, 이도원입니다.

jwt 0.10 (or 0.11)이라고 하셔서 pom.xml 파일을 아래와 같이 수정한 내용을 공유해 드립니다.

<!--        <dependency>-->
<!--            <groupId>io.jsonwebtoken</groupId>-->
<!--            <artifactId>jjwt</artifactId>-->
<!--            <version>0.9.1</version>-->
<!--        </dependency>-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>0.11.5</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-impl</artifactId>
            <version>0.11.5</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred -->
            <version>0.11.5</version>
            <scope>runtime</scope>
        </dependency>

AuthenticationFilter.java 파일에서는 생성자에서 Key를 생성하신 다음에, signWith 메소드에 적용해 보시면 됩니다.

public class AuthenticationFilter extends UsernamePasswordAuthenticationFilter {
    private UserService userService;
    private Environment env;

    private final Key key;

    public AuthenticationFilter(AuthenticationManager authenticationManager,
                                UserService userService,
                                Environment env) {
        super.setAuthenticationManager(authenticationManager);
        this.userService = userService;
        this.env = env;
        byte[] keyBytes = Decoders.BASE64.decode(env.getProperty("token.secret"));
        this.key = Keys.hmacShaKeyFor(keyBytes);
    }
...
    @Override
    protected void successfulAuthentication(HttpServletRequest request,
                                            HttpServletResponse response,
                                            FilterChain chain,
                                            Authentication authResult) throws IOException, ServletException {
        String userName = ((User)authResult.getPrincipal()).getUsername();
        UserDto userDetails = userService.getUserDetailsByEmail(userName);
        String token = Jwts.builder()
                .setSubject(userDetails.getUserId())
                .setExpiration(new Date(System.currentTimeMillis() +
                        Long.parseLong(env.getProperty("token.expiration_time"))))
//                .signWith(SignatureAlgorithm.HS512, env.getProperty("token.secret"))
                .signWith(key, SignatureAlgorithm.HS256)
                .compact();

 

사용한 token.secret 값은 최소 50글자가 넘어야 해서 아래와 같이 사용했습니다.

token:
  expiration_time: 864000000
  secret: '01234567890123456789012345678901234567890123456789'

 

https://javadoc.io/doc/io.jsonwebtoken/jjwt-api/latest/io/jsonwebtoken/JwtBuilder.html#method_summary

감사합니다.

kafka 업데이트 강의 듣고 시포요

0

115

2

강의 교안

0

106

2

마이크로서비스간 통신 시, 인증 처리

0

117

2

api gateway 에서 인증 처리

0

76

1

섹션 19 질문드립니다

0

85

2

강의 자료 업데이트

0

105

2

부하분산 강의 섹션

0

66

1

강의자료는 어디에서?

0

99

2

강의 자료는 어디서 다운 받을 수 있나요?

0

131

2

전체 사용자 조회시 오류

0

65

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

122

2

학습 방향

0

106

2

카프카 커넥터 사용 목적 문의

0

92

2

kafka 강의

0

118

2

서비스 디스커버리 종류

0

90

2

강의 자료에 대해서 궁금해요

0

126

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

97

2

Kafka Source Connect 버전 에러

0

96

2

소스커넥터는 사용안한 거 맞죠?

0

85

2

강의자료 업데이트 문의

0

101

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

64

1

강의 업데이트 계획이 궁금합니다.

0

121

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

168

2

어떤 것이 업데이트 된 건가요?

0

169

2