이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다.
실습환경: spring boot 3.xx
권한 부여 서버는 github의 OAuth app을 활용
클라이언트와 권한 부여 서버간의 연결 구현
https://docs.spring.io/spring-security/reference/servlet/oauth2/index.html
Gradle 설정
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
Config
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
http
.csrf(CsrfConfigurer::disable)
.oauth2Login(c->{
c.clientRegistrationRepository(clientRegistrationRepository());
})
.authorizeHttpRequests(o->
o.anyRequest().authenticated())
;
return http.build();
}
private ClientRegistration githubClientRegistration(){
return CommonOAuth2Provider.GITHUB
.getBuilder("github")
.clientId("클라이언트ID")
.clientSecret("클라이언트SECRET")
.build();
}
@Bean
public ClientRegistrationRepository clientRegistrationRepository(){
ClientRegistration clientRegistration = githubClientRegistration();
return new InMemoryClientRegistrationRepository(clientRegistration);
}
}
oauth2Login 필터를 필터체인에 추가한후, 모든 요청에 대해서 인증하도록 설정
oauth2Login필터인 oauth2LoginAuthenticationFilter에서 권한 부여 서버 클라이언트 등록에 관한 정보를 가져오기 위해서 clientRegistrationRepository를 구현(UserDetailService에 유사한 방식) 메모리 저장 방식인 InMemoryClientRegistrationRepository 으로 등록
테스트
실행후 localhost:8080 에 접속해보자
성공!
리소스 서버
방금까지는 사용자가 클라이언트를 통해 계정 접근을 할떄 권한 부여 서버를 통해 자격 증명을 요청하여 인증까지 진행했다면 이제부터는 인증 토큰 발급 및 리소스 서버를 통한 토근 관리에 대해 알아보자 (아래 flow 기준으로 Return Access Token까지 진행한 상태이다)
'보안' 카테고리의 다른 글
[Spring Security in action] CSRF 보호 및 CORS 적용 (0) | 2024.02.03 |
---|---|
[Spring Security in action] 인증 필터 (0) | 2024.01.20 |
[Spring Security in action] 권한부여 (0) | 2024.01.20 |
[Spring Security in action] SecurityContext (0) | 2024.01.18 |
[Spring Security in action] AuthenticationProvider을 사용한 인증 (0) | 2024.01.16 |