fix: forward OIDC nonce to native Kakao login - #73
Conversation
| prompts ?? [], | ||
| useKakaoAccountLogin ?? false, | ||
| scopes ?? [], | ||
| web?.nonce, |
There was a problem hiding this comment.
변경해 주셔서 감사합니다. nonce는 웹뿐 아니라 Android와 iOS Kakao SDK에서도 지원하는 옵션으로 확인됩니다. 현재 구조에서는 네이티브에서 nonce를 사용할 때 타입상 web.redirectUri도 함께 전달해야 합니다. 가능하다면 nonce?: string을 최상위 로그인 옵션으로 두고, 네이티브와 index.web.ts가 같은 값을 사용하도록 구성하는 방향은 어떨지 검토 부탁드립니다.
There was a problem hiding this comment.
안녕하세요, 리뷰해 주셔서 감사합니다.
말씀 주신 대로 네이티브에서도 지원되는 옵션인 만큼 최상위에 두는 것이 더 적절한 것 같습니다. 제안 주신 방향대로 nonce를 최상위 로그인 옵션으로 옮기고, 네이티브와 index.web.ts가 같은 값을 사용하도록 수정했습니다.
관련하여 문서(login.mdx 한/영)에도 nonce 항목을 추가해 두었습니다.
web.nonce는 기존 버전에서 제공되던 옵션이라 하위호환을 위해 일단 남겨두었습니다. index.web.ts는 최상위 nonce를 우선 사용하고, 없으면 web.nonce로 동작하도록 했습니다. 이 부분은 어떻게 처리하는 것이 좋을지 의견 주시면 반영하겠습니다. 감사합니다.
|
CI 환경 수정이 |
알려주셔서 감사합니다. 최신 main 병합하여 푸시해 두었습니다. CI 결과 한 번 더 확인 부탁드리겠습니다. |
|
기여감사합니다! |
OIDC 기반 인증을 카카오 로그인과 연동하는 과정에서
nonce관련 문제를 발견해, 다른사용자분들께도 도움이 될 수 있을 것 같아 수정 사항을 제안드립니다.
Type of change
What does this change?
login()의 TypeScript 타입에는web.nonce가 정의돼 있지만 실제로는Native.login()호출에전달되지 않습니다. Android/iOS 네이티브 브릿지에도
nonce파라미터가 없습니다.OIDC
nonce는id_token재전송 공격을 막기 위해 요청 시 보낸 값과id_token의nonceclaim을대조하는 데 쓰입니다. 지금은 이 claim이 카카오 로그인에서 항상 비어 있어서, nonce를 검증하는
백엔드에서는 로그인이 거부됩니다.
카카오 네이티브 SDK는 이미
nonce파라미터를 지원합니다.UserApiClient.loginWithKakaoTalk/loginWithKakaoAccount/loginWithNewScopes(nonce: ...)UserApi.loginWithKakaoTalk/loginWithKakaoAccount(nonce: ...)리뷰 반영으로
nonce를 최상위 로그인 옵션으로 두고, 아래 체인 전체로 연결했습니다.웹(
index.web.ts)도 같은 최상위nonce를 우선 사용하며, 기존web.nonce는 하위호환을 위해폴백으로 동작합니다.
Testing
tsc -b,yarn prepack,yarn lint(ESLint/SwiftFormat/ktlint/ClangFormat) 모두 통과RNCKakaoUserManager.swift,RNCKakaoUser.mm) 정상 컴파일nonceclaim 검증까지 통과 확인감사합니다