OAuth 2.0 정리 및 계획

coolchaem·2022년 5월 24일
1

toyproject

목록 보기
16/21

OAuth(Open Authorization 2.0)은 로그인 기능에 많이 사용되고 있다.

정의

  • 인증을 위한 개방형 표준 프로토콜

과정

kakao login developer 사진을 가져와서 설명해보자면 인증을 위해 다음 과정을 거친다.

  1. 사용자가 앱에서 인증 요청 (예: 로그인 창)
    • authorization code를 요청한다.
  2. authorization code를 응답
  3. token요청을 위해서 code와 app의 client id가 필요하다
  4. acess token, refresh token을 응답해서 준다
  5. token을 포함한 data 요청
    • access token 은 보안을 위해 유효기간이 짧은 편
    • 유효기간이 만료되면 사용할 수 없음
  6. token 유효기간 만료 시 refresh token으로 새로운 token 요청
    • 이 때도 client id 필요

구현 계획

  • 서버
    • 토큰 생성에 필요한 client id, key 가질 예정
    • 토큰 쿠키 생성
      • 보안 옵션 적용(HTTPOnly, Secure)

        HTTPOnly: JavaScript의 Document.cookie API에 접근할 수 없는 옵션으로, Cross script 공격 방지
        Secure: HTTPS 프로토콜 상에서 암호화된(encrypted ) 요청일 경우에만 전송

  • 클라이언트
    • 소셜 로그인 modal 구현
    • 쿠키 생성 요청

(1) client id 생성 방법

client id는 타 사이트의 계정 인증과 같은 서비스를 이용하기 위해 타 사이트에 서비스를 이용하겠다고 나의 프로젝트를 등록하면서 생겨나는 id 이다.

  1. 아래는 git 계정 로그인을 위해 등록한 과정의 예시이다.
  • 개발자 세팅에 보면 oauth app을 등록하는 탭이 있다.

  • app 정보를 입력하는 란이 있는데 ip 주소랑 리턴받을 주소를 입력할 수 있다.

  • 등록하고 나면 clien Id, clienc secrets 를 발급받을 수 있다.

    • id의 경우 토큰 요청할 때 사용하기 때문에 노출되는 편인 것으로 보인다. 그러나 secret은 private key처럼 말 그대로 시크릿이다. 공개하면 절대 안 된다.
    • 아래는 완료된 예시

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api
https://developers.google.com/identity/protocols/oauth2
https://datatracker.ietf.org/doc/html/rfc6749
https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies

profile
Front-end developer

0개의 댓글