@codefox-inc/oauth-provider 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +40 -14
  2. package/dist/client/index.d.ts +4 -0
  3. package/dist/client/index.d.ts.map +1 -1
  4. package/dist/client/index.js +1 -0
  5. package/dist/client/index.js.map +1 -1
  6. package/dist/component/_generated/component.d.ts +9 -0
  7. package/dist/component/_generated/component.d.ts.map +1 -1
  8. package/dist/component/clientManagement.d.ts +1 -0
  9. package/dist/component/clientManagement.d.ts.map +1 -1
  10. package/dist/component/clientManagement.js +26 -2
  11. package/dist/component/clientManagement.js.map +1 -1
  12. package/dist/component/handlers.d.ts +16 -0
  13. package/dist/component/handlers.d.ts.map +1 -1
  14. package/dist/component/handlers.js +275 -28
  15. package/dist/component/handlers.js.map +1 -1
  16. package/dist/component/mutations.d.ts +9 -0
  17. package/dist/component/mutations.d.ts.map +1 -1
  18. package/dist/component/mutations.js +112 -40
  19. package/dist/component/mutations.js.map +1 -1
  20. package/dist/component/queries.d.ts +8 -0
  21. package/dist/component/queries.d.ts.map +1 -1
  22. package/dist/component/schema.d.ts +18 -4
  23. package/dist/component/schema.d.ts.map +1 -1
  24. package/dist/component/schema.js +7 -0
  25. package/dist/component/schema.js.map +1 -1
  26. package/dist/lib/oauth.d.ts.map +1 -1
  27. package/dist/lib/oauth.js +5 -2
  28. package/dist/lib/oauth.js.map +1 -1
  29. package/package.json +39 -39
  30. package/src/client/__tests__/oauth-provider.test.ts +39 -0
  31. package/src/client/index.ts +4 -0
  32. package/src/component/__tests__/handlers-protocol.test.ts +880 -0
  33. package/src/component/__tests__/mutations-protocol.test.ts +448 -0
  34. package/src/component/__tests__/oauth.test.ts +32 -28
  35. package/src/component/__tests__/rfc-compliance.test.ts +79 -11
  36. package/src/component/_generated/component.ts +17 -1
  37. package/src/component/clientManagement.ts +33 -2
  38. package/src/component/handlers.ts +355 -31
  39. package/src/component/mutations.ts +133 -40
  40. package/src/component/schema.ts +11 -0
  41. package/src/lib/__tests__/oauth-jwt.test.ts +68 -0
  42. package/src/lib/oauth.ts +8 -4
@@ -22,16 +22,125 @@ function isValidRedirectUri(uri) {
22
22
  }
23
23
  if (parsed.hash)
24
24
  return false;
25
+ if (parsed.username || parsed.password)
26
+ return false;
25
27
  const host = parsed.hostname.toLowerCase();
26
28
  const isLoopback = host === "localhost" ||
27
29
  host === "127.0.0.1" ||
30
+ host === "[::1]" ||
28
31
  host === "::1";
29
32
  if (parsed.protocol === "https:")
30
33
  return true;
31
34
  if (parsed.protocol === "http:" && isLoopback)
32
35
  return true;
36
+ if (isValidPrivateUseRedirectUri(parsed))
37
+ return true;
33
38
  return false;
34
39
  }
