본 포스팅은 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 보고 작성하였음

1. 네이버 로그인 연동

1.1 네이버 API 등록

1.2 네이버

네이버에서는 스프링 시큐리티를 공식 지원하지 않기 때문에 수동 입력이 필요

1.2.1 application-oauth.properties에 등록

# registration
spring.security.oauth2.client.registration.naver.client-id=클라이언트ID
spring.security.oauth2.client.registration.naver.client-secret=클라이언트 PW
spring.security.oauth2.client.registration.naver.redirect-uri={baseUrl}/{action}/oauth2/code/{registrationId}
spring.security.oauth2.client.registration.naver.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.naver.scope=name,email,profile_image
spring.security.oauth2.client.registration.naver.client-name=Naver

# provider
spring.security.oauth2.client.provider.naver.authorization-uri=https://nid.naver.com/oauth2.0/authorize
spring.security.oauth2.client.provider.naver.token-uri=https://nid.naver.com/oauth2.0/token
spring.security.oauth2.client.provider.naver.user-info-uri=https://openapi.naver.com/v1/nid/me
spring.security.oauth2.client.provider.naver.user-name-attribute=response ⓐ
  • ⓐ user-name-attribute=response
    • 기준이 되는 user_name의 이름을 네이버에서는 response로 해야함
    • 네이버의 회원 조회 시 반환되는 JSON 형태 때문임

1.2.2 스프링 시큐리티 설정 등록

OAuthAttributes에 네이버 설정 추가

@Getter
public class OAuthAttributes {
	
    ---
    
    public static OAuthAttributes of(String registrationId,
                                     String userNameAttributeName,
                                     Map<String, Object> attributes) {

        if ("naver".equals(registrationId)) {
            return ofNaver("id", attributes);
        }
        return ofGoogle(userNameAttributeName, attributes);

    }
    
    ---

    private static OAuthAttributes ofNaver(String userNameAttributeName,
                                            Map<String, Object> attributes) {
        return OAuthAttributes.builder()
                .name((String) attributes.get("name"))
                .email((String) attributes.get("email"))
                .picture((String) attributes.get("profileImage"))
                .attributes(attributes)
                .nameAttributeKey(userNameAttributeName)
                .build()
                ;
    }
    
    ---
    
}

index.mustache에 네이버 로그인 버튼 추가

	---

            {{^userName}}
                <a href="/oauth2/authorization/google" class="btn btn-info active" role="button">Google Login</a>
                <a href="/oauth2/authorization/naver" class="btn btn-info active" role="button">Naver Login</a> ⓐ
            {{/userName}}
	---
  • ⓐ /oauth2/authorization/naver
    • 네이버 로그인 URL은 application-oauth.properties에 등록한 redirect-uri 값에 맞춰 자동으로 등록됨
    • /oauth2/authorization/ 까지는 고정, 마지막 Path만 각 소셜 로그인 코드를 사용하면 됨

네이버 로그인 확인


profile
고우고우~

0개의 댓글