제가 경험했던 OAuth를 정리하기 위해 포스팅합니다.
카카오, 네이버 로그인을 시도해보았고, 차례대로 포스팅하겠습니다.
먼저 카카오입니다.
우선 kakao developers 페이지에 들어가서 회원가입/로그인을 진행합니다.
그 다음 화면 상단의 "내 애플리케이션"을 클릭하여 들어옵니다.
여기서 "애플리케이션 추가하기"를 누릅니다.
정보를 입력하고 저장 버튼을 누릅니다.
본인이 만든 애플리케이션이 추가가 되었으니 들어갑니다.
들어오자마자 앱 키가 뜹니다.
당연히 중요한 키들이니 노출되지 않도록 주의해야 합니다.
여기서 사용할 키는 "REST API 키" 입니다.
키 등록은 SpringBoot에서 할 예정이니 왼쪽 메뉴의 "플랫폼"으로 넘어갑니다.
여기서 본인의 프로젝트에 맞는 플랫폼을 등록합니다.
저는 Web을 작성하였습니다.
그 다음은 카카오 로그인을 활성화 합니다.
상태가 OFF인데, 눌러서 ON으로 변경합니다.
그 밑에 있는 Redirect URI는 로그인이 성공했을 때 이동할 URI를 작성해주시면 됩니다.
구분은 엔터로해서 최대 10개를 등록할 수 있습니다.
local에서 테스트하는 uri와 배포를 하셨다면 배포uri를 넣어줍니다.
그 다음 동의항목입니다.
애플리케이션에서 사용할 동의항목을 설정합니다.
하지만 카카오계정(이메일)과 같은 중요한 정보는 "필수 동의"가 안되거나 "권한 없음" 설정이 되어있는 항목이 있습니다.
이런 경우에는 "비즈니스 설정 바로가기"에 들어가서 사업자 정보를 등록해야 더 많은 권한을 받을 수 있습니다.
회사에서 진행중인 프로젝트라면 가능하겠지만 학생 또는 교육생이거나 개인 프로젝트에서는 등록하기 어렵다고 볼 수 있습니다.
동의항목 설정이 끝났다면 보안으로 넘어갑니다.
Client Secret 코드를 발급 받아 보안을 강화할 수 있습니다.
되도록이면 발급 받는 것을 권장합니다.
토큰 발급을 받았더라면 활성화 상태를 "사용함"으로 변경합니다.
기본값은 "사용안함"입니다.
그러면 이제 SpringBoot로 넘어갑니다.
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api
우선 REST API 요청 관련은 문서를 참고해주시면 됩니다.
# gradle
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
# Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
먼저 OAuth를 위한 의존성을 추가합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
spring:
security:
oauth2:
client:
provider:
kakao:
authorization-uri: https://kauth.kakao.com/oauth/authorize # 카카오 로그인 요청 uri
token-uri: https://kauth.kakao.com/oauth/token # 토큰을 발급받기 위한 uri
user-info-uri: https://kapi.kakao.com/v2/user/me # 유저 정보를 받아오기 위한 uri
registration:
kakao:
client-id: # REST API Key
client-secret: # Client Secret Key
client-authentication-method: POST
authorization-grant-type: authorization_code
redirect-uri: # Redirect URI
|
cs |
그 다음은 yml파일에 필수 정보를 넣어줍니다.
여기 넣은 정보들은 Java 코드에서 아래와 같이 사용할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
@Value("${spring.security.oauth2.client.registration.kakao.client-id}")
private String kakaoClientId;
@Value("${spring.security.oauth2.client.registration.kakao.client-secret}")
private String kakaoClientSecret;
@Value("${spring.security.oauth2.client.registration.kakao.client-authentication-method}")
private String kakaoAuthenticationMethod;
@Value("${spring.security.oauth2.client.registration.kakao.authorization-grant-type}")
private String kakaoGrantType;
@Value("${spring.security.oauth2.client.registration.kakao.redirect-uri}")
private String kakaoRedirectUri;
@Value("${spring.security.oauth2.client.provider.kakao.authorization-uri}")
private String kakaoAuthorizationUri;
@Value("${spring.security.oauth2.client.provider.kakao.token-uri}")
private String kakaoTokenUri;
@Value("${spring.security.oauth2.client.provider.kakao.user-info-uri}")
private String kakaoUserInfoUri;
@Value("Bearer")
private String tokenType;
|
cs |
글이 길어질 것 같아서 코드작성 부분은 다음 글에서 다루도록 하겠습니다.
'Spring' 카테고리의 다른 글
SpringBoot OAuth 적용 [Naver - 1] (0) | 2022.10.17 |
---|---|
SpringBoot OAuth 적용 [Kakao - 2] (0) | 2022.10.17 |
JPA order by rand() limit (0) | 2022.10.13 |
Postman을 이용한 다수의 File, Dto 동시 Post 요청 (0) | 2022.10.08 |
@IdClass를 이용하여 복합 키를 복합 키로 갖는 Entity 구현 (0) | 2022.04.13 |