40
+ function isValidPrivateUseRedirectUri(parsed) {
41
+ const scheme = parsed.protocol.slice(0, -1);
42
+ const reverseDomainStyle = /^[a-z][a-z0-9]*(\.[a-z0-9][a-z0-9-]*){2,}$/i;
43
+ return (reverseDomainStyle.test(scheme) &&
44
+ parsed.hostname === "" &&
45
+ parsed.host === "" &&
46
+ parsed.pathname.startsWith("/") &&
47
+ parsed.pathname.length > 1);
48
+ }
49
+ function isValidMetadataUri(uri) {
50
+ let parsed;
51
+ try {
52
+ parsed = new URL(uri);
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ if (parsed.hash || parsed.username || parsed.password)
58
+ return false;
59
+ const host = parsed.hostname.toLowerCase();
60
+ const isLoopback = host === "localhost" ||
61
+ host === "127.0.0.1" ||
62
+ host === "[::1]" ||
63
+ host === "::1";
64
+ if (parsed.protocol === "https:")
65
+ return true;
66
+ if (parsed.protocol === "http:" && isLoopback)
67
+ return true;
68
+ return false;
69
+ }
70
+ function formValueToString(value) {
71
+ return typeof value === "string" ? value : null;
72
+ }
73
+ function isValidResourceUri(value) {
74
+ try {
75
+ const url = new URL(value);
76
+ return url.protocol.length > 1 && url.hash === "";
77
+ }
78
+ catch {
79
+ return false;
80
+ }
81
+ }
82
+ function getResourceFormString(formData) {
83
+ const values = formData.getAll("resource");
84
+ if (values.length === 0)
85
+ return null;
86
+ if (values.length > 1) {
87
+ throw new OAuthError("invalid_target", "Multiple resource parameters are not supported");
88
+ }
89
+ return formValueToString(values[0]);
90
+ }
91
+ function createInvalidClientResponse(error, headers) {
92
+ if (error.code === "invalid_client" && error.statusCode === 401) {
93
+ return error.toResponse({
94
+ ...headers,
95
+ "WWW-Authenticate": 'Basic realm="oauth"',
96
+ });
97
+ }
98
+ return error.toResponse(headers);
99
+ }
100
+ function getRegisteredTokenAuthMethod(client) {
101
+ return client.tokenEndpointAuthMethod ?? (client.type === "public" ? "none" : undefined);
102
+ }
103
+ function validateRequestedResource(resource) {
104
+ if (!resource)
105
+ return undefined;
106
+ if (!isValidResourceUri(resource)) {
107
+ throw new OAuthError("invalid_target", "resource must be an absolute URI without fragment");
108
+ }
109
+ return resource;
110
+ }
111
+ const PKCE_PARAMETER_PATTERN = /^[A-Za-z0-9._~-]{43,128}$/;
112
+ function isValidPkceParameter(value) {
113
+ return PKCE_PARAMETER_PATTERN.test(value);
114
+ }
115
+ function decodeFormComponent(value) {
116
+ return decodeURIComponent(value.replace(/\+/g, " "));
117
+ }
118
+ function parseBasicClientCredentials(authHeader) {
119
+ const [scheme, credentials, ...extra] = authHeader.trim().split(/\s+/);
120
+ if (!scheme || scheme.toLowerCase() !== "basic" || !credentials || extra.length > 0) {
121
+ throw new OAuthError("invalid_client", "Unsupported client authentication method", 401);
122
+ }
123
+ let decoded;
124
+ try {
125
+ decoded = atob(credentials);
126
+ }
127
+ catch {
128
+ throw new OAuthError("invalid_client", "Invalid client credentials", 401);
129
+ }
130
+ const separator = decoded.indexOf(":");
131
+ if (separator < 0) {
132
+ throw new OAuthError("invalid_client", "Invalid client credentials", 401);
133
+ }
134
+ try {
135
+ return {
136
+ clientId: decodeFormComponent(decoded.slice(0, separator)),
137
+ clientSecret: decodeFormComponent(decoded.slice(separator + 1)),
138
+ };
139
+ }
140
+ catch {
141
+ throw new OAuthError("invalid_client", "Invalid client credentials", 401);
142
+ }
143
+ }
35
144
  function isConsentFromProvider(request, config) {
36
145
  const allowedOrigins = [config.siteUrl, config.convexSiteUrl]
37
146
  .filter(Boolean)
@@ -84,9 +193,13 @@ export async function authorizeHandler(ctx, request, config, api) {
84
193
  const scope = params.get("scope") ?? "";
85
194
  const state = params.get("state");
86
195
  const consent = params.get("consent");
196
+ const prompt = params.get("prompt");
87
197
  const codeChallenge = params.get("code_challenge");
88
198
  const codeChallengeMethod = params.get("code_challenge_method");
89
199
  const nonce = params.get("nonce") ?? undefined;
200
+ const resource = params.get("resource");
201
+ const resourceValues = params.getAll("resource");
202
+ const maxAge = params.get("max_age");
90
203
  if (!clientId) {
91
204
  return new OAuthError("invalid_request", "client_id required").toResponse(headers);
92
205
  }
@@ -100,15 +213,48 @@ export async function authorizeHandler(ctx, request, config, api) {
100
213
  if (!matchRedirectUri(redirectUri, client.redirectUris)) {
101
214
  return new OAuthError("invalid_request", "redirect_uri mismatch").toResponse(headers);
102
215
  }
216
+ const singletonParameters = [
217
+ "response_type",
218
+ "client_id",
219
+ "redirect_uri",
220
+ "scope",
221
+ "state",
222
+ "consent",
223
+ "prompt",
224
+ "code_challenge",
225
+ "code_challenge_method",
226
+ "nonce",
227
+ "max_age",
228
+ ];
229
+ const duplicateParameter = singletonParameters.find((name) => params.getAll(name).length > 1);
230
+ if (duplicateParameter) {
231
+ return buildAuthorizeErrorRedirect(redirectUri, "invalid_request", `Duplicate parameter: ${duplicateParameter}`, state);
232
+ }
233
+ if (resourceValues.length > 1) {
234
+ return buildAuthorizeErrorRedirect(redirectUri, "invalid_target", "Multiple resource parameters are not supported", state);
235
+ }
103
236
  if (consent === "approve" && !isConsentFromProvider(request, config)) {
104
237
  return buildAuthorizeErrorRedirect(redirectUri, "access_denied", "User consent required", state);
105
238
  }
106
239
  if (responseType !== "code") {
107
240
  return buildAuthorizeErrorRedirect(redirectUri, "unsupported_response_type", "response_type must be code", state);
108
241
  }
109
- const requestedScopes = scope
242
+ const promptValues = new Set((prompt ?? "").split(/\s+/).filter(Boolean));
243
+ if (maxAge !== null) {
244
+ if (!/^(0|[1-9]\d*)$/.test(maxAge)) {
245
+ return buildAuthorizeErrorRedirect(redirectUri, "invalid_request", "max_age must be a non-negative integer", state);
246
+ }
247
+ return buildAuthorizeErrorRedirect(redirectUri, "login_required", "Current authentication time cannot satisfy max_age", state);
248
+ }
249
+ if (resource && !isValidResourceUri(resource)) {
250
+ return buildAuthorizeErrorRedirect(redirectUri, "invalid_target", "resource must be an absolute URI without fragment", state);
251
+ }
252
+ let requestedScopes = scope
110
253
  ? scope.split(" ").filter(Boolean)
111
254
  : [];
255
+ if (requestedScopes.includes("offline_access") && !promptValues.has("consent")) {
256
+ requestedScopes = requestedScopes.filter((s) => s !== "offline_access");
257
+ }
112
258
  if (requestedScopes.length === 0) {
113
259
  return buildAuthorizeErrorRedirect(redirectUri, "invalid_request", "scope required", state);
114
260
  }
@@ -119,6 +265,9 @@ export async function authorizeHandler(ctx, request, config, api) {
119
265
  if (!codeChallenge) {
120
266
  return buildAuthorizeErrorRedirect(redirectUri, "invalid_request", "code_challenge required", state);
121
267
  }
268
+ if (!isValidPkceParameter(codeChallenge)) {
269
+ return buildAuthorizeErrorRedirect(redirectUri, "invalid_request", "invalid code_challenge", state);
270
+ }
122
271
  if (codeChallengeMethod !== "S256") {
123
272
  return buildAuthorizeErrorRedirect(redirectUri, "invalid_request", "code_challenge_method must be S256", state);
124
273
  }
@@ -140,6 +289,8 @@ export async function authorizeHandler(ctx, request, config, api) {
140
289
  codeChallenge,
141
290
  codeChallengeMethod,
142
291
  nonce,
292
+ resource: resource ?? undefined,
293
+ authTime: Math.floor(Date.now() / 1000),
143
294
  });
144
295
  const redirect = new URL(redirectUri);
145
296
  redirect.searchParams.set("code", code);
@@ -170,7 +321,7 @@ export async function openIdConfigurationHandler(_ctx, request, config) {
170
321
  subject_types_supported: ["public"],
171
322
  id_token_signing_alg_values_supported: ["RS256"],
172
323
  scopes_supported: supportedScopes,
173
- token_endpoint_auth_methods_supported: ["client_secret_post", "none"],
324
+ token_endpoint_auth_methods_supported: ["client_secret_basic", "client_secret_post", "none"],
174
325
  grant_types_supported: ["authorization_code", "refresh_token"],
175
326
  code_challenge_methods_supported: ["S256"],
176
327
  };
@@ -214,29 +365,64 @@ export async function tokenHandler(ctx, request, config, api) {
214
365
  }
215
366
  try {
216
367
  const formData = await request.formData();
217
- const grantType = formData.get("grant_type");
218
- const code = formData.get("code");
219
- const redirectUri = formData.get("redirect_uri");
220
- const clientId = formData.get("client_id");
221
- const codeVerifier = formData.get("code_verifier");
222
- const clientSecret = formData.get("client_secret");
368
+ const singleValueParameters = [
369
+ "grant_type",
370
+ "code",
371
+ "redirect_uri",
372
+ "client_id",
373
+ "code_verifier",
374
+ "client_secret",
375
+ "refresh_token",
376
+ "scope",
377
+ ];
378
+ const duplicateParameter = singleValueParameters.find((name) => formData.getAll(name).length > 1);
379
+ if (duplicateParameter) {
380
+ throw new OAuthError("invalid_request", `Duplicate parameter: ${duplicateParameter}`);
381
+ }
382
+ const grantType = formValueToString(formData.get("grant_type"));
383
+ const code = formValueToString(formData.get("code"));
384
+ const redirectUri = formValueToString(formData.get("redirect_uri"));
385
+ const bodyClientId = formValueToString(formData.get("client_id"));
386
+ const codeVerifier = formValueToString(formData.get("code_verifier"));
387
+ const bodyClientSecret = formValueToString(formData.get("client_secret"));
388
+ const requestedResource = validateRequestedResource(getResourceFormString(formData));
389
+ const authHeader = request.headers.get("Authorization");
390
+ let clientId = bodyClientId;
391
+ let clientSecret = bodyClientSecret;
392
+ let usedAuthMethod = bodyClientSecret ? "client_secret_post" : "none";
393
+ if (authHeader) {
394
+ if (bodyClientSecret) {
395
+ throw new OAuthError("invalid_request", "Multiple client authentication methods");
396
+ }
397
+ const basicCredentials = parseBasicClientCredentials(authHeader);
398
+ clientId = basicCredentials.clientId;
399
+ clientSecret = basicCredentials.clientSecret;
400
+ usedAuthMethod = "client_secret_basic";
401
+ }
223
402
  if (!clientId)
224
403
  throw new OAuthError("invalid_request", "client_id required");
225
404
  // Client existence + confidential client check
226
- const client = await api.queries.getClient(ctx, { clientId: clientId });
405
+ const client = await api.queries.getClient(ctx, { clientId });
227
406
  if (!client) {
228
407
  throw new OAuthError("invalid_client", "Unknown client", 401);
229
408
  }
409
+ const registeredAuthMethod = getRegisteredTokenAuthMethod(client);
410
+ if (registeredAuthMethod && usedAuthMethod !== "none" && usedAuthMethod !== registeredAuthMethod) {
411
+ throw new OAuthError("invalid_client", "Client authentication method not allowed", 401);
412
+ }
230
413
  if (client.type === "confidential") {
231
414
  if (!clientSecret)
232
415
  throw new OAuthError("invalid_client", "client_secret required", 401);
233
416
  const isValid = await api.clientManagement.verifyClientSecret(ctx, {
234
- clientId: clientId,
235
- clientSecret: clientSecret,
417
+ clientId,
418
+ clientSecret,
236
419
  });
237
420
  if (!isValid)
238
421
  throw new OAuthError("invalid_client", "Invalid client secret", 401);
239
422
  }
423
+ else if (clientSecret || usedAuthMethod !== "none") {
424
+ throw new OAuthError("invalid_client", "Public clients must not authenticate", 401);
425
+ }
240
426
  if (grantType === "authorization_code") {
241
427
  if (!code || !codeVerifier) {
242
428
  throw new OAuthError("invalid_request", "Missing code parameters");
@@ -244,9 +430,10 @@ export async function tokenHandler(ctx, request, config, api) {
244
430
  // A. Consume Code
245
431
  const codeData = await api.mutations.consumeAuthCode(ctx, {
246
432
  code: code,
247
- clientId: clientId,
248
- redirectUri: redirectUri,
433
+ clientId,
434
+ redirectUri: redirectUri ?? undefined,
249
435
  codeVerifier: codeVerifier,
436
+ resource: requestedResource,
250
437
  });
251
438
  // Check for authorization code reuse (RFC Line 1136)
252
439
  if ("error" in codeData && codeData.error === "authorization_code_reuse_detected") {
@@ -258,12 +445,23 @@ export async function tokenHandler(ctx, request, config, api) {
258
445
  const accessTokenExpiresIn = 3600;
259
446
  const issuerUrl = getIssuerUrl(config);
260
447
  const keyId = getSigningKeyId(config);
448
+ const defaultAudience = config.applicationID ?? "convex";
449
+ if (requestedResource && !codeData.resource) {
450
+ throw new OAuthError("invalid_target", "Requested resource was not included in the authorization grant");
451
+ }
452
+ if (codeData.resource && requestedResource && codeData.resource !== requestedResource) {
453
+ throw new OAuthError("invalid_target", "Requested resource does not match authorization grant");
454
+ }
455
+ const accessTokenAudience = codeData.resource ?? defaultAudience;
261
456
  // Access Token
262
457
  const accessToken = await sign({
263
458
  uid: userId,
264
459
  scp: codeData.scopes,
265
460
  cid: clientId,
266
- }, userId, config.applicationID ?? "convex", "1h", config.privateKey, issuerUrl, keyId);
461
+ scope: codeData.scopes.join(" "),
462
+ client_id: clientId,
463
+ jti: crypto.randomUUID(),
464
+ }, userId, accessTokenAudience, "1h", config.privateKey, issuerUrl, keyId);
267
465
  // ID Token (OIDC)
268
466
  let idToken;
269
467
  if (codeData.scopes.includes("openid")) {
@@ -273,6 +471,7 @@ export async function tokenHandler(ctx, request, config, api) {
273
471
  iss: issuerUrl,
274
472
  aud: clientId,
275
473
  nonce: codeData.nonce,
474
+ auth_time: codeData.authTime,
276
475
  };
277
476
  idToken = await new SignJWT(idTokenClaims)
278
477
  .setProtectedHeader({ alg: "RS256", typ: "JWT", kid: keyId })
@@ -295,12 +494,15 @@ export async function tokenHandler(ctx, request, config, api) {
295
494
  expiresAt: (now + accessTokenExpiresIn) * 1000,
296
495
  refreshTokenExpiresAt: refreshToken ? (now + 3600 * 24 * 30) * 1000 : undefined,
297
496
  authorizationCode: codeData.codeHash, // Link to authorization code
497
+ resource: codeData.resource,
498
+ audience: accessTokenAudience,
298
499
  });
299
500
  // F. Create/Update Authorization Record
300
501
  await api.mutations.upsertAuthorization(ctx, {
301
502
  userId,
302
- clientId: clientId,
503
+ clientId,
303
504
  scopes: codeData.scopes,
505
+ resource: codeData.resource,
304
506
  });
305
507
  // Build response
306
508
  // RFC Line 509: Always include 'scope' for clarity (MUST include if different from requested)
@@ -319,13 +521,22 @@ export async function tokenHandler(ctx, request, config, api) {
319
521
  return new Response(JSON.stringify(tokenResponse), { status: 200, headers: tokenHeaders });
320
522
  }
321
523
  if (grantType === "refresh_token") {
322
- const refreshToken = formData.get("refresh_token");
323
- const requestedScope = formData.get("scope"); // RFC 6749 Section 6
524
+ const refreshToken = formValueToString(formData.get("refresh_token"));
525
+ const requestedScope = formValueToString(formData.get("scope")); // RFC 6749 Section 6
324
526
  if (!refreshToken)
325
527
  throw new OAuthError("invalid_request", "refresh_token required");
326
528
  const oldToken = await api.queries.getRefreshToken(ctx, { refreshToken });
327
529
  if (!oldToken)
328
530
  throw new OAuthError("invalid_grant", "Invalid refresh token");
531
+ const refreshTokenResource = oldToken.resource;
532
+ const refreshTokenAudience = oldToken.audience ?? refreshTokenResource ?? config.applicationID ?? "convex";
533
+ const accessTokenAudience = refreshTokenResource ?? refreshTokenAudience;
534
+ if (!refreshTokenResource && requestedResource) {
535
+ throw new OAuthError("invalid_target", "Requested resource was not included in the refresh token grant");
536
+ }
537
+ if (refreshTokenResource && requestedResource && requestedResource !== refreshTokenResource) {
538
+ throw new OAuthError("invalid_target", "Requested resource does not match refresh token grant");
539
+ }
329
540
  if (!oldToken.refreshTokenExpiresAt || oldToken.refreshTokenExpiresAt < Date.now()) {
330
541
  throw new OAuthError("invalid_grant", "Refresh token expired");
331
542
  }
@@ -362,7 +573,10 @@ export async function tokenHandler(ctx, request, config, api) {
362
573
  uid: userId,
363
574
  scp: accessTokenScopes, // 縮小可能
364
575
  cid: clientId,
365
- }, userId, config.applicationID ?? "convex", "1h", config.privateKey, issuerUrl, keyId);
576
+ scope: accessTokenScopes.join(" "),
577
+ client_id: clientId,
578
+ jti: crypto.randomUUID(),
579
+ }, userId, accessTokenAudience, "1h", config.privateKey, issuerUrl, keyId);
366
580
  // New Refresh Token (Rotation)
367
581
  const newRefreshToken = crypto.randomUUID();
368
582
  // ID Token
@@ -385,16 +599,18 @@ export async function tokenHandler(ctx, request, config, api) {
385
599
  oldRefreshToken: refreshToken,
386
600
  accessToken,
387
601
  refreshToken: newRefreshToken,
388
- clientId: clientId,
602
+ clientId,
389
603
  userId,
390
604
  scopes: refreshTokenScopes, // 元のスコープと同一
391
605
  expiresAt: (now + accessTokenExpiresIn) * 1000,
392
606
  refreshTokenExpiresAt: (now + 3600 * 24 * 30) * 1000,
607
+ resource: refreshTokenResource,
608
+ audience: refreshTokenAudience,
393
609
  });
394
610
  // Update authorization lastUsedAt
395
611
  await api.mutations.updateAuthorizationLastUsed(ctx, {
396
612
  userId,
397
- clientId: clientId,
613
+ clientId,
398
614
  });
399
615
  }
400
616
  catch (e) {
@@ -423,7 +639,7 @@ export async function tokenHandler(ctx, request, config, api) {
423
639
  catch (e) {
424
640
  console.error(e);
425
641
  if (e instanceof OAuthError) {
426
- return e.toResponse(tokenHeaders);
642
+ return createInvalidClientResponse(e, tokenHeaders);
427
643
  }
428
644
  if (e instanceof Error) {
429
645
  // シンプルなエラーメッセージを先にチェック(完全一致)
@@ -431,7 +647,7 @@ export async function tokenHandler(ctx, request, config, api) {
431
647
  return new OAuthError("invalid_grant", "Invalid grant").toResponse(tokenHeaders);
432
648
  }
433
649
  if (e.message === "invalid_client") {
434
- return new OAuthError("invalid_client", "Invalid client", 401).toResponse(tokenHeaders);
650
+ return createInvalidClientResponse(new OAuthError("invalid_client", "Invalid client", 401), tokenHeaders);
435
651
  }
436
652
  // 特定エラーメッセージをOAuthエラーコードにマッピング(部分一致)
437
653
  const errorMap = {
@@ -440,6 +656,7 @@ export async function tokenHandler(ctx, request, config, api) {
440
656
  "unsupported_code_challenge_method": ["invalid_request", "Unsupported code challenge method", undefined],
441
657
  "scope_change_not_allowed": ["invalid_scope", "Refresh token scope must remain identical", undefined],
442
658
  "authorization_code_reuse_detected": ["invalid_grant", "Authorization code has already been used", undefined],
659
+ "invalid_target": ["invalid_target", "Requested resource does not match authorization grant", undefined],
443
660
  };
444
661
  for (const [pattern, [code, message, status]] of Object.entries(errorMap)) {
445
662
  if (e.message.includes(pattern)) {
@@ -468,7 +685,7 @@ export async function userInfoHandler(ctx, request, config, getUserProfile) {
468
685
  status: 401,
469
686
  headers: {
470
687
  ...headers,
471
- "WWW-Authenticate": 'Bearer error="invalid_token", error_description="Missing bearer token"',
688
+ "WWW-Authenticate": 'Bearer realm="userinfo"',
472
689
  },
473
690
  });
474
691
  }
@@ -507,7 +724,13 @@ export async function userInfoHandler(ctx, request, config, getUserProfile) {
507
724
  }
508
725
  const user = await getUserProfile(userId);
509
726
  if (!user) {
510
- return new Response(null, { status: 401, headers });
727
+ return new Response(null, {
728
+ status: 401,
729
+ headers: {
730
+ ...headers,
731
+ "WWW-Authenticate": 'Bearer error="invalid_token", error_description="User profile not found"',
732
+ },
733
+ });
511
734
  }
512
735
  const responseBody = { sub: userId };
513
736
  if (scopes.includes("profile")) {
@@ -558,16 +781,31 @@ export async function registerHandler(ctx, request, config, api) {
558
781
  }
559
782
  const scopes = requestedScopes;
560
783
  const authMethod = body.token_endpoint_auth_method;
561
- if (authMethod && authMethod !== "client_secret_post" && authMethod !== "none") {
784
+ if (authMethod &&
785
+ authMethod !== "client_secret_basic" &&
786
+ authMethod !== "client_secret_post" &&
787
+ authMethod !== "none") {
562
788
  throw new OAuthError("invalid_client_metadata", "Unsupported token_endpoint_auth_method");
563
789
  }
564
- const type = (authMethod === "none") ? "public" : "confidential";
790
+ const tokenEndpointAuthMethod = (authMethod || "client_secret_basic");
791
+ const type = (tokenEndpointAuthMethod === "none") ? "public" : "confidential";
565
792
  if (redirectUris.length === 0) {
566
793
  throw new OAuthError("invalid_request", "redirect_uris required");
567
794
  }
568
795
  const invalidRedirect = redirectUris.find((uri) => !isValidRedirectUri(uri));
569
796
  if (invalidRedirect) {
570
- throw new OAuthError("invalid_request", `Invalid redirect_uri: ${invalidRedirect}`);
797
+ throw new OAuthError("invalid_redirect_uri", `Invalid redirect_uri: ${invalidRedirect}`);
798
+ }
799
+ const metadataUrls = {
800
+ logo_uri: body.logo_uri,
801
+ client_uri: body.client_uri,
802
+ tos_uri: body.tos_uri,
803
+ policy_uri: body.policy_uri,
804
+ };
805
+ for (const [field, uri] of Object.entries(metadataUrls)) {
806
+ if (uri !== undefined && !isValidMetadataUri(uri)) {
807
+ throw new OAuthError("invalid_client_metadata", `Invalid ${field}: ${uri}`);
808
+ }
571
809
  }
572
810
  const result = await api.clientManagement.registerClient(ctx, {
573
811
  name: clientName,
@@ -578,6 +816,7 @@ export async function registerHandler(ctx, request, config, api) {
578
816
  website: body.client_uri,
579
817
  tosUrl: body.tos_uri,
580
818
  policyUrl: body.policy_uri,
819
+ tokenEndpointAuthMethod,
581
820
  });
582
821
  const responseBody = {
583
822
  client_id: result.clientId,
@@ -586,10 +825,18 @@ export async function registerHandler(ctx, request, config, api) {
586
825
  grant_types: ["authorization_code", "refresh_token"],
587
826
  response_types: ["code"],
588
827
  scope: scopes.join(" "),
589
- token_endpoint_auth_method: authMethod || "client_secret_post",
828
+ token_endpoint_auth_method: tokenEndpointAuthMethod,
590
829
  application_type: "web",
591
830
  client_name: clientName,
592
831
  };
832
+ if (body.logo_uri)
833
+ responseBody.logo_uri = body.logo_uri;
834
+ if (body.client_uri)
835
+ responseBody.client_uri = body.client_uri;
836
+ if (body.tos_uri)
837
+ responseBody.tos_uri = body.tos_uri;
838
+ if (body.policy_uri)
839
+ responseBody.policy_uri = body.policy_uri;
593
840
  if (result.clientSecret) {
594
841
  responseBody.client_secret = result.clientSecret;
595
842
  responseBody.client_secret_expires_at = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/component/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/component/handlers.ts"],"names":[],"mappings":"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"}