참고.
OAuth 2.1은 OAuth 2.0의 보안과 사용자 데이터 보호를 강화하기 위해 사용할 수 있는 일반적인 기능을 통합하고 표준화를 진행중입니다.
OAuth 2.0과의 주요 차이점은 다음과 같습니다.
- (Kakako Login 제공) 인증 코드 흐름을 사용하는 모든 OAuth 클라이언트에는 PKCE가 필요합니다.
- PKCE는 카카오 로그인에서 사용 가능하나 가이드에는 없음, Native SDK는 내부적으로 PCKE방식으로 작동함
- 참고. Proof Key for Code Exchange by OAuth Public Clients
- (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만 허용) / 클라이언트 유형 기록과 허용
'카카오 REST API & SDK > 카카오 로그인' 카테고리의 다른 글
Android SDK를 이용한 카카오 계정으로 로그인에서 기본브라우저 변경 (0) | 2022.08.03 |
---|---|
iOS SDK 카카오 로그인, SPM(Swift Package Manager)으로 사용해보기 (0) | 2022.06.10 |
카카오 비즈보드, 애드뷰 "톡에서 회원가입" 링크 구성 (0) | 2022.05.04 |
카카오로그인 제3자정보제공 동의항목 "수집" 후 제공 기능 (0) | 2022.05.04 |
카카오 로그인, 언어 변경 (0) | 2022.04.20 |
댓글