OAuth 2: 권한 부여 서버 구현

13.1. 맞춤형 권한 부여 서버 구현 작성

  • 권한 부여 서버

    • 액세스 토큰을 발행하는 구성 요소

13.2. 사용자 관리 정의

  • 앞장과 같이 UserDetails, UserDetailsService, UserDetailsManager 계약을 이용해 자격 증명을 관리한다.

  • 단, SecurityContext는 사용하지 않고 TokenStore로 토큰을 관리한다.


@Configuration
public class WebSecurityConfig {

    @Bean
    public UserDetailsService uds() {
        var uds = new InMemoryUserDetailsManager();

        var u = User.withUsername("john")
                .password("12345")
                .authorities("read")
                .build();

        uds.createUser(u);

        return uds;
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return NoOpPasswordEncoder.getInstance();
    }

    @Bean
    public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception {
        return authConfig.getAuthenticationManager();
    }
}

13.3. 권한 부여 서버에 클라이언트 등록

  • 알려진 클라이언트의 요청만 받아야 하므로 클라이언트를 관리해야 한다.

  • ClientDetails, ClientDetailsService

    • UserDetails 관계와 비슷하게 관리하면 된다.

13.4. 암호 그랜트 유형 이용

  • 암호 그랜트 유형이 작동하는지 확인한다.

13.5. 승인 코드 그랜트 유형 이용

  • 리디렉션 URI를 설정해준다.

13.6. 클라이언트 자격 증명 그랜트 유형 이용

  • 백엔드 대 백엔드 인증에 이용한다.

  • API 키 인증 방법의 대안이 될 수 있다.

13.7. 갱신 토큰 그랜트 유형 이용

  • 갱신 토큰 허가를 허가 목록에 추가한다.

  • 갱신 토큰은 승인 코드 그랜트 유형 및 암호 그랜트 유형과 함께 사용할 수 있다.

Last updated

Was this helpful?