@atlasauth/backend 0.39.0 → 0.40.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/CHANGELOG.md +17 -0
- package/README.md +2 -0
- package/dist/client/credentials.d.ts +4 -2
- package/dist/client/credentials.js.map +1 -1
- package/dist/client/index.d.ts +50 -2
- package/dist/client/instance.d.ts +38 -1
- package/dist/client/instance.js +8 -0
- package/dist/client/instance.js.map +1 -1
- package/dist/client/log-streams.d.ts +1 -1
- package/dist/client/organizations.d.ts +38 -1
- package/dist/client/organizations.js +27 -2
- package/dist/client/organizations.js.map +1 -1
- package/dist/client/privacy.d.ts +37 -0
- package/dist/client/privacy.js +14 -0
- package/dist/client/privacy.js.map +1 -1
- package/dist/client/request.d.ts +7 -0
- package/dist/client/request.js +3 -0
- package/dist/client/request.js.map +1 -1
- package/dist/client/sessions.d.ts +25 -0
- package/dist/client/sessions.js +4 -0
- package/dist/client/sessions.js.map +1 -1
- package/dist/client/webhooks.d.ts +40 -1
- package/dist/client/webhooks.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/recent-auth.d.ts +16 -0
- package/dist/recent-auth.js +21 -0
- package/dist/recent-auth.js.map +1 -1
- package/dist/sid-revocation.d.ts +30 -0
- package/dist/sid-revocation.js +61 -0
- package/dist/sid-revocation.js.map +1 -0
- package/dist/verify.d.ts +24 -3
- package/dist/verify.js +16 -2
- package/dist/verify.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/dist/webhook-common.d.ts +1 -1
- package/dist/webhook-dedupe.d.ts +15 -0
- package/dist/webhook-dedupe.js +24 -0
- package/dist/webhook-dedupe.js.map +1 -1
- package/dist/webhook-events.generated.d.ts +19 -2
- package/dist/webhook-events.generated.js +1 -0
- package/dist/webhook-events.generated.js.map +1 -1
- package/package.json +1 -1
|
@@ -26,6 +26,25 @@ export interface TouchedSession extends Session {
|
|
|
26
26
|
/** true when this touch moved the inactivity window; false when one within the last 60 seconds already had. */
|
|
27
27
|
extended: boolean;
|
|
28
28
|
}
|
|
29
|
+
/** One revoked session in {@link RevokedSessionsPage}. `sid` is the `sid` claim of the session token. */
|
|
30
|
+
export interface RevokedSession {
|
|
31
|
+
sid: string;
|
|
32
|
+
user_id: string;
|
|
33
|
+
revoked_at: number;
|
|
34
|
+
reason: string | null;
|
|
35
|
+
}
|
|
36
|
+
/** `GET /v1/sessions/revoked`: revoked sessions (including a banned user's), oldest first, at most 24 hours back. */
|
|
37
|
+
export interface RevokedSessionsPage {
|
|
38
|
+
object: 'list';
|
|
39
|
+
data: RevokedSession[];
|
|
40
|
+
has_more: boolean;
|
|
41
|
+
/** Pass as `cursor` for the next page; null on the last. */
|
|
42
|
+
next_cursor: string | null;
|
|
43
|
+
/** When Atlas computed this answer (epoch ms): poll again with `since` a little before it. */
|
|
44
|
+
server_time: number;
|
|
45
|
+
/** The earliest time this answer covers (`since`, raised to 24 hours ago when older). */
|
|
46
|
+
window_start: number;
|
|
47
|
+
}
|
|
29
48
|
export interface ListSessionsParams {
|
|
30
49
|
/** Required by the BAPI: sessions are always scoped to one user. */
|
|
31
50
|
user_id: string;
|
|
@@ -126,6 +145,12 @@ export declare function sessionsResource(request: RequestFn): {
|
|
|
126
145
|
createBrowserTicket(params: CreateBrowserTicketParams): Promise<BrowserTicket>;
|
|
127
146
|
/** `GET /v1/sessions?user_id=` — requires a user_id. */
|
|
128
147
|
list(params: ListSessionsParams): Promise<ListPage<Session>>;
|
|
148
|
+
/** `GET /v1/sessions/revoked?since=` (needs `sessions:read`): the sessions revoked since a time, for a verifier that polls. */
|
|
149
|
+
listRevoked(params?: {
|
|
150
|
+
since?: number;
|
|
151
|
+
limit?: number;
|
|
152
|
+
cursor?: string;
|
|
153
|
+
}): Promise<RevokedSessionsPage>;
|
|
129
154
|
get(id: string): Promise<Session>;
|
|
130
155
|
revoke(id: string): Promise<{
|
|
131
156
|
object: "session";
|
package/dist/client/sessions.js
CHANGED
|
@@ -40,6 +40,10 @@ function sessionsResource(request) {
|
|
|
40
40
|
list(params) {
|
|
41
41
|
return request({ method: 'GET', path: '/v1/sessions', query: { ...params } });
|
|
42
42
|
},
|
|
43
|
+
/** `GET /v1/sessions/revoked?since=` (needs `sessions:read`): the sessions revoked since a time, for a verifier that polls. */
|
|
44
|
+
listRevoked(params = {}) {
|
|
45
|
+
return request({ method: 'GET', path: '/v1/sessions/revoked', query: { ...params } });
|
|
46
|
+
},
|
|
43
47
|
get(id) {
|
|
44
48
|
return request({ method: 'GET', path: `/v1/sessions/${(0, request_1.enc)(id)}` });
|
|
45
49
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/client/sessions.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/client/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ProvisioningFields, type ProvisioningInput, type ProvisioningMetadata } from './compliance';
|
|
2
2
|
import { type RequestFn } from './request';
|
|
3
|
-
export type WebhookDestinationType = 'https' | 'aws_eventbridge' | 'gcp_pubsub' | 'cloudflare_queue' | 'segment' | 'ga4' | 'mixpanel' | 'posthog' | 'amplitude' | 'customerio' | 'slack';
|
|
3
|
+
export type WebhookDestinationType = 'https' | 'aws_eventbridge' | 'gcp_pubsub' | 'cloudflare_queue' | 'segment' | 'ga4' | 'mixpanel' | 'posthog' | 'amplitude' | 'customerio' | 'slack' | 'lucida' | 'heap' | 'rudderstack' | 'hermetica' | 'hubspot' | 'brevo' | 'mailchimp' | 'loops' | 'klaviyo' | 'intercom' | 'seolyticize';
|
|
4
4
|
/** Where deliveries go. Credentials are never returned. */
|
|
5
5
|
export type WebhookDestination = {
|
|
6
6
|
type: 'https';
|
|
@@ -25,6 +25,36 @@ export type WebhookDestination = {
|
|
|
25
25
|
measurement_id: string;
|
|
26
26
|
} & AnalyticsOptions) | ({
|
|
27
27
|
type: 'slack';
|
|
28
|
+
} & AnalyticsOptions) | ({
|
|
29
|
+
type: 'lucida';
|
|
30
|
+
host?: string;
|
|
31
|
+
} & AnalyticsOptions) | ({
|
|
32
|
+
type: 'heap';
|
|
33
|
+
region?: 'us' | 'eu';
|
|
34
|
+
} & AnalyticsOptions) | ({
|
|
35
|
+
type: 'rudderstack';
|
|
36
|
+
data_plane_url: string;
|
|
37
|
+
} & AnalyticsOptions) | {
|
|
38
|
+
type: 'hermetica';
|
|
39
|
+
host?: string;
|
|
40
|
+
} | {
|
|
41
|
+
type: 'hubspot';
|
|
42
|
+
external_id_property?: string;
|
|
43
|
+
} | {
|
|
44
|
+
type: 'brevo';
|
|
45
|
+
list_ids?: number[] | string;
|
|
46
|
+
} | {
|
|
47
|
+
type: 'mailchimp';
|
|
48
|
+
list_id: string;
|
|
49
|
+
status_if_new?: 'subscribed' | 'pending' | 'transactional' | 'unsubscribed';
|
|
50
|
+
} | {
|
|
51
|
+
type: 'loops' | 'klaviyo';
|
|
52
|
+
} | {
|
|
53
|
+
type: 'intercom';
|
|
54
|
+
region?: 'us' | 'eu' | 'au';
|
|
55
|
+
} | ({
|
|
56
|
+
type: 'seolyticize';
|
|
57
|
+
conversion_event?: 'user.created' | 'user.attributed';
|
|
28
58
|
} & AnalyticsOptions);
|
|
29
59
|
/** Shared by the analytics and messaging destinations: person-identifying fields are dropped unless `include_pii`. */
|
|
30
60
|
export interface AnalyticsOptions {
|
|
@@ -56,6 +86,15 @@ export type WebhookDestinationCredentials = {
|
|
|
56
86
|
api_key: string;
|
|
57
87
|
} | {
|
|
58
88
|
webhook_url: string;
|
|
89
|
+
} | {
|
|
90
|
+
app_id: string;
|
|
91
|
+
} | {
|
|
92
|
+
access_token: string;
|
|
93
|
+
} | {
|
|
94
|
+
private_api_key: string;
|
|
95
|
+
} | {
|
|
96
|
+
site_key: string;
|
|
97
|
+
server_key: string;
|
|
59
98
|
};
|
|
60
99
|
export interface WebhookLastFailure {
|
|
61
100
|
at: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/client/webhooks.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/client/webhooks.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -45,3 +45,4 @@ export { ACCESS_TOKEN_CLOCK_SKEW_SECONDS, DPOP_PROOF_MAX_AGE_SECONDS, buildWwwAu
|
|
|
45
45
|
export type { AccessTokenCallOptions, AccessTokenClaims, AccessTokenErrorCode, AccessTokenResult, AccessTokenVerifierOptions, DpopNonceSource, DpopReplayStore, IntrospectionOptions, ResourceRequestLike, } from './oauth-resource';
|
|
46
46
|
export * from './legacy-verify';
|
|
47
47
|
export * from './uma';
|
|
48
|
+
export type { SidListRevocation } from './sid-revocation';
|
package/dist/recent-auth.d.ts
CHANGED
|
@@ -36,3 +36,19 @@ export declare function mfaSatisfied(claims: {
|
|
|
36
36
|
amr?: unknown;
|
|
37
37
|
sso_connection_id?: unknown;
|
|
38
38
|
}): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Whether the session meets the active organization's MFA policy (`requireMfa`,
|
|
41
|
+
* `mfaMaxAgeSeconds`, `allowedMfaFactors`): true when the organization does not
|
|
42
|
+
* require MFA, or the token says `org_mfa_ok`. The organization's policy only
|
|
43
|
+
* withholds org claims from the token; it does NOT stop a request that never
|
|
44
|
+
* reads them, so an app that authorizes from its own tables must call this
|
|
45
|
+
* itself. The claims describe the ACTIVE organization only: pass the
|
|
46
|
+
* organization you are authorizing for (its Atlas id or external id) and a token
|
|
47
|
+
* whose active organization is another one answers false.
|
|
48
|
+
*/
|
|
49
|
+
export declare function mfaOrgSatisfied(claims: {
|
|
50
|
+
org_id?: unknown;
|
|
51
|
+
org_external_id?: unknown;
|
|
52
|
+
org_mfa_required?: unknown;
|
|
53
|
+
org_mfa_ok?: unknown;
|
|
54
|
+
}, orgIdOrExternalId?: string): boolean;
|
package/dist/recent-auth.js
CHANGED
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.authenticatedWithin = authenticatedWithin;
|
|
16
16
|
exports.usedMultiFactor = usedMultiFactor;
|
|
17
17
|
exports.mfaSatisfied = mfaSatisfied;
|
|
18
|
+
exports.mfaOrgSatisfied = mfaOrgSatisfied;
|
|
18
19
|
/** Whether `auth_time` is within `maxAgeSeconds` of now. A token without `auth_time` never is. */
|
|
19
20
|
function authenticatedWithin(claims, maxAgeSeconds, nowMs = Date.now()) {
|
|
20
21
|
const at = claims.auth_time;
|
|
@@ -43,4 +44,24 @@ function mfaSatisfied(claims) {
|
|
|
43
44
|
return claims.mfa_satisfied;
|
|
44
45
|
return claims.mfa === true || usedMultiFactor(claims) || typeof claims.sso_connection_id === 'string';
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Whether the session meets the active organization's MFA policy (`requireMfa`,
|
|
49
|
+
* `mfaMaxAgeSeconds`, `allowedMfaFactors`): true when the organization does not
|
|
50
|
+
* require MFA, or the token says `org_mfa_ok`. The organization's policy only
|
|
51
|
+
* withholds org claims from the token; it does NOT stop a request that never
|
|
52
|
+
* reads them, so an app that authorizes from its own tables must call this
|
|
53
|
+
* itself. The claims describe the ACTIVE organization only: pass the
|
|
54
|
+
* organization you are authorizing for (its Atlas id or external id) and a token
|
|
55
|
+
* whose active organization is another one answers false.
|
|
56
|
+
*/
|
|
57
|
+
function mfaOrgSatisfied(claims, orgIdOrExternalId) {
|
|
58
|
+
const required = claims.org_mfa_required === true;
|
|
59
|
+
if (orgIdOrExternalId === undefined)
|
|
60
|
+
return !required || claims.org_mfa_ok === true;
|
|
61
|
+
const matches = claims.org_id === orgIdOrExternalId || claims.org_external_id === orgIdOrExternalId;
|
|
62
|
+
// Withheld claims carry no org_id: the MFA fields are then all the token says.
|
|
63
|
+
if (required)
|
|
64
|
+
return claims.org_mfa_ok === true && (matches || claims.org_id === undefined);
|
|
65
|
+
return matches;
|
|
66
|
+
}
|
|
46
67
|
//# sourceMappingURL=recent-auth.js.map
|
package/dist/recent-auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recent-auth.js","sourceRoot":"","sources":["../src/recent-auth.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AAGH,kDAIC;AAGD,0CAGC;AAYD,oCASC;
|
|
1
|
+
{"version":3,"file":"recent-auth.js","sourceRoot":"","sources":["../src/recent-auth.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AAGH,kDAIC;AAGD,0CAGC;AAYD,oCASC;AAYD,0CAUC;AAtDD,kGAAkG;AAClG,SAAgB,mBAAmB,CAAC,MAA+B,EAAE,aAAqB,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE;IACpH,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;IAC5B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACjE,OAAO,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,aAAa,CAAC;AAC5C,CAAC;AAED,yHAAyH;AACzH,SAAgB,eAAe,CAAC,MAAwC;IACtE,IAAI,MAAM,CAAC,GAAG,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAAC,MAM5B;IACC,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,aAAa,CAAC;IAC3E,OAAO,MAAM,CAAC,GAAG,KAAK,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ,CAAC;AACxG,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAC7B,MAAyG,EACzG,iBAA0B;IAE1B,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,KAAK,IAAI,CAAC;IAClD,IAAI,iBAAiB,KAAK,SAAS;QAAE,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC;IACpF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,iBAAiB,IAAI,MAAM,CAAC,eAAe,KAAK,iBAAiB,CAAC;IACpG,+EAA+E;IAC/E,IAAI,QAAQ;QAAE,OAAO,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC5F,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** `authenticateRequest(request, { revocation })`: also reject tokens whose session Atlas has revoked. */
|
|
2
|
+
export interface SidListRevocation {
|
|
3
|
+
/** Poll `GET /v1/sessions/revoked` (needs `secretKey` with `sessions:read`) and reject a token whose `sid` is listed. */
|
|
4
|
+
mode: 'sid_list';
|
|
5
|
+
/** How often to poll, in milliseconds. Default 15000. This plus the token lifetime is the worst-case window. */
|
|
6
|
+
intervalMs?: number;
|
|
7
|
+
/** Your longest-lived session token, in seconds (Atlas's default is 60). A listed sid is remembered this long. Default 3600. */
|
|
8
|
+
maxTokenLifetimeSeconds?: number;
|
|
9
|
+
/** Called when a poll fails. The last list stays in force (a failed poll never rejects or accepts more than before). */
|
|
10
|
+
onError?: (error: unknown) => void;
|
|
11
|
+
}
|
|
12
|
+
/** One poller: an in-memory set of revoked session ids, each kept until its token cannot be live any more. */
|
|
13
|
+
export declare class SidRevocationList {
|
|
14
|
+
private readonly opts;
|
|
15
|
+
private readonly io;
|
|
16
|
+
private readonly revoked;
|
|
17
|
+
private since;
|
|
18
|
+
private nextPollAt;
|
|
19
|
+
private inflight;
|
|
20
|
+
private readonly intervalMs;
|
|
21
|
+
private readonly lifetimeMs;
|
|
22
|
+
constructor(opts: SidListRevocation, io: {
|
|
23
|
+
secretKey: string;
|
|
24
|
+
baseUrl?: string;
|
|
25
|
+
fetchImpl?: typeof fetch;
|
|
26
|
+
now: () => number;
|
|
27
|
+
});
|
|
28
|
+
isRevoked(sid: string): Promise<boolean>;
|
|
29
|
+
private poll;
|
|
30
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SidRevocationList = void 0;
|
|
4
|
+
const request_1 = require("./client/request");
|
|
5
|
+
/** One poller: an in-memory set of revoked session ids, each kept until its token cannot be live any more. */
|
|
6
|
+
class SidRevocationList {
|
|
7
|
+
opts;
|
|
8
|
+
io;
|
|
9
|
+
revoked = new Map();
|
|
10
|
+
since;
|
|
11
|
+
nextPollAt = 0;
|
|
12
|
+
inflight;
|
|
13
|
+
intervalMs;
|
|
14
|
+
lifetimeMs;
|
|
15
|
+
constructor(opts, io) {
|
|
16
|
+
this.opts = opts;
|
|
17
|
+
this.io = io;
|
|
18
|
+
this.intervalMs = opts.intervalMs ?? 15_000;
|
|
19
|
+
this.lifetimeMs = (opts.maxTokenLifetimeSeconds ?? 3600) * 1000;
|
|
20
|
+
}
|
|
21
|
+
async isRevoked(sid) {
|
|
22
|
+
const now = this.io.now();
|
|
23
|
+
if (now >= this.nextPollAt)
|
|
24
|
+
await (this.inflight ??= this.poll().finally(() => (this.inflight = undefined)));
|
|
25
|
+
const expiry = this.revoked.get(sid);
|
|
26
|
+
return expiry !== undefined && expiry > now;
|
|
27
|
+
}
|
|
28
|
+
async poll() {
|
|
29
|
+
const started = this.io.now();
|
|
30
|
+
this.nextPollAt = started + this.intervalMs;
|
|
31
|
+
try {
|
|
32
|
+
let cursor;
|
|
33
|
+
let serverTime = started;
|
|
34
|
+
do {
|
|
35
|
+
const q = new URLSearchParams({ since: String(this.since ?? started - this.lifetimeMs), limit: '5000' });
|
|
36
|
+
if (cursor)
|
|
37
|
+
q.set('cursor', cursor);
|
|
38
|
+
const res = await (this.io.fetchImpl ?? fetch)(`${(this.io.baseUrl ?? request_1.DEFAULT_API_URL).replace(/\/+$/, '')}/v1/sessions/revoked?${q}`, {
|
|
39
|
+
headers: { authorization: `Bearer ${this.io.secretKey}` },
|
|
40
|
+
});
|
|
41
|
+
if (!res.ok)
|
|
42
|
+
throw new Error(`GET /v1/sessions/revoked answered ${res.status}`);
|
|
43
|
+
const page = (await res.json());
|
|
44
|
+
for (const r of page.data)
|
|
45
|
+
this.revoked.set(r.sid, r.revoked_at + this.lifetimeMs);
|
|
46
|
+
serverTime = page.server_time;
|
|
47
|
+
cursor = page.has_more && page.next_cursor ? page.next_cursor : undefined;
|
|
48
|
+
} while (cursor);
|
|
49
|
+
// Re-ask from a little before the answer's own clock, so a row committed late is not missed.
|
|
50
|
+
this.since = serverTime - 10_000;
|
|
51
|
+
for (const [sid, expiry] of this.revoked)
|
|
52
|
+
if (expiry <= started)
|
|
53
|
+
this.revoked.delete(sid);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
this.opts.onError?.(error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.SidRevocationList = SidRevocationList;
|
|
61
|
+
//# sourceMappingURL=sid-revocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sid-revocation.js","sourceRoot":"","sources":["../src/sid-revocation.ts"],"names":[],"mappings":"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"}
|
package/dist/verify.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type SidListRevocation } from './sid-revocation';
|
|
1
2
|
import { type ProtectCondition } from '@atlasauth/authz';
|
|
2
3
|
import { type Jwks } from './jwks-cache';
|
|
3
4
|
import { type LogoutTokenCheckOptions, type LogoutTokenResult } from './logout-token';
|
|
@@ -36,7 +37,7 @@ import { type LegacyIssuer } from './legacy-issuers';
|
|
|
36
37
|
*/
|
|
37
38
|
/** §7.3: five seconds either side, matching the server's minting tolerance. */
|
|
38
39
|
export declare const CLOCK_SKEW_SECONDS = 5;
|
|
39
|
-
export interface
|
|
40
|
+
export interface SessionClaimsBase {
|
|
40
41
|
iss: string;
|
|
41
42
|
sub: string;
|
|
42
43
|
sid: string;
|
|
@@ -58,6 +59,10 @@ export interface SessionClaims {
|
|
|
58
59
|
* {@link mfaSatisfied}, which falls back to the older claims when absent.
|
|
59
60
|
*/
|
|
60
61
|
mfa_satisfied?: boolean;
|
|
62
|
+
/** The active organization requires MFA (`requireMfa`, `mfaMaxAgeSeconds` or `allowedMfaFactors`). Present only then; read it through {@link mfaOrgSatisfied}. */
|
|
63
|
+
org_mfa_required?: true;
|
|
64
|
+
/** With `org_mfa_required`: this session currently meets the organization's MFA policy. */
|
|
65
|
+
org_mfa_ok?: boolean;
|
|
61
66
|
/** The session's last activity when this token was minted, epoch seconds (for idle checks). */
|
|
62
67
|
last_active_at?: number;
|
|
63
68
|
/** When the user last authenticated (first factor or step-up), epoch seconds. */
|
|
@@ -115,7 +120,8 @@ export interface SessionClaims {
|
|
|
115
120
|
email?: string;
|
|
116
121
|
/**
|
|
117
122
|
* Whether `email` was proven (a verification code, link or a trusted
|
|
118
|
-
* provider). An address held without proof carries `false`.
|
|
123
|
+
* provider). An address held without proof carries `false`. Always present
|
|
124
|
+
* when `email` is (see {@link SessionClaims}).
|
|
119
125
|
*/
|
|
120
126
|
email_verified?: boolean;
|
|
121
127
|
/**
|
|
@@ -136,6 +142,18 @@ export interface SessionClaims {
|
|
|
136
142
|
};
|
|
137
143
|
[claim: string]: unknown;
|
|
138
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* The verified session claims. `email_verified` is a boolean whenever `email`
|
|
147
|
+
* is a string (Atlas always emits the two together), so `if (claims.email)`
|
|
148
|
+
* narrows `claims.email_verified` to `boolean`.
|
|
149
|
+
*/
|
|
150
|
+
export type SessionClaims = SessionClaimsBase & ({
|
|
151
|
+
email?: undefined;
|
|
152
|
+
email_verified?: boolean;
|
|
153
|
+
} | {
|
|
154
|
+
email: string;
|
|
155
|
+
email_verified: boolean;
|
|
156
|
+
});
|
|
139
157
|
/**
|
|
140
158
|
* A verified session, carrying the ergonomic authorization helpers bound to its
|
|
141
159
|
* claims — the server-side equivalent of Clerk's `auth()`. `has()` answers a
|
|
@@ -162,7 +180,7 @@ export interface AuthorizedSession {
|
|
|
162
180
|
}
|
|
163
181
|
export type VerifyResult = AuthorizedSession | {
|
|
164
182
|
ok: false;
|
|
165
|
-
reason: 'malformed' | 'invalid' | 'no_keys' | 'unauthorized_party';
|
|
183
|
+
reason: 'malformed' | 'invalid' | 'no_keys' | 'unauthorized_party' | 'revoked';
|
|
166
184
|
/**
|
|
167
185
|
* Set with `no_keys` when the key set could not be obtained — e.g. OIDC
|
|
168
186
|
* discovery failed — saying why. A configuration diagnostic, never a
|
|
@@ -243,6 +261,7 @@ export declare class AtlasBackend {
|
|
|
243
261
|
private readonly options;
|
|
244
262
|
private readonly jwks;
|
|
245
263
|
private readonly legacy?;
|
|
264
|
+
private sidList?;
|
|
246
265
|
/**
|
|
247
266
|
* The server-side OIDC relying party (hosted-redirect sign-in) for this
|
|
248
267
|
* instance: `start`, `callback`, `logoutUrl`, `verifyIdToken`. `issuer`,
|
|
@@ -282,6 +301,8 @@ export declare class AtlasBackend {
|
|
|
282
301
|
headers: {
|
|
283
302
|
get(name: string): string | null;
|
|
284
303
|
} | Record<string, string | undefined>;
|
|
304
|
+
}, options?: {
|
|
305
|
+
revocation?: SidListRevocation;
|
|
285
306
|
}): Promise<VerifyResult>;
|
|
286
307
|
/**
|
|
287
308
|
* §migration — redirect forwarding.
|
package/dist/verify.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.hasAppPermission = hasAppPermission;
|
|
|
7
7
|
exports.hasAppRole = hasAppRole;
|
|
8
8
|
exports.has = has;
|
|
9
9
|
exports.protect = protect;
|
|
10
|
+
const sid_revocation_1 = require("./sid-revocation");
|
|
10
11
|
const jose_1 = require("jose");
|
|
11
12
|
const authz_1 = require("@atlasauth/authz");
|
|
12
13
|
const jwks_cache_1 = require("./jwks-cache");
|
|
@@ -66,6 +67,7 @@ class AtlasBackend {
|
|
|
66
67
|
options;
|
|
67
68
|
jwks;
|
|
68
69
|
legacy;
|
|
70
|
+
sidList;
|
|
69
71
|
/**
|
|
70
72
|
* The server-side OIDC relying party (hosted-redirect sign-in) for this
|
|
71
73
|
* instance: `start`, `callback`, `logoutUrl`, `verifyIdToken`. `issuer`,
|
|
@@ -282,7 +284,7 @@ class AtlasBackend {
|
|
|
282
284
|
* both carriers are legitimate. The header wins, because a caller that set it
|
|
283
285
|
* deliberately should not be overridden by a stale cookie.
|
|
284
286
|
*/
|
|
285
|
-
async authenticateRequest(request) {
|
|
287
|
+
async authenticateRequest(request, options = {}) {
|
|
286
288
|
const header = readHeader(request.headers, 'authorization');
|
|
287
289
|
const cookie = readHeader(request.headers, 'cookie');
|
|
288
290
|
const bearer = header?.startsWith('Bearer ') ? header.slice(7) : undefined;
|
|
@@ -290,7 +292,19 @@ class AtlasBackend {
|
|
|
290
292
|
const token = bearer ?? fromCookie;
|
|
291
293
|
if (!token)
|
|
292
294
|
return { ok: false, reason: 'malformed' };
|
|
293
|
-
|
|
295
|
+
const result = await this.verify(token);
|
|
296
|
+
if (!result.ok || !options.revocation)
|
|
297
|
+
return result;
|
|
298
|
+
if (!this.options.secretKey) {
|
|
299
|
+
throw new Error('authenticateRequest with `revocation` needs `secretKey` (with sessions:read) on the AtlasBackend.');
|
|
300
|
+
}
|
|
301
|
+
this.sidList ??= new sid_revocation_1.SidRevocationList(options.revocation, {
|
|
302
|
+
secretKey: this.options.secretKey,
|
|
303
|
+
baseUrl: this.options.bapiBaseUrl,
|
|
304
|
+
fetchImpl: this.options.fetchImpl,
|
|
305
|
+
now: this.options.now ?? Date.now,
|
|
306
|
+
});
|
|
307
|
+
return (await this.sidList.isRevoked(result.claims.sid)) ? { ok: false, reason: 'revoked' } : result;
|
|
294
308
|
}
|
|
295
309
|
/**
|
|
296
310
|
* §migration — redirect forwarding.
|
package/dist/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ATLAS_BACKEND_VERSION = void 0;
|
|
4
|
+
/** This package's version, sent as `X-Atlas-SDK`. Kept in step with package.json by version.test.ts. */
|
|
5
|
+
exports.ATLAS_BACKEND_VERSION = '0.40.0';
|
|
6
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAA,wGAAwG;AAC3F,QAAA,qBAAqB,GAAG,QAAQ,CAAC"}
|
package/dist/webhook-common.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export interface WebhookVerifyResult<T = unknown> {
|
|
|
13
13
|
verified: boolean;
|
|
14
14
|
/** Why verification failed, when it did. */
|
|
15
15
|
reason?: WebhookVerifyFailure;
|
|
16
|
-
/** The parsed event envelope `{ id, type, timestamp, instance_id, data }` — present only when `verified`. */
|
|
16
|
+
/** The parsed event envelope `{ id, type, timestamp, instance_id, actor, idempotency_key, data }` — present only when `verified`. */
|
|
17
17
|
event?: T;
|
|
18
18
|
/**
|
|
19
19
|
* The signed `atlas-id` header — present only when `verified`. It is the same
|
package/dist/webhook-dedupe.d.ts
CHANGED
|
@@ -61,3 +61,18 @@ export interface VerifyWebhookAndDedupeInput extends VerifyWebhookInput {
|
|
|
61
61
|
* ```
|
|
62
62
|
*/
|
|
63
63
|
export declare function verifyWebhookAndDedupe<T = unknown>(input: VerifyWebhookAndDedupeInput): Promise<VerifyAndDedupeResult<T>>;
|
|
64
|
+
/**
|
|
65
|
+
* A {@link WebhookDedupeStore} on PostgreSQL (any pg-compatible `query`). Create the table once:
|
|
66
|
+
*
|
|
67
|
+
* create table atlas_webhook_seen (
|
|
68
|
+
* key text primary key,
|
|
69
|
+
* expires_at timestamptz not null
|
|
70
|
+
* );
|
|
71
|
+
*
|
|
72
|
+
* A key whose row has expired counts as unseen and is claimed again.
|
|
73
|
+
*/
|
|
74
|
+
export declare function sqlWebhookDedupeStore({ query }: {
|
|
75
|
+
query(sql: string, params: unknown[]): Promise<{
|
|
76
|
+
rows: any[];
|
|
77
|
+
}>;
|
|
78
|
+
}): WebhookDedupeStore;
|
package/dist/webhook-dedupe.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.WebhookVerificationError = void 0;
|
|
|
4
4
|
exports.memoryWebhookStore = memoryWebhookStore;
|
|
5
5
|
exports.verifyAndDedupe = verifyAndDedupe;
|
|
6
6
|
exports.verifyWebhookAndDedupe = verifyWebhookAndDedupe;
|
|
7
|
+
exports.sqlWebhookDedupeStore = sqlWebhookDedupeStore;
|
|
7
8
|
const webhooks_web_1 = require("./webhooks-web");
|
|
8
9
|
const webhooks_1 = require("./webhooks");
|
|
9
10
|
/** A single-process store. Use a shared one (Redis, a database) when you run more than one instance. */
|
|
@@ -77,4 +78,27 @@ async function dedupeVerified(res, o) {
|
|
|
77
78
|
},
|
|
78
79
|
};
|
|
79
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* A {@link WebhookDedupeStore} on PostgreSQL (any pg-compatible `query`). Create the table once:
|
|
83
|
+
*
|
|
84
|
+
* create table atlas_webhook_seen (
|
|
85
|
+
* key text primary key,
|
|
86
|
+
* expires_at timestamptz not null
|
|
87
|
+
* );
|
|
88
|
+
*
|
|
89
|
+
* A key whose row has expired counts as unseen and is claimed again.
|
|
90
|
+
*/
|
|
91
|
+
function sqlWebhookDedupeStore({ query }) {
|
|
92
|
+
return {
|
|
93
|
+
async setIfAbsent(key, ttlSeconds) {
|
|
94
|
+
const { rows } = await query("insert into atlas_webhook_seen (key, expires_at) values ($1, now() + ($2 || ' seconds')::interval) " +
|
|
95
|
+
'on conflict (key) do update set expires_at = excluded.expires_at where atlas_webhook_seen.expires_at <= now() ' +
|
|
96
|
+
'returning key', [key, String(ttlSeconds)]);
|
|
97
|
+
return rows.length > 0;
|
|
98
|
+
},
|
|
99
|
+
async delete(key) {
|
|
100
|
+
await query('delete from atlas_webhook_seen where key = $1', [key]);
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
80
104
|
//# sourceMappingURL=webhook-dedupe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-dedupe.js","sourceRoot":"","sources":["../src/webhook-dedupe.ts"],"names":[],"mappings":";;;AAgBA,gDAcC;AAqCD,0CAMC;AAoBD,wDAKC;
|
|
1
|
+
{"version":3,"file":"webhook-dedupe.js","sourceRoot":"","sources":["../src/webhook-dedupe.ts"],"names":[],"mappings":"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"}
|