naver oauth login

This commit is contained in:
kim
2020-12-12 02:23:29 +09:00
parent 081723600f
commit 7fce2b2bc8
4 changed files with 60 additions and 2 deletions

View File

@@ -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<String, Object>) oAuth2User.getAttributes().get("response"));
}
String provider = oAuth2UserInfo.getProvider();

View File

@@ -0,0 +1,32 @@
package com.spring.security1.config.oauth.provider;
import java.util.Map;
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");
}
}

View File

@@ -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 라는 키값으로 네이버가 리턴해 준다.

View File

@@ -14,6 +14,7 @@
</form>
<a href="/oauth2/authorization/google">구글 로그인</a>
<a href="/oauth2/authorization/facebook">페이스북 로그인</a>
<a href="/oauth2/authorization/naver">네이버 로그인</a>
<a href="/joinForm">회원가입을 아직 하지 않으셨나요?</a>
</body>
</html>