빙응의 공부 블로그

[Spring]OAuth2.0 - 필수 변수와 네이버 요청하기 본문

Spring/개인공부_실습

[Spring]OAuth2.0 - 필수 변수와 네이버 요청하기

빙응이 2024. 7. 30. 19:46

 

📝 OAuth2 소셜 로그인을 위한 변수 설정

application.properties
#registration
spring.security.oauth2.client.registration.서비스명.client-name=서비스명
spring.security.oauth2.client.registration.서비스명.client-id=서비스에서 발급 받은 아이디
spring.security.oauth2.client.registration.서비스명.client-secret=서비스에서 발급 받은 비밀번호
spring.security.oauth2.client.registration.서비스명.redirect-uri=서비스에 등록한 우리쪽 로그인 성공 URI
spring.security.oauth2.client.registration.서비스명.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.서비스명.scope=리소스 서버에서 가져올 데이터 범위

#provider
spring.security.oauth2.client.provider.서비스명.authorization-uri=서비스 로그인 창 주소
spring.security.oauth2.client.provider.서비스명.token-uri=토큰 발급 서버 주소
spring.security.oauth2.client.provider.서비스명.user-info-uri=사용자 정보 획득 주소
spring.security.oauth2.client.provider.서비스명.user-name-attribute=응답 데이터 변수

 

예시
#registration
spring.security.oauth2.client.registration.naver.client-name=naver
spring.security.oauth2.client.registration.naver.client-id=발급아이디
spring.security.oauth2.client.registration.naver.client-secret=발급비밀번호
spring.security.oauth2.client.registration.naver.redirect-uri=http://localhost:8080/login/oauth2/code/naver
spring.security.oauth2.client.registration.naver.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.naver.scope=name,email

#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

 

🧷참고! registration은 우리 서비스 특정을 위해 필수이지만 provider의 경우 유명한 사이트이면 해당 서버가 미리 가지고 있다.( 구글, Okta, 페이스북, 깃허브, 등등)

 

📝 네이버 로그인 API 신청하기 

네이버 개발자 센터 - NAVER Developers

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

여기에 들어가 API 활용 신청을 하면 된다.

 

이렇게 진행하면 ID와 PASSWORD를 받을 수 있다!!

spring:
  profiles:
    active: local
  datasource:
    url: jdbc:h2:tcp://localhost/~/oauth
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        format_sql: true
        # show_sql: true # 주석 처리된 부분을 활성화하면 SQL 쿼리가 로그에 출력됩니다.

  logging:
    level:
      org:
        hibernate:
          SQL: debug
          type: trace # Hibernate 쿼리 매개변수 및 유형을 로깅하려면 이 항목을 활성화합니다.

  security:
    oauth2:
      client:
        registration:
          naver:
            client-name: naver
            client-id:MY_ID
            client-secret: MY_PASSWORD
            redirect-uri: http://localhost:8080/login/oauth2/code/naver
            authorization-grant-type: authorization_code
            scope:
              - name
              - email
        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

이제 나의 아이디와 나의 패스워드를 넣어주면 된다.

해당 형식은 yml이기에 propertise는 밑에처럼 하면 된다.

#registration
spring.security.oauth2.client.registration.naver.client-name=naver
spring.security.oauth2.client.registration.naver.client-id=
spring.security.oauth2.client.registration.naver.client-secret=
spring.security.oauth2.client.registration.naver.redirect-uri=http://localhost:8080/login/oauth2/code/naver
spring.security.oauth2.client.registration.naver.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.naver.scope=name,email

#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

 

 

 

창은 잘뜬다!!

물론 아직 UserDetail를 만들지 않아서 동의하면 오류가 나온다!