아유 배아파~
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.0'
id 'io.spring.dependency-management' version '1.1.5'
}
group = 'com.jsh'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'
}
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.0'
id 'io.spring.dependency-management' version '1.1.5'
}
group = 'com.jsh'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
// implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// testImplementation 'org.springframework.security:spring-security-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'
}
tasks.named('test') {
useJUnitPlatform()
}
OAuth2AuthorizationRequestRedirectFilter
가 소셜로그인 인증서버에 요청 보냄 OAuth2LoginAuthenticationFilter
가 코드를 받아서 Access 토큰 발급
JWTFilter
: 우리가 커스텀해서 등록해야 함
OAuth2AuthorizationRequestRedirectFilter
/oauth2/authorization/서비스명
OAuth2LoginAuthenticationFilter
: 외부 인증 서버에 설정할 redirect_uri
/login/oauth2/code/서비스명
OAuth2UserDetailsService
OAuth2UserDetails
LoginSuccessHandler
JWTFilter
JWTUtil
: JWT를 발급 및 검증하는 클래스인증요청을 보내는 주소, 토큰을 요청하는 주소, 등등이 필요하다.
자바 코드 내에서 사용해도 되지만(?) 저번에 구글만 쓸때는 그렇게 했었다.
지금은 다른 파일에서 변수를 설정하도록하자
provider
부분은 google의 경우 이미 OAuth2
클라이언트가 값을 가지고 있어서 설정을 하지 않아도 된다. 그러나 카카오나 네이버의 경우 꼭 등록을 해야한다.
spring:
security:
oauth2:
client:
registration:
google:
client-name: Google
client-id: 서비스에서 발급 받은 아이디
client-secret: 서비스에서 발급 받은 비밀번호
redirect-uri: 서비스에 등록한 우리쪽 로그인 성공 URI
authorization-grant-type: authorization_code
scope:
- profile
- email
# 유명한 서비스의 경우 아래는 이미 알고 있다. 따라서 카카오나 네이버의 경우는 직접 등록이 필요함~!
# provider:
# google:
# authorization-uri: https://accounts.google.com/o/oauth2/auth
# token-uri: https://oauth2.googleapis.com/token
# user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo
# user-name-attribute: sub