ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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에 잘 반영되었음을 확인할 수 있다.


     

    GitHub - qlsdud0604/spring-security-basic: 스프링 시큐리티의 기초를 학습하는 공간

    스프링 시큐리티의 기초를 학습하는 공간. Contribute to qlsdud0604/spring-security-basic development by creating an account on GitHub.

    github.com

     

    728x90

    댓글

Designed by Tistory.