티스토리 뷰

카테고리 없음

OAuth란

eyoadgkn 2024. 4. 28. 23:43
OAuth

OAuth(Open Authorization)는 애플리케이션이 사용자의 비밀번호 없이도 제한된 접근 권한을 얻을 수 있게 해주는 인증 프로토콜입니다.

why

보안: 사용자의 비밀번호를 공유하지 않고도 애플리케이션에 접근할 수 있도록 합니다. 이를 통해 사용자의 계정 정보가 노출되는 것을 방지할 수 있습니다.

편의성: 사용자는 한 번의 인증으로 여러 애플리케이션에 접근할 수 있습니다. 이를 통해 사용자 경험이 향상됩니다.

범위 제한: 애플리케이션은 사용자의 승인을 얻어 필요한 최소한의 권한만 요청할 수 있습니다.

// OAuth2 클라이언트 구성
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    // 이 클래스는 Spring Security 구성을 담당하는 클래스입니다.
    // @Configuration 어노테이션을 사용하여 Spring 구성 클래스임을 나타내고,
    // @EnableWebSecurity 어노테이션을 사용하여 웹 보안을 활성화합니다.
    // WebSecurityConfigurerAdapter 클래스를 상속받아 보안 설정을 커스터마이징합니다.

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // configure(HttpSecurity) 메서드는 HTTP 보안 설정을 정의합니다.
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll() // "/" 및 "/home" 경로에 대해서는 인증을 허용
                .anyRequest().authenticated() // 그 외의 모든 요청에 대해서는 인증이 필요
            .and()
            .oauth2Login(); // OAuth2 로그인을 활성화합니다.
    }
}

// OAuth2 리소스 서버 구성
@Configuration
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
    // 이 클래스는 OAuth2 리소스 서버 구성을 담당하는 클래스입니다.
    // @Configuration 어노테이션을 사용하여 Spring 구성 클래스임을 나타냅니다.
    // ResourceServerConfigurerAdapter 클래스를 상속받아 리소스 서버 설정을 커스터마이징합니다.

    @Override
    public void configure(HttpSecurity http) throws Exception {
        // configure(HttpSecurity) 메서드는 리소스 서버에 대한 HTTP 보안 설정을 정의합니다.
        http
            .authorizeRequests()
                .antMatchers("/api/**").authenticated(); // "/api/**" 경로에 대해서는 인증이 필요
    }
}

// OAuth2 리소스 액세스 예시
@RestController
@RequestMapping("/api")
public class ResourceController {
    // 이 클래스는 OAuth2 리소스에 대한 REST 컨트롤러입니다.
    // @RestController 어노테이션을 사용하여 REST 컨트롤러임을 나타내고,
    // @RequestMapping("/api") 어노테이션을 사용하여 "/api" 경로에 매핑됩니다.

    @GetMapping("/hello")
    public String hello() {
        // "/api/hello" 경로에 대한 GET 요청을 처리하는 메서드입니다.
        // 이 메서드는 "Hello, OAuth2 user!"라는 문자열을 반환합니다.
        return "Hello, OAuth2 user!";
    }
}

SecurityConfig 클래스에서는 OAuth2 클라이언트 구성을 담당합니다.
"/" 및 "/home" 경로에 대해서는 인증을 허용하고, 그 외의 모든 요청에 대해서는 인증이 필요하도록 설정합니다.
또한 OAuth2 로그인을 활성화합니다.
ResourceServerConfig 클래스에서는 OAuth2 리소스 서버 구성을 담당합니다.
"/api/**" 경로에 대해서는 인증이 필요하도록 설정합니다.
ResourceController 클래스에서는 OAuth2 리소스에 대한 REST 컨트롤러를 정의합니다.
"/api/hello" 경로에 대한 GET 요청을 처리하며, "Hello, OAuth2 user!"라는 문자열을 반환합니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함