복붙노트

[SPRING] Spring Security OAuth2와 리소스 서버가 필요합니까?

SPRING

Spring Security OAuth2와 리소스 서버가 필요합니까?

JWT 토큰을 사용하여 OAuth2 인증을 구현하려고합니다. 이해한다면 인증 서버에 자격 증명을 보내야합니다. 그러면 자격 증명을 확인하고 서명 된 JWT 토큰을 다시 돌려받을 수 있습니다. 다음으로 WebSecurityConfigurerAdapter를 확장 한 WebSecurityConfig를 구현하려고 시도했습니다. 거기에 어떤 종단점이 고정되어 있고 어떤 종점이 아닌지를 설정해야합니다.

하지만 내 질문은 : 리소스 서버가 필요합니까? 잠재적 인 WebSecurityConfig와 동일한 작업을 수행합니까, 안합니까?

내 목표는 내 웹 사이트에 대한 간단한 JWT 인증을 만드는 것입니다.

해결법

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

    1.OAuth2 사양의 일부이기 때문에 리소스 서버가 필요합니다.

    OAuth2 사양의 일부이기 때문에 리소스 서버가 필요합니다.

    따라서 이는 또한 Spring Security OAuth2의 일부이기도합니다.

    리소스 서버 구성은 보안 구성 이상의 것입니다. 자세한 내용은 OAuth 2 개발자 가이드 :

    Spring Security의 HttpSecurity 구성 자에 의해 허용 된 보호 자원에 대한 다른 사용자 정의를 위해 Spring Security 구성 (WebSecurityConfigurerAdapter)을 사용할 수 있지만 다음과 같은 이유로 자원 서버 구성을 사용하는 것이 더 좋습니다.

    권장되는 방법입니다.

  2. ==============================

    2.예, ResourceServerConfigurerAdapter를 확장하여 JWT로 보호되는 리소스를 구성해야합니다. 기본 구현은 다음과 같습니다.

    예, ResourceServerConfigurerAdapter를 확장하여 JWT로 보호되는 리소스를 구성해야합니다. 기본 구현은 다음과 같습니다.

    @Configuration
    @EnableResourceServer
    public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
    
        @Override
        public void configure(HttpSecurity http) throws Exception {
            http
                .authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        }
    
    }
    

    이는 위의 구성이 WebSecurityConfigurerAdapter에서 구성 할 동일한 HttpSecurity 객체를 구성하기 때문에 WebSecurityConfigurerAdapter를 확장 할 필요가 없음을 의미합니다. public void configure (HttpSecurity http)는 두 클래스 모두에서 동일한 기능을합니다.

    WebSecurityConfigurerAdapter를 통해 ResourceServerConfigurerAdapter를 선택하려는 이유는 사용중인 spring-security-oauth2 모듈의 일부이고 프레임 워크에서 장면 뒤에서 사용되기 때문입니다.

    물론 인증 및 리소스 서버 모두에 동일한 서명 키를 사용하고 있는지 확인해야합니다. 동일한 응용 프로그램에서 보안 구성 bean을 정의하는 경우 자원 서버는 자동으로 동일한 bean을 사용합니다. 그렇지 않으면 권한 서버에있는 JWT 관련 구성을 복제해야합니다.

  3. ==============================

    3.예를 들어 답하기 위해 노력할 것입니다. GMAIL 계정과 Google 캘린더 데이터를 함께 관리 할 수있는 멋지고 멋진 웹 애플리케이션을 작성하려고한다고 가정 해보십시오. 분명히 사용자는 Google의 자격 증명으로 로그인해야하므로 앱에서 데이터를 가져 와서 관리 할 수 ​​있습니다. 응용 프로그램은 사용자의 자격 증명을 얻지 않고 사용자의 데이터를 관리합니다.

    예를 들어 답하기 위해 노력할 것입니다. GMAIL 계정과 Google 캘린더 데이터를 함께 관리 할 수있는 멋지고 멋진 웹 애플리케이션을 작성하려고한다고 가정 해보십시오. 분명히 사용자는 Google의 자격 증명으로 로그인해야하므로 앱에서 데이터를 가져 와서 관리 할 수 ​​있습니다. 응용 프로그램은 사용자의 자격 증명을 얻지 않고 사용자의 데이터를 관리합니다.

    여태까지는 그런대로 잘됐다.

    이 예에서 Authorization-Server는 Google 계정입니다. Resource Server는 Google-Main 및 Google-Calendar (둘 다)이고 클라이언트는 응용 프로그램입니다.

    희망은 그 말이 맞습니다.

  4. from https://stackoverflow.com/questions/48629266/do-i-need-resource-server-with-spring-security-oauth2 by cc-by-sa and MIT license