본문으로 건너뛰기
언어

@plott/webkit-auth-provider-kakao0.4.0

@plott/webkit-auth-oauth 제공자 — 카카오 로그인(OIDC)

설치

pnpm
pnpm add @plott/webkit-auth-provider-kakao@0.4.0

진입점(exports)

import타입파일
@plott/webkit-auth-provider-kakao./dist/index.d.ts./dist/index.js

@plott/webkit-auth-oauth 용 카카오 로그인(OIDC) 정의입니다.

진입점

진입점실행 위치내보내는 것
@plott/webkit-auth-provider-kakao서버kakao, kakaoClaims, 타입 KakaoOptions

붙이기

ts
import { kakao } from "@plott/webkit-auth-provider-kakao";
kakao({ clientId: process.env.KAKAO_REST_API_KEY!, clientSecret: process.env.KAKAO_CLIENT_SECRET, scope: "openid profile_nickname" })
옵션기본값 / 뜻
clientIdREST API 키
clientSecret콘솔에서 Client Secret 을 쓰는 경우만. 없으면 퍼블릭 클라이언트로 client_id 만 보냅니다
scopeopenid. 동의 항목(profile_nickname, account_email 등)을 더합니다
nativeTokenid_token
exchangeToken지정하지 않음
issuerhttps://kauth.kakao.com
idkakao
extraAuthParams없음
clientAuthpost. 토큰 엔드포인트 클라이언트 인증 방식(basic·post·none)
embeddedWebViewallowed

한국 서비스(카카오)용 패키지입니다. 다른 로그인 수단과 달리 필요한 앱만 설치해 씁니다.

redirect_uri <origin>/auth/callback/kakao 를 콘솔에 등록합니다.

kakaoClaims() 는 표준 클레임 매퍼에 nickname 을 표시 이름으로 더한 PrincipalMapper 입니다. kakao 가 이 매퍼를 principal 로 씁니다.

기본으로 지키는 것

  • 카카오 토큰 엔드포인트는 client_secret 을 본문으로 받으므로 clientAuth 는 post 입니다.
  • 카카오 id_token 은 표시 이름을 name 이 아니라 nickname(profile_nickname 동의 항목)에 둡니다. name 이 있으면 name 이 우선이고, 문자열이 아닌 nickname 은 무시합니다.
  • id_token 은 카카오 디벨로퍼스 콘솔에서 OpenID Connect 를 켠 앱만 받습니다. 켜지 않은 앱은 exchangeToken·nativeToken 을 access_token 으로 두고, 인증 서버(AS)가 카카오 사용자 정보 API 로 확인합니다.
  • 앱 WebView 안의 웹 로그인을 허용합니다(embeddedWebView: "allowed").

그 밖

peer: @plott/webkit-auth, @plott/webkit-auth-oauth.