Apple Sign In
Sign in with Apple emulation with authorization code flow, PKCE support, RS256 ID tokens, and OIDC discovery.
Endpoints
GET /.well-known/openid-configuration- OIDC discovery documentGET /auth/keys- JSON Web Key Set (JWKS)GET /auth/authorize- authorization endpoint (shows user picker)POST /auth/token- token exchange (authorization code and refresh token grants)POST /auth/revoke- token revocation
Authorization Flow
- Redirect the user to
/auth/authorizewithclient_id,redirect_uri,scope,state, and optionallynonceandresponse_mode - The emulator renders a user picker page where the user selects a seeded account
- On selection, the emulator redirects (or auto-submits a form for
form_postmode) toredirect_uriwithcodeandstate - On the first authorization per user/client pair, a
userJSON blob is also included (matching Apple's real behavior) - Exchange the code for tokens via
POST /auth/token
ID Token
The id_token is an RS256 JWT containing sub, email, email_verified, is_private_email, real_user_status, auth_time, and optional nonce.
Users with is_private_email: true in the seed config receive a generated @privaterelay.appleid.com email in the id_token instead of their real email, matching Apple's Hide My Email behavior.
Supported Parameters
| Param | Description |
|---|---|
client_id | OAuth client ID (Apple Services ID) |
redirect_uri | Callback URL |
scope | Space-separated scopes (openid email name) |
state | Opaque state for CSRF protection |
nonce | Nonce for ID token (optional) |
response_mode | query (default), form_post, or fragment |