@atlasauth/emulator-core 0.2.0 → 0.3.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.
- package/dist/custom-html.d.ts +57 -0
- package/dist/custom-html.js +491 -0
- package/dist/custom-html.js.map +1 -0
- package/dist/engine.d.ts +1 -1
- package/dist/engine.js +4 -0
- package/dist/engine.js.map +1 -1
- package/dist/error-catalog.js +8 -0
- package/dist/error-catalog.js.map +1 -1
- package/dist/event-gate.js +60 -2
- package/dist/event-gate.js.map +1 -1
- package/dist/generic.js +5 -1
- package/dist/generic.js.map +1 -1
- package/dist/handlers/access-signals.d.ts +48 -0
- package/dist/handlers/access-signals.js +76 -0
- package/dist/handlers/access-signals.js.map +1 -0
- package/dist/handlers/approvals.js +54 -1
- package/dist/handlers/approvals.js.map +1 -1
- package/dist/handlers/authz-data.d.ts +2 -0
- package/dist/handlers/authz-data.js +627 -0
- package/dist/handlers/authz-data.js.map +1 -0
- package/dist/handlers/authz-layers.d.ts +229 -0
- package/dist/handlers/authz-layers.js +786 -0
- package/dist/handlers/authz-layers.js.map +1 -0
- package/dist/handlers/authz-state.d.ts +80 -0
- package/dist/handlers/authz-state.js +175 -0
- package/dist/handlers/authz-state.js.map +1 -0
- package/dist/handlers/authz.js +240 -177
- package/dist/handlers/authz.js.map +1 -1
- package/dist/handlers/billing.d.ts +99 -1
- package/dist/handlers/billing.js +556 -77
- package/dist/handlers/billing.js.map +1 -1
- package/dist/handlers/cedar-ext.d.ts +35 -0
- package/dist/handlers/cedar-ext.js +174 -0
- package/dist/handlers/cedar-ext.js.map +1 -0
- package/dist/handlers/cedar.d.ts +146 -0
- package/dist/handlers/cedar.js +689 -0
- package/dist/handlers/cedar.js.map +1 -0
- package/dist/handlers/connections.d.ts +4 -1
- package/dist/handlers/connections.js +267 -38
- package/dist/handlers/connections.js.map +1 -1
- package/dist/handlers/control.js +6 -1
- package/dist/handlers/control.js.map +1 -1
- package/dist/handlers/device.js +18 -1
- package/dist/handlers/device.js.map +1 -1
- package/dist/handlers/emu3-misc.d.ts +38 -0
- package/dist/handlers/emu3-misc.js +1056 -0
- package/dist/handlers/emu3-misc.js.map +1 -0
- package/dist/handlers/emu4-actions-access.d.ts +46 -0
- package/dist/handlers/emu4-actions-access.js +107 -0
- package/dist/handlers/emu4-actions-access.js.map +1 -0
- package/dist/handlers/emu4-actions-catalog-extra.d.ts +3 -0
- package/dist/handlers/emu4-actions-catalog-extra.js +204 -0
- package/dist/handlers/emu4-actions-catalog-extra.js.map +1 -0
- package/dist/handlers/emu4-actions-catalog.d.ts +3 -0
- package/dist/handlers/emu4-actions-catalog.js +143 -0
- package/dist/handlers/emu4-actions-catalog.js.map +1 -0
- package/dist/handlers/emu4-actions-def.d.ts +50 -0
- package/dist/handlers/emu4-actions-def.js +250 -0
- package/dist/handlers/emu4-actions-def.js.map +1 -0
- package/dist/handlers/emu4-actions-sandbox.d.ts +36 -0
- package/dist/handlers/emu4-actions-sandbox.js +318 -0
- package/dist/handlers/emu4-actions-sandbox.js.map +1 -0
- package/dist/handlers/emu4-actions-typegen.d.ts +5 -0
- package/dist/handlers/emu4-actions-typegen.js +73 -0
- package/dist/handlers/emu4-actions-typegen.js.map +1 -0
- package/dist/handlers/emu4-actions.d.ts +2 -0
- package/dist/handlers/emu4-actions.js +506 -0
- package/dist/handlers/emu4-actions.js.map +1 -0
- package/dist/handlers/emu4-authz-trust.d.ts +40 -0
- package/dist/handlers/emu4-authz-trust.js +488 -0
- package/dist/handlers/emu4-authz-trust.js.map +1 -0
- package/dist/handlers/emu4-authz.d.ts +2 -0
- package/dist/handlers/emu4-authz.js +752 -0
- package/dist/handlers/emu4-authz.js.map +1 -0
- package/dist/handlers/emu4-billing-core.d.ts +23 -0
- package/dist/handlers/emu4-billing-core.js +22 -0
- package/dist/handlers/emu4-billing-core.js.map +1 -0
- package/dist/handlers/emu4-billing-x.d.ts +2 -0
- package/dist/handlers/emu4-billing-x.js +489 -0
- package/dist/handlers/emu4-billing-x.js.map +1 -0
- package/dist/handlers/emu4-billing.d.ts +14 -0
- package/dist/handlers/emu4-billing.js +846 -0
- package/dist/handlers/emu4-billing.js.map +1 -0
- package/dist/handlers/emu4-clones.d.ts +2 -0
- package/dist/handlers/emu4-clones.js +322 -0
- package/dist/handlers/emu4-clones.js.map +1 -0
- package/dist/handlers/emu4-compliance.d.ts +8 -0
- package/dist/handlers/emu4-compliance.js +39 -0
- package/dist/handlers/emu4-compliance.js.map +1 -0
- package/dist/handlers/emu4-config.d.ts +14 -0
- package/dist/handlers/emu4-config.js +148 -0
- package/dist/handlers/emu4-config.js.map +1 -0
- package/dist/handlers/emu4-cookies.d.ts +8 -0
- package/dist/handlers/emu4-cookies.js +248 -0
- package/dist/handlers/emu4-cookies.js.map +1 -0
- package/dist/handlers/emu4-erasure.d.ts +2 -0
- package/dist/handlers/emu4-erasure.js +587 -0
- package/dist/handlers/emu4-erasure.js.map +1 -0
- package/dist/handlers/emu4-federation.d.ts +8 -0
- package/dist/handlers/emu4-federation.js +18 -0
- package/dist/handlers/emu4-federation.js.map +1 -0
- package/dist/handlers/emu4-journey-math.d.ts +42 -0
- package/dist/handlers/emu4-journey-math.js +99 -0
- package/dist/handlers/emu4-journey-math.js.map +1 -0
- package/dist/handlers/emu4-messaging.d.ts +21 -0
- package/dist/handlers/emu4-messaging.js +595 -0
- package/dist/handlers/emu4-messaging.js.map +1 -0
- package/dist/handlers/emu4-minors.d.ts +7 -0
- package/dist/handlers/emu4-minors.js +408 -0
- package/dist/handlers/emu4-minors.js.map +1 -0
- package/dist/handlers/emu4-oauth-audit.d.ts +5 -0
- package/dist/handlers/emu4-oauth-audit.js +17 -0
- package/dist/handlers/emu4-oauth-audit.js.map +1 -0
- package/dist/handlers/emu4-oauth-auth.d.ts +83 -0
- package/dist/handlers/emu4-oauth-auth.js +363 -0
- package/dist/handlers/emu4-oauth-auth.js.map +1 -0
- package/dist/handlers/emu4-oauth-delivery.d.ts +68 -0
- package/dist/handlers/emu4-oauth-delivery.js +207 -0
- package/dist/handlers/emu4-oauth-delivery.js.map +1 -0
- package/dist/handlers/emu4-oauth-keys.d.ts +11 -0
- package/dist/handlers/emu4-oauth-keys.js +268 -0
- package/dist/handlers/emu4-oauth-keys.js.map +1 -0
- package/dist/handlers/emu4-oauth-pub.d.ts +36 -0
- package/dist/handlers/emu4-oauth-pub.js +420 -0
- package/dist/handlers/emu4-oauth-pub.js.map +1 -0
- package/dist/handlers/emu4-oauth.d.ts +10 -0
- package/dist/handlers/emu4-oauth.js +23 -0
- package/dist/handlers/emu4-oauth.js.map +1 -0
- package/dist/handlers/emu4-policies.d.ts +2 -0
- package/dist/handlers/emu4-policies.js +408 -0
- package/dist/handlers/emu4-policies.js.map +1 -0
- package/dist/handlers/emu4-region.d.ts +2 -0
- package/dist/handlers/emu4-region.js +189 -0
- package/dist/handlers/emu4-region.js.map +1 -0
- package/dist/handlers/emu4-saml.d.ts +12 -0
- package/dist/handlers/emu4-saml.js +532 -0
- package/dist/handlers/emu4-saml.js.map +1 -0
- package/dist/handlers/emu4-shared.d.ts +44 -0
- package/dist/handlers/emu4-shared.js +90 -0
- package/dist/handlers/emu4-shared.js.map +1 -0
- package/dist/handlers/emu4-snapshots.d.ts +38 -0
- package/dist/handlers/emu4-snapshots.js +231 -0
- package/dist/handlers/emu4-snapshots.js.map +1 -0
- package/dist/handlers/emu4-sns.d.ts +9 -0
- package/dist/handlers/emu4-sns.js +21 -0
- package/dist/handlers/emu4-sns.js.map +1 -0
- package/dist/handlers/emu4-trust-binding.d.ts +27 -0
- package/dist/handlers/emu4-trust-binding.js +344 -0
- package/dist/handlers/emu4-trust-binding.js.map +1 -0
- package/dist/handlers/emu4-trust.d.ts +35 -0
- package/dist/handlers/emu4-trust.js +543 -0
- package/dist/handlers/emu4-trust.js.map +1 -0
- package/dist/handlers/fga-engine.d.ts +78 -0
- package/dist/handlers/fga-engine.js +663 -0
- package/dist/handlers/fga-engine.js.map +1 -0
- package/dist/handlers/hooks.js +13 -0
- package/dist/handlers/hooks.js.map +1 -1
- package/dist/handlers/index.js +14 -1
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/machines.js +6 -0
- package/dist/handlers/machines.js.map +1 -1
- package/dist/handlers/messaging.d.ts +3 -1
- package/dist/handlers/messaging.js +455 -48
- package/dist/handlers/messaging.js.map +1 -1
- package/dist/handlers/oauth-adv.d.ts +191 -0
- package/dist/handlers/oauth-adv.js +1305 -0
- package/dist/handlers/oauth-adv.js.map +1 -0
- package/dist/handlers/oauth-flows.d.ts +25 -1
- package/dist/handlers/oauth-flows.js +111 -50
- package/dist/handlers/oauth-flows.js.map +1 -1
- package/dist/handlers/oauth.d.ts +24 -3
- package/dist/handlers/oauth.js +245 -60
- package/dist/handlers/oauth.js.map +1 -1
- package/dist/handlers/orgs.js +6 -0
- package/dist/handlers/orgs.js.map +1 -1
- package/dist/handlers/platform.d.ts +5 -0
- package/dist/handlers/platform.js +33 -15
- package/dist/handlers/platform.js.map +1 -1
- package/dist/handlers/scim.d.ts +2 -0
- package/dist/handlers/scim.js +198 -11
- package/dist/handlers/scim.js.map +1 -1
- package/dist/handlers/sessions.d.ts +2 -0
- package/dist/handlers/sessions.js +24 -16
- package/dist/handlers/sessions.js.map +1 -1
- package/dist/handlers/users.js +3 -0
- package/dist/handlers/users.js.map +1 -1
- package/dist/jwe.d.ts +18 -0
- package/dist/jwe.js +101 -0
- package/dist/jwe.js.map +1 -0
- package/dist/jws.js +2 -0
- package/dist/jws.js.map +1 -1
- package/dist/messaging-callbacks.d.ts +100 -0
- package/dist/messaging-callbacks.js +767 -0
- package/dist/messaging-callbacks.js.map +1 -0
- package/dist/openapi.js +41 -1
- package/dist/openapi.js.map +1 -1
- package/dist/parity-emu3-authz.d.ts +3 -0
- package/dist/parity-emu3-authz.js +61 -0
- package/dist/parity-emu3-authz.js.map +1 -0
- package/dist/parity-emu3-billing.d.ts +3 -0
- package/dist/parity-emu3-billing.js +25 -0
- package/dist/parity-emu3-billing.js.map +1 -0
- package/dist/parity-emu3-messaging.d.ts +3 -0
- package/dist/parity-emu3-messaging.js +27 -0
- package/dist/parity-emu3-messaging.js.map +1 -0
- package/dist/parity-emu3-misc.d.ts +2 -0
- package/dist/parity-emu3-misc.js +63 -0
- package/dist/parity-emu3-misc.js.map +1 -0
- package/dist/parity-emu3-oauth.d.ts +2 -0
- package/dist/parity-emu3-oauth.js +39 -0
- package/dist/parity-emu3-oauth.js.map +1 -0
- package/dist/parity-emu4-actions.d.ts +2 -0
- package/dist/parity-emu4-actions.js +38 -0
- package/dist/parity-emu4-actions.js.map +1 -0
- package/dist/parity-emu4-authz.d.ts +3 -0
- package/dist/parity-emu4-authz.js +68 -0
- package/dist/parity-emu4-authz.js.map +1 -0
- package/dist/parity-emu4-billing.d.ts +6 -0
- package/dist/parity-emu4-billing.js +44 -0
- package/dist/parity-emu4-billing.js.map +1 -0
- package/dist/parity-emu4-compliance.d.ts +2 -0
- package/dist/parity-emu4-compliance.js +92 -0
- package/dist/parity-emu4-compliance.js.map +1 -0
- package/dist/parity-emu4-federation.d.ts +2 -0
- package/dist/parity-emu4-federation.js +33 -0
- package/dist/parity-emu4-federation.js.map +1 -0
- package/dist/parity-emu4-messaging.d.ts +3 -0
- package/dist/parity-emu4-messaging.js +42 -0
- package/dist/parity-emu4-messaging.js.map +1 -0
- package/dist/parity-emu4-oauth.d.ts +2 -0
- package/dist/parity-emu4-oauth.js +55 -0
- package/dist/parity-emu4-oauth.js.map +1 -0
- package/dist/parity-emu4-trust.d.ts +2 -0
- package/dist/parity-emu4-trust.js +41 -0
- package/dist/parity-emu4-trust.js.map +1 -0
- package/dist/parity-routes.js +19 -1
- package/dist/parity-routes.js.map +1 -1
- package/dist/sns-cert.d.ts +9 -0
- package/dist/sns-cert.js +101 -0
- package/dist/sns-cert.js.map +1 -0
- package/dist/tokens.d.ts +69 -4
- package/dist/tokens.js +164 -38
- package/dist/tokens.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-adv.js","sourceRoot":"","sources":["../../src/handlers/oauth-adv.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
import type { Engine, Reply, RouteContext, RouteDef } from '../engine';
|
|
2
2
|
import type { Obj } from '../openapi';
|
|
3
|
+
import { type AuthExt } from './oauth-adv';
|
|
4
|
+
export interface CibaRec {
|
|
5
|
+
id: string;
|
|
6
|
+
clientId: string;
|
|
7
|
+
userId: string;
|
|
8
|
+
scope: string[];
|
|
9
|
+
bindingMessage: string | null;
|
|
10
|
+
expiresAt: number;
|
|
11
|
+
interval: number;
|
|
12
|
+
lastPoll: number;
|
|
13
|
+
status: 'pending' | 'approved' | 'denied' | 'used';
|
|
14
|
+
/** The client's delivery mode when the request was made. */
|
|
15
|
+
mode: 'poll' | 'ping' | 'push';
|
|
16
|
+
/** A push request that expired undecided was announced to the client (`expired_token`). */
|
|
17
|
+
expiredNotified?: boolean;
|
|
18
|
+
notificationToken: string | null;
|
|
19
|
+
createdAt: number;
|
|
20
|
+
}
|
|
21
|
+
/** The CIBA requests of this engine (the delivery sweep announces expired push requests). */
|
|
22
|
+
export declare const cibaRecords: (e: Engine) => Map<string, CibaRec>;
|
|
23
|
+
/** The scopes a user holds a remembered consent for at a client, if any. */
|
|
24
|
+
export declare const heldConsent: (e: Engine, userId: string, clientId: string) => Set<string> | undefined;
|
|
3
25
|
export declare const resetOAuthFlows: (_e: Engine) => void;
|
|
4
26
|
/** Claim a DPoP proof's jti once inside its window; false when it was already used. */
|
|
5
27
|
export declare function claimDpopJti(e: Engine, jkt: string, jti: string, ttlMs: number): boolean;
|
|
@@ -22,7 +44,9 @@ export declare function consentGate(e: Engine, a: {
|
|
|
22
44
|
nonce: string | null;
|
|
23
45
|
state?: string;
|
|
24
46
|
prompt: string | null;
|
|
25
|
-
|
|
47
|
+
ext?: AuthExt;
|
|
48
|
+
force?: boolean;
|
|
49
|
+
}): Promise<Reply | null>;
|
|
26
50
|
/** `device_code` and `ciba` grants. Returns undefined for any other grant type. */
|
|
27
51
|
export declare function extensionGrant(c: RouteContext, client: Obj, type: string, cnf: Obj | undefined): Promise<Reply | undefined>;
|
|
28
52
|
export declare function oauthFlowHandlers(): RouteDef[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resetOAuthFlows = void 0;
|
|
3
|
+
exports.resetOAuthFlows = exports.heldConsent = exports.cibaRecords = void 0;
|
|
4
4
|
exports.claimDpopJti = claimDpopJti;
|
|
5
5
|
exports.resolveRequestUri = resolveRequestUri;
|
|
6
6
|
exports.consentGate = consentGate;
|
|
@@ -9,7 +9,11 @@ exports.oauthFlowHandlers = oauthFlowHandlers;
|
|
|
9
9
|
const errors_1 = require("../errors");
|
|
10
10
|
const store_1 = require("../store");
|
|
11
11
|
const oauth_1 = require("./oauth");
|
|
12
|
+
const oauth_adv_1 = require("./oauth-adv");
|
|
12
13
|
const support_1 = require("./support");
|
|
14
|
+
const emu4_oauth_auth_1 = require("./emu4-oauth-auth");
|
|
15
|
+
const emu4_oauth_pub_1 = require("./emu4-oauth-pub");
|
|
16
|
+
const emu4_oauth_delivery_1 = require("./emu4-oauth-delivery");
|
|
13
17
|
/**
|
|
14
18
|
* The OAuth provider's interactive and out-of-band flows, on top of the core in `oauth.ts`: the consent screen (built-in
|
|
15
19
|
* `/oauth2/authorize/consent` and the delegated `/v1/oauth_consent_requests` challenge), pushed authorization requests
|
|
@@ -25,6 +29,12 @@ const DEVICE_TTL_S = 600;
|
|
|
25
29
|
const POLL_INTERVAL_S = 5;
|
|
26
30
|
const USER_CODE_ALPHABET = 'BCDFGHJKLMNPQRSTVWXZ';
|
|
27
31
|
const flows = (0, support_1.engineState)(() => ({ par: new Map(), consents: new Map(), remembered: new Map(), devices: new Map(), ciba: new Map(), dpopSeen: new Map() }));
|
|
32
|
+
/** The CIBA requests of this engine (the delivery sweep announces expired push requests). */
|
|
33
|
+
const cibaRecords = (e) => flows(e).ciba;
|
|
34
|
+
exports.cibaRecords = cibaRecords;
|
|
35
|
+
/** The scopes a user holds a remembered consent for at a client, if any. */
|
|
36
|
+
const heldConsent = (e, userId, clientId) => flows(e).remembered.get(`${userId}|${clientId}`);
|
|
37
|
+
exports.heldConsent = heldConsent;
|
|
28
38
|
const resetOAuthFlows = (_e) => undefined; // state lives in engineState, which engine.reset clears
|
|
29
39
|
exports.resetOAuthFlows = resetOAuthFlows;
|
|
30
40
|
/** Claim a DPoP proof's jti once inside its window; false when it was already used. */
|
|
@@ -40,13 +50,6 @@ function claimDpopJti(e, jkt, jti, ttlMs) {
|
|
|
40
50
|
seen.set(key, now + ttlMs);
|
|
41
51
|
return true;
|
|
42
52
|
}
|
|
43
|
-
const redirectTo = (uri, params) => {
|
|
44
|
-
const u = new URL(uri);
|
|
45
|
-
for (const [k, v] of Object.entries(params))
|
|
46
|
-
if (v !== undefined)
|
|
47
|
-
u.searchParams.set(k, v);
|
|
48
|
-
return u.toString();
|
|
49
|
-
};
|
|
50
53
|
const found = (location) => ({ status: 302, headers: { location, 'cache-control': 'no-store' } });
|
|
51
54
|
/** The user a flow acts for: an explicit id or email, else the one the emulator signs in, else the only user. */
|
|
52
55
|
function resolveUser(e, hint, allowSole = true) {
|
|
@@ -73,18 +76,22 @@ function resolveRequestUri(e, query) {
|
|
|
73
76
|
// ── consent ──────────────────────────────────────────────────────────
|
|
74
77
|
const rememberKey = (userId, clientId) => `${userId}|${clientId}`;
|
|
75
78
|
/** Where an authorize request must stop for the user's consent, or null when it can proceed (first-party client, consent not required, or already remembered). */
|
|
76
|
-
function consentGate(e, a) {
|
|
79
|
+
async function consentGate(e, a) {
|
|
77
80
|
const { client, user, scope, prompt } = a;
|
|
78
|
-
const forced = prompt === 'consent';
|
|
81
|
+
const forced = prompt === 'consent' || a.force === true;
|
|
82
|
+
const ext = a.ext ?? oauth_adv_1.CODE_EXT;
|
|
79
83
|
if (client.first_party === true || !(client.require_consent === true || forced))
|
|
80
84
|
return null;
|
|
81
85
|
const held = flows(e).remembered.get(rememberKey(user.id, client.id));
|
|
82
86
|
if (!forced && held && scope.every((s) => held.has(s)))
|
|
83
87
|
return null;
|
|
88
|
+
// One consent for a verified publisher's other apps (openid, email and profile only).
|
|
89
|
+
if (!forced && (0, emu4_oauth_pub_1.publisherDecision)(e, client, user.id, scope).skipConsent)
|
|
90
|
+
return null;
|
|
84
91
|
if (prompt === 'none')
|
|
85
|
-
return
|
|
92
|
+
return (0, emu4_oauth_auth_1.authReply)(e, client, a.redirectUri, (0, oauth_adv_1.authUrl)(e, a.redirectUri, { error: 'consent_required', error_description: 'The user has not consented to these scopes.', state: a.state, iss: e.issuer }, !!(0, oauth_adv_1.parseResponseType)(ext.rt)?.frontChannelTokens, ext.mode), ext.mode);
|
|
86
93
|
const id = `consent_${(0, store_1.randomToken)(24)}`;
|
|
87
|
-
flows(e).consents.set(id, { id, clientId: client.id, userId: user.id, scope, redirectUri: a.redirectUri, challenge: a.challenge, nonce: a.nonce, state: a.state, expiresAt: e.clock.now() + CONSENT_TTL_MS, status: 'pending' });
|
|
94
|
+
flows(e).consents.set(id, { id, clientId: client.id, userId: user.id, scope, redirectUri: a.redirectUri, challenge: a.challenge, nonce: a.nonce, state: a.state, ext, expiresAt: e.clock.now() + CONSENT_TTL_MS, status: 'pending' });
|
|
88
95
|
return found(`${e.issuer}/oauth2/authorize/consent?consent_token=${id}`);
|
|
89
96
|
}
|
|
90
97
|
function liveConsent(e, id) {
|
|
@@ -94,8 +101,8 @@ function liveConsent(e, id) {
|
|
|
94
101
|
return c;
|
|
95
102
|
}
|
|
96
103
|
/** Answer a consent request; returns the URL to send the browser to. The scopes granted are always a subset of what was asked. */
|
|
97
|
-
function settleConsent(e, c, d) {
|
|
98
|
-
const back = (p) =>
|
|
104
|
+
async function settleConsent(e, c, d) {
|
|
105
|
+
const back = (p) => (0, oauth_adv_1.authUrl)(e, c.redirectUri, { ...p, state: c.state, iss: e.issuer }, !!(0, oauth_adv_1.parseResponseType)(c.ext.rt)?.frontChannelTokens, c.ext.mode);
|
|
99
106
|
const client = e.db.oauthClients.get(c.clientId);
|
|
100
107
|
if (!client || client.deleted) {
|
|
101
108
|
c.status = 'rejected';
|
|
@@ -115,7 +122,7 @@ function settleConsent(e, c, d) {
|
|
|
115
122
|
const key = rememberKey(c.userId, c.clientId);
|
|
116
123
|
flows(e).remembered.set(key, new Set([...(flows(e).remembered.get(key) ?? []), ...grant]));
|
|
117
124
|
}
|
|
118
|
-
return
|
|
125
|
+
return (0, oauth_adv_1.completeAuth)(e, { client, userId: c.userId, scope: grant, redirectUri: c.redirectUri, challenge: c.challenge, nonce: c.nonce, state: c.state, ext: c.ext });
|
|
119
126
|
}
|
|
120
127
|
// ── extension grants on /oauth2/token ────────────────────────────────
|
|
121
128
|
const pendingErr = (error, description) => (0, oauth_1.fail)(400, error, description);
|
|
@@ -129,6 +136,9 @@ async function extensionGrant(c, client, type, cnf) {
|
|
|
129
136
|
const rec = isDevice ? flows(e).devices.get(String(c.body.device_code ?? '')) : flows(e).ciba.get(String(c.body.auth_req_id ?? ''));
|
|
130
137
|
if (!rec || rec.clientId !== client.id || rec.status === 'used')
|
|
131
138
|
return (0, oauth_1.fail)(400, 'invalid_grant', isDevice ? 'The device_code is invalid.' : 'The auth_req_id is invalid.');
|
|
139
|
+
// CIBA 10.3: a push-mode client is sent the tokens and never polls.
|
|
140
|
+
if (!isDevice && rec.mode === 'push')
|
|
141
|
+
return (0, oauth_1.fail)(400, 'invalid_request', 'This request uses push delivery; the tokens are sent to the client notification endpoint.');
|
|
132
142
|
if (rec.expiresAt <= now)
|
|
133
143
|
return pendingErr('expired_token', 'The request expired.');
|
|
134
144
|
if (rec.status === 'denied') {
|
|
@@ -167,8 +177,8 @@ function scopeFor(client, asked) {
|
|
|
167
177
|
}
|
|
168
178
|
function oauthFlowHandlers() {
|
|
169
179
|
const cibaView = (r) => ({ id: r.id, scope: r.scope, binding_message: r.bindingMessage, created_at: r.createdAt, expires_at: r.expiresAt });
|
|
170
|
-
const requireClient = (e, c, needGrant) => {
|
|
171
|
-
const auth = (0, oauth_1.authenticateClient)(e, c);
|
|
180
|
+
const requireClient = async (e, c, needGrant) => {
|
|
181
|
+
const auth = await (0, oauth_1.authenticateClient)(e, c);
|
|
172
182
|
if ('error' in auth)
|
|
173
183
|
return auth;
|
|
174
184
|
if (needGrant && !auth.client.grant_types.includes(needGrant))
|
|
@@ -181,13 +191,28 @@ function oauthFlowHandlers() {
|
|
|
181
191
|
method: 'POST',
|
|
182
192
|
pattern: '/oauth2/par',
|
|
183
193
|
public: true,
|
|
184
|
-
handler: (c) => {
|
|
194
|
+
handler: async (c) => {
|
|
185
195
|
const e = c.engine;
|
|
186
|
-
const auth = requireClient(e, c);
|
|
196
|
+
const auth = await requireClient(e, c);
|
|
187
197
|
if ('error' in auth)
|
|
188
198
|
return auth.error;
|
|
189
199
|
const client = auth.client;
|
|
190
|
-
const b = c.body;
|
|
200
|
+
const b = { ...c.body };
|
|
201
|
+
let rarRaw = b.authorization_details;
|
|
202
|
+
// A signed request object supersedes the body parameters (RFC 9101).
|
|
203
|
+
if (b.request) {
|
|
204
|
+
const loaded = await (0, oauth_adv_1.loadRequestObject)(e, client, { request: String(b.request) });
|
|
205
|
+
if (!loaded.ok)
|
|
206
|
+
return (0, oauth_1.fail)(400, loaded.error === 'invalid_request' ? 'invalid_request' : 'invalid_request_object', loaded.description);
|
|
207
|
+
for (const k of oauth_adv_1.REQUEST_OBJECT_PARAMS)
|
|
208
|
+
if (typeof loaded.claims[k] === 'string')
|
|
209
|
+
b[k] = loaded.claims[k];
|
|
210
|
+
if (loaded.claims.authorization_details !== undefined)
|
|
211
|
+
rarRaw = loaded.claims.authorization_details;
|
|
212
|
+
delete b.request;
|
|
213
|
+
}
|
|
214
|
+
else if (client.require_signed_request_object === true)
|
|
215
|
+
return (0, oauth_1.fail)(400, 'invalid_request', 'This client must send a signed request object.');
|
|
191
216
|
if (b.request_uri)
|
|
192
217
|
return (0, oauth_1.fail)(400, 'invalid_request', 'request_uri is not allowed here.');
|
|
193
218
|
if (b.client_id && b.client_id !== client.id)
|
|
@@ -195,20 +220,31 @@ function oauthFlowHandlers() {
|
|
|
195
220
|
const redirectUri = typeof b.redirect_uri === 'string' ? b.redirect_uri : undefined;
|
|
196
221
|
if (!redirectUri || !client.redirect_uris.includes(redirectUri))
|
|
197
222
|
return (0, oauth_1.fail)(400, 'invalid_request', 'The redirect_uri does not match a registered URI.');
|
|
198
|
-
|
|
199
|
-
|
|
223
|
+
const rt = (0, oauth_adv_1.parseResponseType)(b.response_type);
|
|
224
|
+
if (!rt)
|
|
225
|
+
return (0, oauth_1.fail)(400, 'unsupported_response_type', 'The response_type is not supported.');
|
|
226
|
+
if (!(0, oauth_adv_1.clientResponseTypes)(client).includes(rt.canonical))
|
|
227
|
+
return (0, oauth_1.fail)(400, 'unauthorized_client', 'This client is not registered for this response_type.');
|
|
200
228
|
const asked = (0, oauth_1.splitScope)(b.scope ?? 'openid');
|
|
201
229
|
const outside = asked.filter((s) => !client.allowed_scopes.includes(s) && !['openid', 'profile', 'email', 'offline_access'].includes(s));
|
|
202
230
|
if (outside.length)
|
|
203
231
|
return (0, oauth_1.fail)(400, 'invalid_scope', `Scope not allowed: ${outside.join(' ')}.`);
|
|
204
232
|
if (b.code_challenge && (b.code_challenge_method ?? 'plain') !== 'S256')
|
|
205
233
|
return (0, oauth_1.fail)(400, 'invalid_request', 'code_challenge_method must be S256.');
|
|
206
|
-
if (!b.code_challenge && client.auth_method === 'none')
|
|
234
|
+
if (!b.code_challenge && rt.code && client.auth_method === 'none')
|
|
207
235
|
return (0, oauth_1.fail)(400, 'invalid_request', 'A public client must use PKCE (code_challenge).');
|
|
236
|
+
const rar = (0, oauth_adv_1.validateAuthorizationDetails)(rarRaw, (0, oauth_adv_1.adv)(e).cfg.authorization_details_types);
|
|
237
|
+
if (!rar.ok)
|
|
238
|
+
return (0, oauth_1.fail)(400, 'invalid_authorization_details', rar.message);
|
|
239
|
+
const gm = (0, oauth_adv_1.parseGrantManagement)(b.grant_management_action, b.grant_id);
|
|
240
|
+
if (!gm.ok)
|
|
241
|
+
return (0, oauth_1.fail)(400, 'invalid_request', gm.message);
|
|
208
242
|
const params = {};
|
|
209
243
|
for (const [k, v] of Object.entries(b))
|
|
210
244
|
if (typeof v === 'string' && !['client_secret', 'client_id'].includes(k))
|
|
211
245
|
params[k] = v;
|
|
246
|
+
if (rar.value)
|
|
247
|
+
params.authorization_details = JSON.stringify(rar.value);
|
|
212
248
|
const uri = `urn:ietf:params:oauth:request_uri:${(0, store_1.randomToken)(24)}`;
|
|
213
249
|
flows(e).par.set(uri, { clientId: client.id, params, expiresAt: e.clock.now() + PAR_TTL_MS, used: false });
|
|
214
250
|
return { status: 201, body: { request_uri: uri, expires_in: PAR_TTL_MS / 1000 }, headers: { 'cache-control': 'no-store' } };
|
|
@@ -223,20 +259,21 @@ function oauthFlowHandlers() {
|
|
|
223
259
|
const e = c.engine;
|
|
224
260
|
const r = liveConsent(e, c.query.get('consent_token'));
|
|
225
261
|
const client = e.db.oauthClients.get(r.clientId);
|
|
226
|
-
|
|
262
|
+
const pub = (0, emu4_oauth_pub_1.publisherDecision)(e, client, r.userId, r.scope);
|
|
263
|
+
return { body: { object: 'oauth_consent_screen', consent_token: r.id, client: { id: client.id, name: client.name, ...(pub.publisherName ? { published_by: pub.publisherName } : {}) }, user_id: r.userId, requested_scope: r.scope, expires_at: r.expiresAt } };
|
|
227
264
|
},
|
|
228
265
|
},
|
|
229
266
|
{
|
|
230
267
|
method: 'POST',
|
|
231
268
|
pattern: '/oauth2/authorize/consent',
|
|
232
269
|
public: true,
|
|
233
|
-
handler: (c) => {
|
|
270
|
+
handler: async (c) => {
|
|
234
271
|
const e = c.engine;
|
|
235
272
|
const r = liveConsent(e, typeof c.body.consent_token === 'string' ? c.body.consent_token : null);
|
|
236
273
|
const approve = c.body.decision === 'approve';
|
|
237
274
|
if (!approve && c.body.decision !== 'deny')
|
|
238
275
|
throw new errors_1.EmulatorError('VALIDATION_FAILED', 'decision must be approve or deny.', 'decision');
|
|
239
|
-
return
|
|
276
|
+
return (0, emu4_oauth_auth_1.authReply)(e, e.db.oauthClients.get(r.clientId), r.redirectUri, await settleConsent(e, r, { approve }), r.ext.mode);
|
|
240
277
|
},
|
|
241
278
|
},
|
|
242
279
|
// ── consent: the delegated challenge (a customer's own consent page) ──
|
|
@@ -253,21 +290,21 @@ function oauthFlowHandlers() {
|
|
|
253
290
|
{
|
|
254
291
|
method: 'PUT',
|
|
255
292
|
pattern: '/v1/oauth_consent_requests/accept',
|
|
256
|
-
handler: (c) => {
|
|
293
|
+
handler: async (c) => {
|
|
257
294
|
const e = c.engine;
|
|
258
295
|
const r = liveConsent(e, c.query.get('consent_challenge'));
|
|
259
296
|
if (c.body.grant_scope !== undefined && (!Array.isArray(c.body.grant_scope) || c.body.grant_scope.some((s) => typeof s !== 'string')))
|
|
260
297
|
throw new errors_1.EmulatorError('VALIDATION_FAILED', 'grant_scope must be a list of scopes.', 'grant_scope');
|
|
261
|
-
return { body: { object: 'oauth_consent_redirect', redirect_to: settleConsent(e, r, { approve: true, grant: c.body.grant_scope, remember: c.body.remember }) } };
|
|
298
|
+
return { body: { object: 'oauth_consent_redirect', redirect_to: await settleConsent(e, r, { approve: true, grant: c.body.grant_scope, remember: c.body.remember }) } };
|
|
262
299
|
},
|
|
263
300
|
},
|
|
264
301
|
{
|
|
265
302
|
method: 'PUT',
|
|
266
303
|
pattern: '/v1/oauth_consent_requests/reject',
|
|
267
|
-
handler: (c) => {
|
|
304
|
+
handler: async (c) => {
|
|
268
305
|
const e = c.engine;
|
|
269
306
|
const r = liveConsent(e, c.query.get('consent_challenge'));
|
|
270
|
-
return { body: { object: 'oauth_consent_redirect', redirect_to: settleConsent(e, r, { approve: false, error: c.body.error, description: c.body.error_description }) } };
|
|
307
|
+
return { body: { object: 'oauth_consent_redirect', redirect_to: await settleConsent(e, r, { approve: false, error: c.body.error, description: c.body.error_description }) } };
|
|
271
308
|
},
|
|
272
309
|
},
|
|
273
310
|
// ── device authorization ──
|
|
@@ -275,9 +312,9 @@ function oauthFlowHandlers() {
|
|
|
275
312
|
method: 'POST',
|
|
276
313
|
pattern: '/oauth2/device_authorization',
|
|
277
314
|
public: true,
|
|
278
|
-
handler: (c) => {
|
|
315
|
+
handler: async (c) => {
|
|
279
316
|
const e = c.engine;
|
|
280
|
-
const auth = requireClient(e, c, DEVICE_GRANT);
|
|
317
|
+
const auth = await requireClient(e, c, DEVICE_GRANT);
|
|
281
318
|
if ('error' in auth)
|
|
282
319
|
return auth.error;
|
|
283
320
|
const scope = scopeFor(auth.client, c.body.scope);
|
|
@@ -334,18 +371,33 @@ function oauthFlowHandlers() {
|
|
|
334
371
|
method: 'POST',
|
|
335
372
|
pattern: '/oauth2/backchannel_authentication',
|
|
336
373
|
public: true,
|
|
337
|
-
handler: (c) => {
|
|
374
|
+
handler: async (c) => {
|
|
338
375
|
const e = c.engine;
|
|
339
|
-
const auth = requireClient(e, c, CIBA_GRANT);
|
|
376
|
+
const auth = await requireClient(e, c, CIBA_GRANT);
|
|
340
377
|
if ('error' in auth)
|
|
341
378
|
return auth.error;
|
|
342
379
|
const client = auth.client;
|
|
343
380
|
if (client.auth_method === 'none')
|
|
344
381
|
return (0, oauth_1.fail)(400, 'invalid_client', 'CIBA requires a confidential client.');
|
|
345
|
-
|
|
382
|
+
// A signed authentication request carries the parameters in a JWT (OpenID CIBA 7.1.1).
|
|
383
|
+
let body = { ...c.body };
|
|
384
|
+
if (body.request) {
|
|
385
|
+
const loaded = await (0, oauth_adv_1.loadRequestObject)(e, client, { request: String(body.request) });
|
|
386
|
+
if (!loaded.ok)
|
|
387
|
+
return (0, oauth_1.fail)(400, 'invalid_request_object', loaded.description);
|
|
388
|
+
for (const k of ['scope', 'login_hint', 'id_token_hint', 'binding_message', 'user_code', 'client_notification_token', 'acr_values'])
|
|
389
|
+
if (typeof loaded.claims[k] === 'string')
|
|
390
|
+
body[k] = loaded.claims[k];
|
|
391
|
+
if (loaded.claims.requested_expiry !== undefined)
|
|
392
|
+
body.requested_expiry = String(loaded.claims.requested_expiry);
|
|
393
|
+
delete body.request;
|
|
394
|
+
}
|
|
395
|
+
else if (client.require_signed_request_object === true)
|
|
396
|
+
return (0, oauth_1.fail)(400, 'invalid_request', 'This client must send a signed authentication request.');
|
|
397
|
+
const scope = scopeFor(client, body.scope);
|
|
346
398
|
if ('error' in scope)
|
|
347
399
|
return scope.error;
|
|
348
|
-
const hint = typeof
|
|
400
|
+
const hint = typeof body.login_hint === 'string' ? body.login_hint : '';
|
|
349
401
|
if (!hint)
|
|
350
402
|
return (0, oauth_1.fail)(400, 'invalid_request', 'login_hint is required.');
|
|
351
403
|
const user = resolveUser(e, hint, false);
|
|
@@ -353,26 +405,27 @@ function oauthFlowHandlers() {
|
|
|
353
405
|
return (0, oauth_1.fail)(400, 'unknown_user_id', 'No user matches the login_hint.');
|
|
354
406
|
if (user.banned)
|
|
355
407
|
return (0, oauth_1.fail)(400, 'access_denied', 'The user is banned.');
|
|
356
|
-
const binding =
|
|
408
|
+
const binding = body.binding_message;
|
|
357
409
|
if (binding !== undefined && (typeof binding !== 'string' || binding.length > 64 || !/^[\x20-\x7e]*$/.test(binding)))
|
|
358
410
|
return (0, oauth_1.fail)(400, 'invalid_binding_message', 'binding_message is up to 64 printable characters.');
|
|
359
|
-
const expiry =
|
|
411
|
+
const expiry = body.requested_expiry === undefined ? 120 : Number(body.requested_expiry);
|
|
360
412
|
if (!Number.isInteger(expiry) || expiry < 1 || expiry > 3600)
|
|
361
413
|
return (0, oauth_1.fail)(400, 'invalid_request', 'requested_expiry is a whole number of seconds from 1 to 3600.');
|
|
362
414
|
const mode = client.backchannel_token_delivery_mode ?? 'poll';
|
|
363
415
|
let token = null;
|
|
364
|
-
if (mode
|
|
365
|
-
const t =
|
|
416
|
+
if (mode !== 'poll') {
|
|
417
|
+
const t = body.client_notification_token;
|
|
418
|
+
// The notification token is the bearer secret of the client's callback: at least 128 bits (22 base64url characters).
|
|
366
419
|
if (typeof t !== 'string' || t.length < 22 || t.length > 1024 || !/^[\x21-\x7e]+$/.test(t))
|
|
367
|
-
return (0, oauth_1.fail)(400, 'invalid_request', 'client_notification_token is required (22 to 1024 printable characters) for ping.');
|
|
420
|
+
return (0, oauth_1.fail)(400, 'invalid_request', 'client_notification_token is required (22 to 1024 printable characters) for ping and push.');
|
|
368
421
|
if (!client.backchannel_client_notification_endpoint)
|
|
369
422
|
return (0, oauth_1.fail)(400, 'invalid_request', 'This client has no notification endpoint registered.');
|
|
370
423
|
token = t;
|
|
371
424
|
}
|
|
372
425
|
const now = e.clock.now();
|
|
373
|
-
const rec = { id: `ciba_${(0, store_1.randomToken)(24)}`, clientId: client.id, userId: user.id, scope, bindingMessage: binding ?? null, expiresAt: now + expiry * 1000, interval: POLL_INTERVAL_S, lastPoll: 0, status: 'pending', notificationToken: token, createdAt: now };
|
|
426
|
+
const rec = { id: `ciba_${(0, store_1.randomToken)(24)}`, clientId: client.id, userId: user.id, scope, bindingMessage: binding ?? null, expiresAt: now + expiry * 1000, interval: POLL_INTERVAL_S, lastPoll: 0, status: 'pending', mode, notificationToken: token, createdAt: now };
|
|
374
427
|
flows(e).ciba.set(rec.id, rec);
|
|
375
|
-
return { body: { auth_req_id: rec.id, expires_in: expiry, ...(mode === '
|
|
428
|
+
return { body: { auth_req_id: rec.id, expires_in: expiry, ...(mode === 'push' ? {} : { interval: POLL_INTERVAL_S }) }, headers: { 'cache-control': 'no-store' } };
|
|
376
429
|
},
|
|
377
430
|
},
|
|
378
431
|
{
|
|
@@ -403,15 +456,23 @@ function oauthFlowHandlers() {
|
|
|
403
456
|
const approve = c.body.decision === 'approve';
|
|
404
457
|
rec.status = approve ? 'approved' : 'denied';
|
|
405
458
|
const client = e.db.oauthClients.get(rec.clientId);
|
|
406
|
-
if (
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
459
|
+
if (rec.mode !== 'poll' && client?.backchannel_client_notification_endpoint && rec.notificationToken) {
|
|
460
|
+
// Ping carries only the auth_req_id; push carries the token response (or the refusal) itself and is spent by it (CIBA 10.2, 10.3).
|
|
461
|
+
let payload = { auth_req_id: rec.id };
|
|
462
|
+
if (rec.mode === 'push') {
|
|
463
|
+
if (!approve)
|
|
464
|
+
payload = { auth_req_id: rec.id, error: 'access_denied', error_description: 'The user denied the request.' };
|
|
465
|
+
else {
|
|
466
|
+
rec.status = 'used';
|
|
467
|
+
const grant = { id: e.db.newId('oag'), clientId: client.id, userId: rec.userId, scope: rec.scope, revoked: false, jtis: new Set() };
|
|
468
|
+
(0, oauth_1.st)(e).grants.set(grant.id, grant);
|
|
469
|
+
payload = { auth_req_id: rec.id, ...(await (0, oauth_1.issueTokens)(e, client, grant, null, e.clock.now())) };
|
|
470
|
+
}
|
|
412
471
|
}
|
|
472
|
+
// Queued with the real retry schedule: a failing endpoint is retried as the clock advances; a failed ping leaves the request pollable.
|
|
473
|
+
await (0, emu4_oauth_delivery_1.enqueueCiba)(e, { kind: rec.mode === 'push' ? 'ciba_push' : 'ciba_ping', clientId: client.id, requestId: rec.id, endpoint: client.backchannel_client_notification_endpoint, token: rec.notificationToken, payload });
|
|
413
474
|
}
|
|
414
|
-
return { body: { object: 'backchannel_request', id: rec.id, status:
|
|
475
|
+
return { body: { object: 'backchannel_request', id: rec.id, status: approve ? 'approved' : 'denied' } };
|
|
415
476
|
},
|
|
416
477
|
},
|
|
417
478
|
];
|