네이버 서비스 등록

1. 네이버 로그인 API 신청

구글에 비해 상대적으로 UI도 깔끔하고 쉬운 편입니다.

2. 야믈파일 설정

spring:
  security:
    oauth2:
      client:
        registration:
          naver:
              client-id: secret
              client-secret: secret
              client-name: Naver
              redirect-uri: {baseUrl}/{action}/oauth2/code/{registrationId}
              authorization-grant-type: authorization_code
              scope: name, email, profile_image
          provider:
            naver:
              authorization-uri: https://nid.naver.com/oauth2.0/authorize
              token-uri: https://nid.naver.com/oauth2.0/token
              user-info-uri: https://openapi.naver.com/v1/nid/me
              user-name-attribute: response

3. 스프링 시큐리티 등록 설정

기존의 CustomOAuth2UserService에서 OAuthAttributes의 정적 팩토리 메소드를 호출하기 때문에 OAuthAttributes만 바꾸면 됩니다. 소셜 로그인 완료 후 돌아온 응답이 구글과 네이버가 상이하기 때문에 이런 과정을 거쳐야만 합니다. 아래처럼 정적 팩토리 메소드를 호출 시 registratinIdnaver인지 확인하면 됩니다.

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) {
    Map<String, Object> response = (Map<String, Object>) attributes.get("response");
    return OAuthAttributes.builder()
      .name((String) response.get("name"))
      .email((String) response.get("email"))
      .picture((String) response.get("profile_image"))
      .attributes(response)
      .nameAttributeKey(userNameAttributeName)
      .build();
  }

댓글남기기