개발
AWS Cognito + Spring Security 통합 설정
•
배경
◦
기존 NOI 프로젝트에서 firebase authentication 기능을 이용해 인증/인가를 구현했었는데, AWS로 마이그레이션을 하면서 AWS Cognito 기능을 이용해 인증/인가를 구현하기로 하였다.
◦
직적 JWT 토큰 서버를 구축하는 것도 하나의 방법이지만, 현재 프로젝트에서 중요한 부분은 데이터를 처리하는 API 쪽이라 인증/인가는 Cognito를 이용해 빠르게 구현하기로 하였다.
◦
사실 JWT 토큰 서버를 직접 구축하는 건 이전에 두 번 정도 해본 반면, Cognito는 처음 사용해보는데 새로운 걸 배우는 거라 설렌다!
•
과정
◦
build.gradle에 아래 코드 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security-oauth2-client'
implementation 'org.springframework.security:spring-security-oauth2-jose'
}
Java
복사
◦
application.yml에 아래 코드 추가
spring:
security:
oauth2:
client:
registration:
cognito:
clientId: clientId
clientSecret: clientSecret
scope: openid
redirect-uri: http://localhost:8080/login/oauth2/code/cognito
clientName: clientName
provider:
cognito:
issuerUri: https://cognito-idp.{region}.amazonaws.com/{poolId}
user-name-attribute: cognito:username
Java
복사
◦
Security 구성 클래스 추가
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf()
.and()
.authorizeRequests(authz -> authz.mvcMatchers("/")
.permitAll()
.anyRequest()
.authenticated())
.oauth2Login()
.and()
.logout()
.logoutSuccessUrl("/");
}
}
Java
복사
하루 정리
TIL 작성하기
NOI
API 명세서 작성
Cognito + Spring security 연동