오답노트
[Spring Security] OAuth2 로그인 본문
OAuth2
다량의 사용자를 보유하고 있는 벤더에게서 사용자 정보를 위임을 받아 사용자를 가입하게 하는 방식이다.
개발 환경 구축
dependencies {
implementation("$boot:spring-boot-starter-oauth2-client")
}
build.gradle에 위와 같은 의존성을 추가한다.
spring:
security:
oauth2:
client:
registration:
google:
client-id: 532557492921-oanhrsrege0kqvb7q1v0v2o4lcu0ktlc.apps.googleusercontent.com
client-secret: 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
application.yml 에 위와 같이 설정한다.
구현
@RestController("/")
public class HomeController {
@PreAuthorize("isAuthenticated()")
@GetMapping("/greeting")
public OAuth2User main(@AuthenticationPrincipal OAuth2User user){
return user;
}
}
위 처럼 간단한 API를 구현한다.
return으로는 google에서 받은 정보를 화면에 출력한다.
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SnsLoginSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.oauth2Login()
;
}
}
위 처럼 SecurityConfiguration 클래스를 생성한다.
configure를 오버라이드해 @PreAuthorize가 있는 접속에는 oauth2login을 필요하게 만든다.
'Java > Spring' 카테고리의 다른 글
[SpringBoot] SpringBoot 3.2.5에서 JSP 설정 (0) | 2024.05.06 |
---|---|
[SpringBoot] @Controller 와 @RestController (0) | 2024.05.06 |
[Spring Security] SessionManagementFilter (0) | 2023.07.27 |
[Spring JPA] 영속성 전이(Cascade) 와 고아제거속성(orphanRemoval) (0) | 2023.07.24 |
[Spring JPA] Entity Relations (0) | 2023.07.19 |