OAuth2 kakao 소셜로그인

Crow·2022년 9월 1일
0

Security

목록 보기
5/7

카카오의 로그인 api에 비밀키를 얻었다는 전제하에 글을 씀

대부분의 소셜로그인은 OAuth2(https://oauth.net/2)방식으로 데이터를 처리함
OAuth2는 문자열로 구성된 토큰을 주고받는 방식으로 토큰을 발행하거나
검사하는 방식을 통해서 서비스 간 데이터를 교환함

kakao의 경우는 REST API키를 이용해서 인가코드를 받음
-> 인가 코드는 '리다이렉트 URI'로 지정된 곳으로 전달됨
-> 인가코드를 자신의 비밀키와 같이 이용해 Access Token을 생성
-> Access Token을 이용해서 사용자의 정보를 요청함(이때 사용자가 동의했던 정보들을 얻어오는데 주로 이메일을 얻어오는 경우가 대부분)

카카오같은 경우엔 이메일을 필수 동의로 얻어오려면 검수신청을 통해서 검수받아야함 그러니 선택동의로 사용

application.yml

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: ${GOOGLE_CLIENT_ID}
            client-secret: ${GOOGLE_CLIENT_SECRET}
            scope:
              - profile
              - email

          naver:
            clientId: ${NAVER_CLIENT_ID}
            clientSecret: ${NAVER_CLIENT_SECRET}
            authorizationGrantType: authorization_code
            redirect_uri: '{baseUrl}/{action}/oauth2/code/{registrationId}'
            scope:
              - nickname
              - email

          kakao:
            client-name: kakao
            clientId: RESTAPI 키
            authorizationGrantType: authorization_code
            redirect_uri: '{baseUrl}/{action}/oauth2/code/{registrationId}'
            client-secret: 얻은암호
            client-authentication-method: POST
            scope:
              - profile_nickname
              - account_email

        # Provider 설정
        provider:
          naver:
            authorizationUri: https://nid.naver.com/oauth2.0/authorize
            tokenUri: https://nid.naver.com/oauth2.0/token
            userInfoUri: https://openapi.naver.com/v1/nid/me
            userNameAttribute: response
          kakao:
            authorizationUri: https://kauth.kakao.com/oauth/authorize
            tokenUri: https://kauth.kakao.com/oauth/token
            userInfoUri: https://kapi.kakao.com/v2/user/me
            userNameAttribute: id

참고

https://deeplify.dev/back-end/spring/oauth2-social-login#applicationyml

자바웹 개발 워크북

카카오 로그인 API

profile
어제보다 개발 더 잘하기 / 많이 듣고 핵심만 정리해서 말하기 / 도망가지 말기 / 깃허브 위키 내용 가져오기

0개의 댓글