-
Spring Security - 네이버 로그인Framework & Library/Spring Security 2021. 10. 5. 11:53
API 설정
프로젝트생성
ㆍ 네이버 개발자 홈페이지에 접속을 한 후 위 사진에 표시된 "애플리케이션 등록" 버튼을 클릭한다.
ㆍ 애플리케이션 정보를 위 사진과 같이 작성한 후 "등록하기" 버튼을 클릭한다.
ㆍ 애플리케이션을 등록한 후 Client ID와 Client Secret을 확인한 후 프로젝트 생성을 마친다.
Spring Security 설정
application.yml 파일 수정
ㆍ application.yml 파일에 위 코드를 추가하여 네이버 로그인을 위한 설정을 마무리한다.
ㆍ client-id와 client-secret에는 네이버 개발자 홈페이지에서 발급받은 Client ID와 Client Secret을 적는다.
ㆍ oauth-client 라이브러리에는 provider로 네이버가 등록되어 있지 않기 때문에 개발자가 직접 설정해주어야 한다.
ㆍ 그렇기 때문에 두 번째 표시 박스 안에 있는 코드와 같이 네이버 개발자 홈페이지를 참고하여 provider 설정을 추가로 해주어야 한다.
loginForm.html 수정
ㆍ loginForm.html 파일에 네이버 로그인을 수행할 수 있는 코드를 추가한다.
ㆍ "/oauth2/authorization/naver" 주소에 접근하면 application.yml 파일에서 설정한 naver의 authorization-uri의 주소를 호출하게 된다.
NaverUserInfo 클래스 생성
public class NaverUserInfo implements OAuth2UserInfo { private Map<String, Object> attributes; // oAuth2User.getAttributes() public NaverUserInfo(Map<String, Object> attributes) { this.attributes = attributes; } @Override public String getProviderId() { return (String) attributes.get("id"); } @Override public String getProvider() { return "naver"; } @Override public String getEmail() { return (String) attributes.get("email"); } @Override public String getName() { return (String) attributes.get("name"); } }
ㆍ provider 패키지 내에 네이버 로그인을 수행한 사용자의 정보를 받기 위한 클래스인 NaverUserInfo를 생성한다.
ㆍ 해당 클래스는 GoogleUserInfo, FacebookUserInfo 클래스와 동일하게 OAuth2UserInfo 인터페이스를 상속받는다.
PrincipalOauth2UserService 클래스 수정
ㆍ PrincipalOauth2UserService 클래스의 loadUser() 메서드에 위 코드와 같은 조건문을 추가한다.
ㆍ 네이버 로그인 요청 시 사용자 정보를 구글, 페이스북과는 다르게 (Map)oAuth2User.getAttributes().get("response")로 받는 이유는 네이버에서 제공하는 사용자 정보의 형태가 구글, 페이스북과 다르기 때문이다.
테스트
로그인 페이지
ㆍ 서버를 실행하고, 로그인 페이지에 접속한 후 네이버 로그인 링크를 클릭한다.
페이스북 로그인 페이지
ㆍ 네이버 로그인 링크에 접속한 후 본인의 네이버 계정을 통해 네이버 로그인을 수행한다.
로그인 결과 확인
ㆍ 로그인을 수행한 후 네이버 로그인을 수행한 사용자의 정보가 콘솔 창에 잘 출력되고 있음을 확인할 수 있다.
ㆍ 네이버 로그인 사용자의 정보 또한 DB에 잘 반영되었음을 확인할 수 있다.
728x90'Framework & Library > Spring Security' 카테고리의 다른 글
Spring Security JWT - 시큐리티 설정 (0) 2021.10.07 Spring Security JWT - 프로젝트 생성 및 환경설정 (0) 2021.10.07 Spring Security - 페이스북 로그인 (0) 2021.10.04 Spring Security - 구글 로그인 및 자동 회원가입 (0) 2021.10.04 Spring Security - Authentication 객체가 가질 수 있는 2가지 타입 (0) 2021.10.03