Spring Boot OAuth2 인증서버 적용기 - 6

황남욱·2021년 12월 18일
0
post-thumbnail

이번에는 토큰의 타입을 JWT토큰으로 바꿔보려고 합니다.

현재 access_token방식은 bearer토큰 방식입니다. bearer토큰은 해당 토큰으로 회원정보를 가져오려면 해당 토큰이 유효한지 그 토큰으로 인증한 회원이 누구인지 인증서버에 추가로 확인을 해야합니다.

이런 번거로움을 없애기 위해 JWT가 만들어졌습니다.
JWT토큰이란 Json String이 암호화된 문자열입니다.
token자체에 특정한 정보를 세팅할 수 있어서 회원정보를 조회하기 위해 인증서버를 한번 더 거칠 필요가 없습니다.

먼저 OAuth2AuthorizationConfig를 수정해보겠습니다.

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을 받아봅시다.

http://localhost:1995/oauth/authorize?client_id=foo&redirect_uri=http://localhost:1995/oauth2/callback&response_type=code&scope=read

리소스 인증 화면이 기존 Bearer때와는 다르게 변경된 점을 확인할 수 있습니다. 허가를 하면 정상적으로 access_token이 jwt로 발급되는 것을 확인할 수 있습니다.

profile
안녕하세요👋 주니어 백엔드 개발자입니다.

0개의 댓글