@plott/webkit-auth-provider-apple0.4.0
@plott/webkit-auth-oauth 제공자 — Sign in with Apple(form_post, ES256 client_secret 자동 생성·교체)
설치
pnpm
pnpm add @plott/webkit-auth-provider-apple@0.4.0진입점(exports)
| import | 타입 | 파일 |
|---|---|---|
@plott/webkit-auth-provider-apple | ./dist/index.d.ts | ./dist/index.js |
@plott/webkit-auth-oauth 용 Sign in with Apple 정의입니다.
진입점
| 진입점 | 실행 위치 | 내보내는 것 |
|---|---|---|
@plott/webkit-auth-provider-apple | 서버 | apple, appleClientSecret, 타입 AppleKey, AppleOptions |
붙이기
ts
import { apple } from "@plott/webkit-auth-provider-apple";
apple({ clientId: process.env.APPLE_SERVICE_ID!, clientSecret: { teamId: process.env.APPLE_TEAM_ID!, keyId: process.env.APPLE_KEY_ID!, privateKey: process.env.APPLE_PRIVATE_KEY! },})| 옵션 | 기본값 / 뜻 |
|---|---|
clientId | 웹 로그인의 Service ID |
clientSecret | 키 정보 { teamId, keyId, privateKey } 또는 미리 만든 client_secret(문자열·함수) |
scope | openid email name |
secretTtlSeconds | 3600. client_secret JWT 수명. 300 초과 15777000 이하의 정수 |
issuer | https://appleid.apple.com |
id | apple |
responseMode | scope 에 name·email 이 있으면 form_post, 없으면 query. 직접 주면 그 값이 앞섭니다 |
appleClientSecret(key, clientId, ttlSeconds?) 는 client_secret 을 돌려주는 비동기 함수를 만듭니다.
기본으로 지키는 것
- client_secret 은 Apple 개인 키(.p8)로 서명한 ES256 JWT 입니다. 만료 5분 전까지는 같은 값을 돌려주고 그 뒤에 새로 서명합니다.
- 수명 상한은 Apple 이 받는 6개월(15777000초)입니다. 갱신 여유(5분) 이하의 수명은 매번 새로 서명하게 되므로 받지 않습니다. 범위를 벗어나면
@plott/webkit-auth-provider-apple:로 시작하는 오류로 시작할 때 멈춥니다. privateKey는 .p8 파일 내용(PKCS#8 PEM)입니다. 비밀 관리자가 한 줄(\n글자)로 넘겨도 받습니다. PEM 이 아니면 첫 로그인(exchange_failed)이 아니라 시작할 때 멈춥니다. 키는 저장소·환경 파일에 두지 않고 비밀 관리자(1Password 등)에서 주입합니다.scope에name또는email이 있으면responseMode는form_post이고, 없으면query입니다. Apple 은 name·email 을 요청하면 콜백을 크로스사이트 POST 로 보냅니다.- 토큰 엔드포인트 인증은
post, 네이티브 토큰은id_token, 임베디드 웹뷰는 허용입니다. - 네이티브(iOS) identityToken 의
aud는 Service ID 가 아니라 앱 번들 ID 입니다. 인증 서버(AS)가 둘 다 받아야 합니다.
그 밖
의존성: jose. peer: @plott/webkit-auth-oauth.