diff --git a/spring-security/src/main/java/com/spring/security1/config/oauth/PrincipalOauth2UserService.java b/spring-security/src/main/java/com/spring/security1/config/oauth/PrincipalOauth2UserService.java index dfd0e29c..e0d6a597 100644 --- a/spring-security/src/main/java/com/spring/security1/config/oauth/PrincipalOauth2UserService.java +++ b/spring-security/src/main/java/com/spring/security1/config/oauth/PrincipalOauth2UserService.java @@ -3,6 +3,7 @@ package com.spring.security1.config.oauth; import com.spring.security1.config.auth.PrincipalDetails; import com.spring.security1.config.oauth.provider.FacebookUserInfo; import com.spring.security1.config.oauth.provider.GoogleUserInfo; +import com.spring.security1.config.oauth.provider.NaverUserInfo; import com.spring.security1.config.oauth.provider.OAuth2UserInfo; import com.spring.security1.model.User; import com.spring.security1.repository.UserRepository; @@ -14,6 +15,8 @@ import org.springframework.security.oauth2.core.OAuth2AuthenticationException; import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.stereotype.Service; +import java.util.Map; + @Service @RequiredArgsConstructor public class PrincipalOauth2UserService extends DefaultOAuth2UserService { @@ -40,6 +43,9 @@ public class PrincipalOauth2UserService extends DefaultOAuth2UserService { } else if(userRequest.getClientRegistration().getRegistrationId().equals("facebook")){ System.out.println("페이스북 로그인 요청"); oAuth2UserInfo = new FacebookUserInfo(oAuth2User.getAttributes()); + } else if(userRequest.getClientRegistration().getRegistrationId().equals("naver")) { + System.out.println("네이버 로그인 요청"); + oAuth2UserInfo = new NaverUserInfo((Map) oAuth2User.getAttributes().get("response")); } String provider = oAuth2UserInfo.getProvider(); diff --git a/spring-security/src/main/java/com/spring/security1/config/oauth/provider/NaverUserInfo.java b/spring-security/src/main/java/com/spring/security1/config/oauth/provider/NaverUserInfo.java new file mode 100644 index 00000000..c20c6a10 --- /dev/null +++ b/spring-security/src/main/java/com/spring/security1/config/oauth/provider/NaverUserInfo.java @@ -0,0 +1,32 @@ +package com.spring.security1.config.oauth.provider; + +import java.util.Map; + +public class NaverUserInfo implements OAuth2UserInfo { + + private Map attributes; // oauth2User.getAttributes() + + public NaverUserInfo(Map 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"); + } +} diff --git a/spring-security/src/main/resources/application.yml b/spring-security/src/main/resources/application.yml index 79b05be0..a4250ea1 100644 --- a/spring-security/src/main/resources/application.yml +++ b/spring-security/src/main/resources/application.yml @@ -36,5 +36,24 @@ spring: client-id: 1135697936892001 client-secret: 681e0ce30d4fdf4df0ed28874a85b1af scope: - - email - - public_profile + - email + - public_profile + + naver: + client-id: 5YvofRpJ1pX9ZadJMUyk + client-secret: hN2iAEatk3 + 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 # /oauth2/authorization/naver 요청시 + token-uri: https://nid.naver.com/oauth2.0/token + user-info-uri: https://openapi.naver.com/v1/nid/me + user-name-attribute: response # 회원 정보를 json으로 받는데 response 라는 키값으로 네이버가 리턴해 준다. + + diff --git a/spring-security/src/main/resources/templates/loginForm.html b/spring-security/src/main/resources/templates/loginForm.html index d5f9f938..06e81269 100644 --- a/spring-security/src/main/resources/templates/loginForm.html +++ b/spring-security/src/main/resources/templates/loginForm.html @@ -14,6 +14,7 @@ 구글 로그인 페이스북 로그인 + 네이버 로그인 회원가입을 아직 하지 않으셨나요? \ No newline at end of file