2024.01.14 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (5) - 구글 로그인 (OAuth 2.0)
2024.01.14 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (6) - 카카오 로그인 (OAuth 2.0)
- 구글, 카카오 로그인을 다뤘음
- 카카오 로그인 까지 수정된 코드를 수정하는 방식으로 네이버 로그인을 다룸
1. OAuth 사용 네이버 로그인 구현
1-1. 애플리케이션 추가하기
- 네이버 개발자 센터 ( https://developers.naver.com/main/ ) 접속
- 로그인
- Application > 애플리케이션 등록
- 약관동의
- 계정 설정 (아래 정보 기입)
- 휴대폰 인증
- 이메일
- 애플리케이션 등록 (API 이용신청)
- 애플리케이션 이름 : OAuth 네이버 로그인 예제
- 사용 API : 네이버 로그인
- 제공 정보 선택 : 회원이름, 연락처 이메일 주소 => 필수
- 로그인 오픈 API 서비스 환경 : PC 웹
- 서비스 URL : http://localhost:8080
- 네이버 로그인 Callback URL : http://localhost:8080/login/oauth2/code/naver
1-2. application.yml 수정
# application.yml에 아래 설정 추가
spring:
security:
oauth2:
client:
registration:
naver:
client-id: [애플리케이션 정보에서 확인 가능한 Client ID]
client-secret: [애플리케이션 정보에서 확인 가능한 Client Secret]
scope:
- name
- email
client-name: Naver
authorization-grant-type: authorization_code
redirect-uri: http://localhost:8080/login/oauth2/code/naver
provider:
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorize
token-uri: https://nid.naver.com/oauth2.0/token
user-info-uri: https://openapi.naver.com/v1/nid/me
user-name-attribute: response
- client-id, client-secret 확인 방법
- 네이버 개발자 사이트 > Application > 내 애플리케이션 > OAuth 네이버 로그인 예제 > 애플리케이션 정보 에서 확인!
1-3. NaverUserDetails 추가
@AllArgsConstructor
public class NaverUserDetails implements OAuth2UserInfo {
private Map<String, Object> attributes;
@Override
public String getProvider() {
return "naver";
}
@Override
public String getProviderId() {
return (String) ((Map) attributes.get("response")).get("id");
}
@Override
public String getEmail() {
return (String) ((Map) attributes.get("response")).get("email");
}
@Override
public String getName() {
return (String) ((Map) attributes.get("response")).get("name");
}
}
1-4. CustomOauth2UserService 수정
// 기존의 코드 중 else if (provider.equals("kakao"))의 밑에 아래 코드 추가
else if (provider.equals("naver")) {
log.info("네이버 로그인");
oAuth2UserInfo = new NaverUserDetails(oAuth2User.getAttributes());
}
log.info()로 찍어본 attributes
더보기
getAttributes : {resultcode=00,
message=success,
response={id=MYqaf0vLNx3H3KCD5xNuHRlNalq37BAizNpRIjI8xxQ,
email=chm2006@naver.com, name=안창민}}
이러한 attributes의 구조를 바탕으로 NaverUserDetails에서 값을 추출함
1-5. login.html 수정
- a href 태그 추가하여 네이버 로그인 가능하게 수정
<a href="/oauth2/authorization/naver">네이버 로그인</a>
2. 실행 결과
2-1. 로그인 화면
- 네이버 로그인 항목이 추가됨
2-2. 네이버 로그인 클릭 시
- 네이버 로그인 기능 확인
2-3. 네이버 로그인 이후 마이페이지
- ID : "provider(naver)"_"providerId" 형태
2-4. MySQL에서 확인
'Spring Boot' 카테고리의 다른 글
[Spring Boot] JaCoCo로 테스트 커버리지 확인 (3) | 2024.01.30 |
---|---|
[Spring Boot] 로그인 기능 구현 (8) - 페이스북 로그인 (OAuth 2.0) (0) | 2024.01.14 |
[Spring Boot] 로그인 기능 구현 (6) - 카카오 로그인 (OAuth 2.0) (0) | 2024.01.14 |
[Spring Boot] 로그인 기능 구현 (5) - 구글 로그인 (OAuth 2.0) (0) | 2024.01.14 |
[Spring Boot] 로그인 기능 구현 (4) - 스프링 시큐리티 사용 JWT 로그인 (1) | 2024.01.13 |