본문 바로가기
카카오 REST API & SDK/카카오 로그인

OAuth2 vs OAuth2.1 vs Kakao Login

by kakao-TAM 2024. 6. 30.

참고.

https://oauth.net/2/

https://oauth.net/2.1/

https://developers.kakao.com/

 

OAuth 2.1은 OAuth 2.0의 보안과 사용자 데이터 보호를 강화하기 위해 사용할 수 있는 일반적인 기능을 통합하고 표준화를 진행중입니다.

 

OAuth 2.0과의 주요 차이점은 다음과 같습니다.

  • (Kakako Login 제공) 인증 코드 흐름을 사용하는 모든 OAuth 클라이언트에는 PKCE가 필요합니다. 
  • (Kakako Login 제공) 서명된 JWT로 클라이언트 인증을 위한 OpenID 제공
    • Oauth2는 API등 Provider 리소스 사용을 위한 인가 처리를 하고, 자체 발급한 JWT토큰으로 클라이언트 이증하는 것이 보편적이나 OIDC 스펙으로 클라이언트 측 인증도 제공하여 클라이언트와 상호작용 중 외부의 불법적 접근을 걸러낼 수 있습니다.
    • 참고. OpenID Connect
    • 참고. (nonce 검증 포함) 3. ID 토큰 유효성 검증하기
  • (Kakako Login 제공) 리디렉션 URI는 정확한 문자열 일치를 사용하여 비교해야 합니다.
  • (Kakako Login 제공) response_type=token 삭제
    • 암묵적 승인(implicit grant) 흐름을 더 이상 사용하지 않고, 일반적인 인가 코드 승인(authorization code grant) 흐름만 사용
  • (Kakako Login 제공) 리소스 소유자 비밀번호 자격 증명 부여 삭제
  • Redirect URI의 HTTPS(SSL/TLS) 사용 강제
    • 아마존 OAuth를 제외한 전세계 Provider는 이용자 편의성을 위해 제약하지 않으며, 단지 Redirect URI뿐만 아니라 운영 서비스는 HTTPS로 사용하도록 안내할 필요성은 있음.
    • 제약적 사용가능한 테스트앱에는 허용하고, 운영앱에는 제약하는 방법도 시도해볼만함.
  • (Kakako Login 제공) 베어러 토큰 사용은 헤더에서만 사용하고 쿼리스트링으로 사용 불가
  • (Kakako Login 제공) 공개(frontend) 클라이언트, 서버 측 클라이언트 타입을 명확히 정의하고 각 클라이언트 타입별로 적절한 보안 규칙을 제시
    • 카카오 로그인에서는 Javascript 키와 REST-API, NativeApp, Admin 별로 구분하여 앱키를 제공하고, 보안이 취약한 순서로 짧은 토큰 만료 시간과 기능적 제약을 제공.
  • (Kakako Login 제공) 공개 클라이언트의 Refresh token은 발급자 제한 또는 일회성 사용
    • 카카오 로그인에서는 Refresh token에 국한 하지 않고 전체 API에 대해 IP접근제어와 키해시 체크, 번들ID 체크, 도메인 체크로 발급자 제한을 합니다.
  • (Kakako Login 제공) 그 밖에, 인가코드 재사용 금지 / Client Secret 제공 / 열린 리디렉션방지 (등록된 Redirect URI만 허용) / 클라이언트 유형 기록과 허용 

 

 

댓글