이미지 출처 : https://hoestory.tistory.com/32
OAuth
를 검색하면 가장 많이 볼 수 있는, 유명한 흐름도이다. 여기서 중요한 것은 6번
이다. JWT 토큰
을 사용한다. 사용자에게 우리 서버에서 만든 JWT 토큰
을 발급해주고, 이 토큰을 이용해 우리 서비스에 접근 시켜도 되는 것인지 검증하는 것이다. 그래서 우리 서버 전용 토큰을 발급하는 6번
과정이 필요하다. build.gradle
에 아래와 같이 의존성을 추가해 준다.implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'com.auth0:java-jwt:4.2.1'
implementation 'org.apache.commons:commons-lang3'
implementation 'com.google.guava:guava:31.1-jre'
implementation 'net.pwall.json:jsonutil:5.0'
implementation 'com.googlecode.json-simple:json-simple:1.1.1'
code
와 state
값을 리턴하는 데 사용된다. 네이버 로그인 인증 요청 API 호출 후 사용자의 네이버 로그인과 정보 제공 동의가 완료되면 Callback URL에 http://콜백URL/redirect?code={code값}&state={state값}
와 같은 형태로 데이터가 담겨 전송된다. [OAuth] Spring Boot + React + OAuth2.0 이용한 네이버, 카카오 로그인
네이버에서 토큰을 받아오는 과정은 이 블로그에 설명이 잘 되어 있다.
jwt:
token:
header: api_key
issuer: soil_server
clientSecret: /* 임의의 값 */
expirySeconds: 0
package com.august.soil.api.configure;
configure
라는 이름으로 만든다.configure
패키지 아래에 application.yml
로부터 JWT 설정 정보를 읽어올 클래스를 JwtTokenConfigure
라는 이름으로 만든다. import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import static org.apache.commons.lang3.builder.ToStringBuilder.reflectionToString;
/**
* application.yml 에서 JWT 설정 정보를 읽어온다.
*/
@Component
@ConfigurationProperties(prefix = "jwt.token")
@Getter @Setter
public class JwtTokenConfigure {
private String header;
private String issuer;
private String clientSecret;
private int expirySeconds;
@Override
public String toString() {
return reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}