이번에는 토큰의 타입을 JWT
토큰으로 바꿔보려고 합니다.
현재 access_token방식은 bearer토큰 방식입니다. bearer토큰은 해당 토큰으로 회원정보를 가져오려면 해당 토큰이 유효한지 그 토큰으로 인증한 회원이 누구인지 인증서버에 추가로 확인을 해야합니다.
이런 번거로움을 없애기 위해 JWT
가 만들어졌습니다.
JWT
토큰이란 Json String이 암호화된 문자열입니다.
token자체에 특정한 정보를 세팅할 수 있어서 회원정보를 조회하기 위해 인증서버를 한번 더 거칠 필요가 없습니다.
먼저 OAuth2AuthorizationConfig를 수정해보겠습니다.
@Configuration
@EnableAuthorizationServer
@RequiredArgsConstructor
public class OAuth2AuthorizationConfig extends AuthorizationServerConfigurerAdapter {
private final DataSource dataSource;
private final PasswordEncoder passwordEncoder;
private final MemberService memberService;
// @Override
// public void configure(ClientDetailsServiceConfigurer clients) throws Exception{
// clients.jdbc(dataSource).passwordEncoder(passwordEncoder);
// }
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception{
super.configure(endpoints);
endpoints.accessTokenConverter(jwtAccessTokenConverter());
}
@Bean
public JwtAccessTokenConverter jwtAccessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
return converter;
}
}
JdbcTokenStore는 주석 처리 후 jwtAccessTokenConverter를 사용하도록 설정합니다.
다시 access_token을 받아봅시다.
리소스 인증 화면이 기존 Bearer때와는 다르게 변경된 점을 확인할 수 있습니다. 허가를 하면 정상적으로 access_token이 jwt로 발급되는 것을 확인할 수 있습니다.