복붙노트

[SPRING] 봄 OAUTH2 - 액세스 토큰 만료 시간

SPRING

봄 OAUTH2 - 액세스 토큰 만료 시간

프로그래밍 방식으로 액세스 토큰의 만료 시간을 업데이트 / 재설정 할 수 있습니까? 그렇다면, JDBC 토큰 저장소에서 만료 시간을 업데이트 할 수 있도록 어떤 클래스 / 필터가 가장 적합한 지 결정하십시오.

해결법

  1. ==============================

    1.액세스 토큰의 만료 시간을 전역으로 업데이트하려면 다음과 같이 DefaultTokenServices 인스턴스를 만들고 AuthorizationServerEndpointsConfigurer에 삽입해야합니다.

    액세스 토큰의 만료 시간을 전역으로 업데이트하려면 다음과 같이 DefaultTokenServices 인스턴스를 만들고 AuthorizationServerEndpointsConfigurer에 삽입해야합니다.

    public AuthorizationServerTokenServices customTokenServices(){
      TokenServices tokenServices = new DefaultTokenServices();
      tokenServices.setReuseAccessToken(reuseAccessToken);
      tokenServices.setTokenStore(tokenStore());
      tokenServices.setSupportRefreshToken(true);
      tokenServices.setAccessTokenValiditySeconds(<seconds>);
      tokenServices.setClientDetailsService(clientDetailsService);
      return tokenServices;
    }
    

    이 tokenServices를 AuthorizationServerEndpointsConfigurer에 넣으십시오.

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
      endpoints.tokenServices(customTokenServices()).
    }
    
  2. ==============================

    2.클라이언트 구성 중 액세스 토큰의 만료 시간을 설정할 수 있습니다. 여기서 값을 변경하면 jdbc 토큰 저장소에서 값이 업데이트됩니다.

    클라이언트 구성 중 액세스 토큰의 만료 시간을 설정할 수 있습니다. 여기서 값을 변경하면 jdbc 토큰 저장소에서 값이 업데이트됩니다.

    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
            clients.jdbc(dataSource)                        
                    .withClient("my-client-with-password")
                    .authorizedGrantTypes("password")
                    .authorities("ROLE_CLIENT") 
                    .scopes("read")
                    .resourceIds("oauth2-resource")
                    .accessTokenValiditySeconds(30);
    

    이를 위해서는 데이터베이스에서 기존 클라이언트 세부 사항을 삭제해야합니다. 다음 번에 토큰 호출이 이루어지면 업데이트 된 유효 시간과 함께이 클라이언트 세부 정보가 데이터베이스에 추가됩니다.

  3. from https://stackoverflow.com/questions/32994788/spring-oauth2-access-token-expiry-time by cc-by-sa and MIT license