@_mustachio/openauth 0.13.1 → 0.13.3
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/esm/domain/authorize.js +11 -3
- package/dist/esm/domain/callback.js +9 -2
- package/dist/esm/domain/method-dispatch.js +1 -0
- package/dist/esm/domain/method-route.js +2 -0
- package/dist/esm/domain/mount.js +29 -0
- package/dist/esm/http/handlers/method-route.js +8 -3
- package/dist/esm/index.js +3 -0
- package/dist/esm/methods/code.js +9 -8
- package/dist/esm/methods/oauth2-generic.js +2 -1
- package/dist/esm/methods/passkey.js +3 -2
- package/dist/esm/methods/password.js +9 -8
- package/dist/esm/methods/saml-sp/metadata.js +2 -1
- package/dist/types/domain/authorize.d.ts.map +1 -1
- package/dist/types/domain/callback.d.ts +6 -5
- package/dist/types/domain/callback.d.ts.map +1 -1
- package/dist/types/domain/method-dispatch.d.ts +5 -0
- package/dist/types/domain/method-dispatch.d.ts.map +1 -1
- package/dist/types/domain/method-route.d.ts +6 -0
- package/dist/types/domain/method-route.d.ts.map +1 -1
- package/dist/types/domain/mount.d.ts +90 -0
- package/dist/types/domain/mount.d.ts.map +1 -0
- package/dist/types/http/handlers/method-route.d.ts.map +1 -1
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/methods/code.d.ts.map +1 -1
- package/dist/types/methods/oauth2-generic.d.ts.map +1 -1
- package/dist/types/methods/passkey.d.ts.map +1 -1
- package/dist/types/methods/password.d.ts.map +1 -1
- package/dist/types/methods/saml-sp/metadata.d.ts.map +1 -1
- package/dist/types/types/idp.d.ts +16 -1
- package/dist/types/types/idp.d.ts.map +1 -1
- package/dist/types/types/method.d.ts +11 -0
- package/dist/types/types/method.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/domain/authorize.ts +15 -4
- package/src/domain/callback.ts +18 -7
- package/src/domain/method-dispatch.ts +6 -0
- package/src/domain/method-route.ts +8 -0
- package/src/domain/mount.ts +113 -0
- package/src/http/handlers/method-route.ts +9 -5
- package/src/index.ts +17 -0
- package/src/methods/code.ts +15 -6
- package/src/methods/oauth2-generic.ts +6 -1
- package/src/methods/passkey.ts +6 -2
- package/src/methods/password.ts +19 -4
- package/src/methods/saml-sp/metadata.ts +5 -1
- package/src/types/idp.ts +16 -1
- package/src/types/method.ts +11 -0
|
@@ -4,6 +4,7 @@ import { err, isErr, ok } from "../types/result";
|
|
|
4
4
|
import { safeAudit } from "./audit";
|
|
5
5
|
import { randomId, randomToken } from "./crypto";
|
|
6
6
|
import { dispatchMethod } from "./method-dispatch";
|
|
7
|
+
import { callbackTarget } from "./mount";
|
|
7
8
|
import { mintStateEnvelope } from "./state-envelope";
|
|
8
9
|
import { saveEncryptedCode } from "./token";
|
|
9
10
|
var DEFAULT_FLOW_TTL_MS = 10 * 60 * 1000;
|
|
@@ -54,9 +55,15 @@ async function startAuthorize(input, deps) {
|
|
|
54
55
|
const nonce = (deps.newNonce ?? randomToken)();
|
|
55
56
|
const flowTtl = deps.flowTtlMs ?? DEFAULT_FLOW_TTL_MS;
|
|
56
57
|
const now = deps.clock();
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
const {
|
|
59
|
+
host: callbackHost,
|
|
60
|
+
path: callbackPath,
|
|
61
|
+
url: callbackUrl
|
|
62
|
+
} = callbackTarget({
|
|
63
|
+
issuerUrl: deps.issuerUrl,
|
|
64
|
+
methodId,
|
|
65
|
+
callbackHost: deps.callbackHostFor?.(tenant.id)
|
|
66
|
+
});
|
|
60
67
|
const record = {
|
|
61
68
|
flowId,
|
|
62
69
|
tenantId: tenant.id,
|
|
@@ -103,6 +110,7 @@ async function startAuthorize(input, deps) {
|
|
|
103
110
|
flow: record,
|
|
104
111
|
cookies: input.cookies,
|
|
105
112
|
sessionStore: deps.sessionStore,
|
|
113
|
+
issuerUrl: deps.issuerUrl,
|
|
106
114
|
dispatch: {
|
|
107
115
|
state: stateEnvelope,
|
|
108
116
|
callbackUrl,
|
|
@@ -4,6 +4,7 @@ import { err, isErr, ok } from "../types/result";
|
|
|
4
4
|
import { safeAudit } from "./audit";
|
|
5
5
|
import { randomToken } from "./crypto";
|
|
6
6
|
import { dispatchMethod } from "./method-dispatch";
|
|
7
|
+
import { callbackTarget } from "./mount";
|
|
7
8
|
import { saveEncryptedCode } from "./token";
|
|
8
9
|
import { verifyStateEnvelope } from "./state-envelope";
|
|
9
10
|
import { AUTH_CODE_TTL_MS } from "./authorize";
|
|
@@ -114,6 +115,7 @@ async function handleCallback(input, deps) {
|
|
|
114
115
|
flow,
|
|
115
116
|
cookies: input.cookies,
|
|
116
117
|
sessionStore: deps.sessionStore,
|
|
118
|
+
issuerUrl: input.issuerUrl,
|
|
117
119
|
dispatch: null
|
|
118
120
|
});
|
|
119
121
|
if (isErr(dispatched))
|
|
@@ -192,7 +194,7 @@ async function translate(result, flow, deps) {
|
|
|
192
194
|
async function tryIdpInitiated(input, deps, url) {
|
|
193
195
|
if (input.rawRequest.method !== "POST")
|
|
194
196
|
return null;
|
|
195
|
-
if (!input.tenant
|
|
197
|
+
if (!input.tenant)
|
|
196
198
|
return null;
|
|
197
199
|
const segments = url.pathname.split("/").filter(Boolean);
|
|
198
200
|
if (segments.length < 2 || segments[0] !== "cb")
|
|
@@ -204,7 +206,11 @@ async function tryIdpInitiated(input, deps, url) {
|
|
|
204
206
|
const method = methodRes.value;
|
|
205
207
|
if (method.unsolicitedCallback !== true)
|
|
206
208
|
return null;
|
|
207
|
-
const callbackUrl =
|
|
209
|
+
const { url: callbackUrl } = callbackTarget({
|
|
210
|
+
issuerUrl: input.issuerUrl,
|
|
211
|
+
methodId,
|
|
212
|
+
callbackHost: url.host
|
|
213
|
+
});
|
|
208
214
|
const dispatched = await dispatchMethod({
|
|
209
215
|
method,
|
|
210
216
|
route: "GET /callback",
|
|
@@ -214,6 +220,7 @@ async function tryIdpInitiated(input, deps, url) {
|
|
|
214
220
|
flow: null,
|
|
215
221
|
cookies: input.cookies,
|
|
216
222
|
sessionStore: deps.sessionStore,
|
|
223
|
+
issuerUrl: input.issuerUrl,
|
|
217
224
|
dispatch: { state: "", callbackUrl, issuerUrl: input.issuerUrl }
|
|
218
225
|
});
|
|
219
226
|
if (isErr(dispatched))
|
|
@@ -38,6 +38,7 @@ async function handleMethodRoute(input, deps) {
|
|
|
38
38
|
flow,
|
|
39
39
|
cookies: input.cookies,
|
|
40
40
|
sessionStore: deps.sessionStore,
|
|
41
|
+
issuerUrl: input.issuerUrl,
|
|
41
42
|
dispatch: null
|
|
42
43
|
});
|
|
43
44
|
if (isErr(dispatched))
|
|
@@ -120,6 +121,7 @@ async function handlePublicMethodRoute(input, deps) {
|
|
|
120
121
|
flow: null,
|
|
121
122
|
cookies: new Map,
|
|
122
123
|
sessionStore: deps.sessionStore,
|
|
124
|
+
issuerUrl: input.dispatch.issuerUrl,
|
|
123
125
|
dispatch: input.dispatch
|
|
124
126
|
});
|
|
125
127
|
if (isErr(dispatched))
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// src/domain/mount.ts
|
|
2
|
+
function mountPath(issuerUrl) {
|
|
3
|
+
let pathname;
|
|
4
|
+
try {
|
|
5
|
+
pathname = new URL(issuerUrl).pathname;
|
|
6
|
+
} catch {
|
|
7
|
+
return "";
|
|
8
|
+
}
|
|
9
|
+
const segments = pathname.split("/").filter(Boolean);
|
|
10
|
+
return segments.length === 0 ? "" : `/${segments.join("/")}`;
|
|
11
|
+
}
|
|
12
|
+
function mountedPath(issuerUrl, path) {
|
|
13
|
+
return `${mountPath(issuerUrl)}${path}`;
|
|
14
|
+
}
|
|
15
|
+
function callbackTarget(input) {
|
|
16
|
+
const issuer = new URL(input.issuerUrl);
|
|
17
|
+
const host = input.callbackHost ?? issuer.host;
|
|
18
|
+
const path = `/cb/${input.methodId}`;
|
|
19
|
+
return {
|
|
20
|
+
host,
|
|
21
|
+
path,
|
|
22
|
+
url: `${issuer.protocol}//${host}${mountPath(input.issuerUrl)}${path}`
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
callbackTarget,
|
|
27
|
+
mountPath,
|
|
28
|
+
mountedPath
|
|
29
|
+
};
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
handleMethodRoute,
|
|
4
4
|
handlePublicMethodRoute
|
|
5
5
|
} from "../../domain/method-route";
|
|
6
|
+
import { callbackTarget } from "../../domain/mount";
|
|
6
7
|
import { authError } from "../../types/error";
|
|
7
8
|
import { isErr } from "../../types/result";
|
|
8
9
|
import { applyResponsePolicy, cacheControlHeader } from "../cookies";
|
|
@@ -24,8 +25,11 @@ function makeMethodRouteHandler(deps) {
|
|
|
24
25
|
const resolved = await deps.methodCache.resolve(tenant.config, methodId);
|
|
25
26
|
if (!isErr(resolved) && resolved.value.publicRoutes?.includes(routeKey)) {
|
|
26
27
|
const issuerUrl = c.get("issuerUrl");
|
|
27
|
-
const
|
|
28
|
-
|
|
28
|
+
const { url: callbackUrl } = callbackTarget({
|
|
29
|
+
issuerUrl,
|
|
30
|
+
methodId,
|
|
31
|
+
callbackHost: deps.callbackHostFor?.(tenant.id)
|
|
32
|
+
});
|
|
29
33
|
const pub = await handlePublicMethodRoute({
|
|
30
34
|
rawRequest: c.req.raw,
|
|
31
35
|
tenant,
|
|
@@ -75,7 +79,8 @@ function makeMethodRouteHandler(deps) {
|
|
|
75
79
|
subPath,
|
|
76
80
|
httpMethod,
|
|
77
81
|
flowId,
|
|
78
|
-
cookies
|
|
82
|
+
cookies,
|
|
83
|
+
issuerUrl: c.get("issuerUrl")
|
|
79
84
|
}, {
|
|
80
85
|
sessionStore: deps.sessionStore,
|
|
81
86
|
tokenStore: deps.tokenStore,
|
package/dist/esm/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { err, isErr, isOk, ok } from "./types/result";
|
|
|
3
3
|
import { authError } from "./types/error";
|
|
4
4
|
import { asTenantId } from "./types/tenant";
|
|
5
5
|
import { revokeAllForSubject } from "./domain/revoke";
|
|
6
|
+
import { mountedPath, mountPath } from "./domain/mount";
|
|
6
7
|
import { passwordMethod } from "./methods/password";
|
|
7
8
|
import { codeMethod } from "./methods/code";
|
|
8
9
|
import { m2mMethod } from "./methods/m2m";
|
|
@@ -119,6 +120,8 @@ export {
|
|
|
119
120
|
linkedinFactory,
|
|
120
121
|
m2mMethod,
|
|
121
122
|
microsoftFactory,
|
|
123
|
+
mountPath,
|
|
124
|
+
mountedPath,
|
|
122
125
|
oauth2Factory,
|
|
123
126
|
oidcFactory,
|
|
124
127
|
ok,
|
package/dist/esm/methods/code.js
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
timingSafeEqualStr,
|
|
8
8
|
utf8
|
|
9
9
|
} from "../domain/crypto";
|
|
10
|
+
import { mountedPath } from "../domain/mount";
|
|
10
11
|
import { renderForm } from "../ui/forms";
|
|
11
12
|
var configSchema = z.object({
|
|
12
13
|
codeLength: z.number().int().min(4).max(10).optional(),
|
|
@@ -44,11 +45,11 @@ function codeMethod(opts) {
|
|
|
44
45
|
kind,
|
|
45
46
|
type: "code",
|
|
46
47
|
routes: {
|
|
47
|
-
"GET /authorize": async (
|
|
48
|
+
"GET /authorize": async (ctx) => ({
|
|
48
49
|
kind: "challenge",
|
|
49
50
|
response: htmlResponse(renderForm({
|
|
50
51
|
title: titleRequest,
|
|
51
|
-
action: `/m/${id}/send
|
|
52
|
+
action: mountedPath(ctx.issuerUrl, `/m/${id}/send`),
|
|
52
53
|
fields: destinationField(destinationKind),
|
|
53
54
|
submit: "Send code"
|
|
54
55
|
}))
|
|
@@ -68,7 +69,7 @@ async function handleSend(ctx, methodId, titleRequest, titleVerify, destinationK
|
|
|
68
69
|
kind: "challenge",
|
|
69
70
|
response: htmlResponse(renderForm({
|
|
70
71
|
title: titleRequest,
|
|
71
|
-
action: `/m/${methodId}/send
|
|
72
|
+
action: mountedPath(ctx.issuerUrl, `/m/${methodId}/send`),
|
|
72
73
|
fields: destinationField(destinationKind),
|
|
73
74
|
submit: "Send code",
|
|
74
75
|
error: "Please enter a valid destination."
|
|
@@ -85,7 +86,7 @@ async function handleSend(ctx, methodId, titleRequest, titleVerify, destinationK
|
|
|
85
86
|
kind: "challenge",
|
|
86
87
|
response: htmlResponse(renderForm({
|
|
87
88
|
title: titleVerify,
|
|
88
|
-
action: `/m/${methodId}/verify
|
|
89
|
+
action: mountedPath(ctx.issuerUrl, `/m/${methodId}/verify`),
|
|
89
90
|
fields: [
|
|
90
91
|
{
|
|
91
92
|
name: "code",
|
|
@@ -122,11 +123,11 @@ async function handleVerify(ctx, methodId, titleVerify, maxAttempts) {
|
|
|
122
123
|
const form = await safeForm(ctx.request);
|
|
123
124
|
const parsed = verifyBody.safeParse(form);
|
|
124
125
|
if (!parsed.success) {
|
|
125
|
-
return verifyError(methodId, state, titleVerify, "Please enter the code.");
|
|
126
|
+
return verifyError(ctx.issuerUrl, methodId, state, titleVerify, "Please enter the code.");
|
|
126
127
|
}
|
|
127
128
|
const submittedHash = base64url.encode(await sha256(utf8.encode(parsed.data.code)));
|
|
128
129
|
if (!timingSafeEqualStr(submittedHash, state.codeHash)) {
|
|
129
|
-
return verifyError(methodId, { ...state, attempts: state.attempts + 1 }, titleVerify, "Incorrect code. Please try again.");
|
|
130
|
+
return verifyError(ctx.issuerUrl, methodId, { ...state, attempts: state.attempts + 1 }, titleVerify, "Incorrect code. Please try again.");
|
|
130
131
|
}
|
|
131
132
|
return {
|
|
132
133
|
kind: "success",
|
|
@@ -134,12 +135,12 @@ async function handleVerify(ctx, methodId, titleVerify, maxAttempts) {
|
|
|
134
135
|
properties: { destination: state.destination }
|
|
135
136
|
};
|
|
136
137
|
}
|
|
137
|
-
function verifyError(methodId, next, titleVerify, error) {
|
|
138
|
+
function verifyError(issuerUrl, methodId, next, titleVerify, error) {
|
|
138
139
|
return {
|
|
139
140
|
kind: "challenge",
|
|
140
141
|
response: htmlResponse(renderForm({
|
|
141
142
|
title: titleVerify,
|
|
142
|
-
action: `/m/${methodId}/verify
|
|
143
|
+
action: mountedPath(issuerUrl, `/m/${methodId}/verify`),
|
|
143
144
|
fields: [
|
|
144
145
|
{
|
|
145
146
|
name: "code",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// src/methods/oauth2-generic.ts
|
|
2
2
|
import * as oauth from "oauth4webapi";
|
|
3
3
|
import { createRemoteJWKSet, jwtVerify } from "jose";
|
|
4
|
+
import { mountedPath } from "../domain/mount";
|
|
4
5
|
import { authError } from "../types/error";
|
|
5
6
|
async function buildOauth2Method(opts) {
|
|
6
7
|
const pkceMode = opts.pkce ?? "S256";
|
|
@@ -76,7 +77,7 @@ async function exchangeAndSucceed(ctx, opts, jwks, deriveSubject) {
|
|
|
76
77
|
error: authError.internalError("flow missing on callback")
|
|
77
78
|
};
|
|
78
79
|
}
|
|
79
|
-
const callbackUrl = `${new URL(ctx.request.url).protocol}//${ctx.flow.callbackHost}${ctx.flow.callbackPath}`;
|
|
80
|
+
const callbackUrl = `${new URL(ctx.request.url).protocol}//${ctx.flow.callbackHost}${mountedPath(ctx.issuerUrl, ctx.flow.callbackPath)}`;
|
|
80
81
|
const body = new URLSearchParams({
|
|
81
82
|
grant_type: "authorization_code",
|
|
82
83
|
code,
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
verifyAuthenticationResponse,
|
|
7
7
|
verifyRegistrationResponse
|
|
8
8
|
} from "@simplewebauthn/server";
|
|
9
|
+
import { mountedPath } from "../domain/mount";
|
|
9
10
|
import { renderForm } from "../ui/forms";
|
|
10
11
|
var configSchema = z.object({
|
|
11
12
|
rpName: z.string().min(1),
|
|
@@ -36,11 +37,11 @@ function passkeyMethod(opts) {
|
|
|
36
37
|
kind,
|
|
37
38
|
type: "passkey",
|
|
38
39
|
routes: {
|
|
39
|
-
"GET /authorize": async () => ({
|
|
40
|
+
"GET /authorize": async (ctx) => ({
|
|
40
41
|
kind: "challenge",
|
|
41
42
|
response: htmlResponse(renderForm({
|
|
42
43
|
title: settings.title,
|
|
43
|
-
action: `/m/${id}/authenticate-options
|
|
44
|
+
action: mountedPath(ctx.issuerUrl, `/m/${id}/authenticate-options`),
|
|
44
45
|
fields: [
|
|
45
46
|
{
|
|
46
47
|
name: "username",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// src/methods/password.ts
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { argon2idHasher } from "./password-hash";
|
|
4
|
+
import { mountedPath } from "../domain/mount";
|
|
4
5
|
import { renderForm } from "../ui/forms";
|
|
5
6
|
var configSchema = z.object({}).strict();
|
|
6
7
|
var loginBodySchema = z.object({
|
|
@@ -46,7 +47,7 @@ function passwordMethod(opts) {
|
|
|
46
47
|
async function renderLogin(ctx, methodId, title) {
|
|
47
48
|
const body = renderForm({
|
|
48
49
|
title,
|
|
49
|
-
action: `/m/${methodId}/login
|
|
50
|
+
action: mountedPath(ctx.issuerUrl, `/m/${methodId}/login`),
|
|
50
51
|
fields: [
|
|
51
52
|
{
|
|
52
53
|
name: "email",
|
|
@@ -78,15 +79,15 @@ async function handleLogin(ctx, methodId, title, users, hasher) {
|
|
|
78
79
|
const form = await safeForm(ctx.request);
|
|
79
80
|
const parsed = loginBodySchema.safeParse(form);
|
|
80
81
|
if (!parsed.success) {
|
|
81
|
-
return reLoginWithError(methodId, title, "Please enter your email and password.");
|
|
82
|
+
return reLoginWithError(ctx.issuerUrl, methodId, title, "Please enter your email and password.");
|
|
82
83
|
}
|
|
83
84
|
const user = await users.findByEmail(parsed.data.email, ctx.tenant.id);
|
|
84
85
|
if (!user) {
|
|
85
|
-
return reLoginWithError(methodId, title, "Invalid email or password.");
|
|
86
|
+
return reLoginWithError(ctx.issuerUrl, methodId, title, "Invalid email or password.");
|
|
86
87
|
}
|
|
87
88
|
const verified = await hasher.verify(parsed.data.password, user.passwordHash);
|
|
88
89
|
if (!verified) {
|
|
89
|
-
return reLoginWithError(methodId, title, "Invalid email or password.");
|
|
90
|
+
return reLoginWithError(ctx.issuerUrl, methodId, title, "Invalid email or password.");
|
|
90
91
|
}
|
|
91
92
|
return {
|
|
92
93
|
kind: "success",
|
|
@@ -101,11 +102,11 @@ async function handleRegister(ctx, methodId, title, create, users, hasher) {
|
|
|
101
102
|
const form = await safeForm(ctx.request);
|
|
102
103
|
const parsed = registerBodySchema.safeParse(form);
|
|
103
104
|
if (!parsed.success) {
|
|
104
|
-
return reLoginWithError(methodId, title, "Password must be at least 8 characters and email must be valid.");
|
|
105
|
+
return reLoginWithError(ctx.issuerUrl, methodId, title, "Password must be at least 8 characters and email must be valid.");
|
|
105
106
|
}
|
|
106
107
|
const existing = await users.findByEmail(parsed.data.email, ctx.tenant.id);
|
|
107
108
|
if (existing) {
|
|
108
|
-
return reLoginWithError(methodId, title, "An account with that email already exists.");
|
|
109
|
+
return reLoginWithError(ctx.issuerUrl, methodId, title, "An account with that email already exists.");
|
|
109
110
|
}
|
|
110
111
|
const passwordHash = await hasher.hash(parsed.data.password);
|
|
111
112
|
const user = await create({
|
|
@@ -122,12 +123,12 @@ async function handleRegister(ctx, methodId, title, create, users, hasher) {
|
|
|
122
123
|
}
|
|
123
124
|
};
|
|
124
125
|
}
|
|
125
|
-
function reLoginWithError(methodId, title, error) {
|
|
126
|
+
function reLoginWithError(issuerUrl, methodId, title, error) {
|
|
126
127
|
return {
|
|
127
128
|
kind: "challenge",
|
|
128
129
|
response: new Response(renderForm({
|
|
129
130
|
title,
|
|
130
|
-
action: `/m/${methodId}/login
|
|
131
|
+
action: mountedPath(issuerUrl, `/m/${methodId}/login`),
|
|
131
132
|
fields: [
|
|
132
133
|
{
|
|
133
134
|
name: "email",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// src/methods/saml-sp/metadata.ts
|
|
2
|
+
import { mountedPath } from "../../domain/mount";
|
|
2
3
|
import { authError } from "../../types/error";
|
|
3
4
|
import { resolveSpEntityId } from "./saml-instance";
|
|
4
5
|
var NAME_ID_FORMAT_URN = {
|
|
@@ -46,7 +47,7 @@ async function buildSpMetadata(ctx, methodId, config) {
|
|
|
46
47
|
}
|
|
47
48
|
const spEntityId = resolveSpEntityId(config, ctx.dispatch.issuerUrl, ctx.tenant.id, methodId);
|
|
48
49
|
const cb = new URL(ctx.dispatch.callbackUrl);
|
|
49
|
-
const slsUrl = `${cb.protocol}//${cb.host}
|
|
50
|
+
const slsUrl = `${cb.protocol}//${cb.host}${mountedPath(ctx.dispatch.issuerUrl, `/m/${methodId}/sls`)}`;
|
|
50
51
|
const xml = buildSpMetadataXml({
|
|
51
52
|
spEntityId,
|
|
52
53
|
acsUrl: ctx.dispatch.callbackUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../../src/domain/authorize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EACV,oBAAoB,EAGpB,SAAS,EACT,WAAW,EACZ,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAgB,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIhF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../../src/domain/authorize.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,12 +56,13 @@ export type HandleCallbackInput = {
|
|
|
56
56
|
*/
|
|
57
57
|
tenant?: TenantContext;
|
|
58
58
|
/**
|
|
59
|
-
* Per-request issuer URL (HTTP layer).
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
59
|
+
* Per-request issuer URL (HTTP layer). The IdP-initiated path derives
|
|
60
|
+
* the SP entityID / ACS from it — the same derivation the AuthnRequest
|
|
61
|
+
* and metadata paths use, so the values cannot drift — and every
|
|
62
|
+
* dispatched method receives it as `MethodContext.issuerUrl` to build
|
|
63
|
+
* mount-prefixed URLs of its own.
|
|
63
64
|
*/
|
|
64
|
-
issuerUrl
|
|
65
|
+
issuerUrl: string;
|
|
65
66
|
};
|
|
66
67
|
export type HandleCallbackDeps = {
|
|
67
68
|
configStore: ConfigStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../src/domain/callback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EAAgB,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIlE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../src/domain/callback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EAAgB,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIlE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAO5C,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,QAAQ,CAAA;IAClB,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAA;AAE/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,iFAAiF;IACjF,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,YAAY,CAAA;IACvB,KAAK,EAAE,MAAM,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAA;IACxB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CACnB,GAAG,EAAE,OAAO,KACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAChE,CAAA;AA8BD,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAuH5C"}
|
|
@@ -24,6 +24,11 @@ export type DispatchInput = {
|
|
|
24
24
|
flow: FlowRecord | null;
|
|
25
25
|
cookies: ReadonlyMap<string, string>;
|
|
26
26
|
sessionStore: SessionStore;
|
|
27
|
+
/**
|
|
28
|
+
* Issuer URL of this IdP. Always required — unlike `dispatch`, methods
|
|
29
|
+
* need it on every route to emit mount-prefixed URLs of their own.
|
|
30
|
+
*/
|
|
31
|
+
issuerUrl: string;
|
|
27
32
|
/** Populated at `GET /authorize`; null on callbacks. */
|
|
28
33
|
dispatch: MethodDispatchData | null;
|
|
29
34
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method-dispatch.d.ts","sourceRoot":"","sources":["../../../src/domain/method-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EAEV,kBAAkB,EAClB,YAAY,EAEb,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,iBAAiB,CAAA;AAE9D,MAAM,MAAM,QAAQ,GAAG,GAAG,KAAK,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AAEpD,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,aAAa,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,YAAY,EAAE,YAAY,CAAA;IAC1B,wDAAwD;IACxD,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAA;CACpC,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"method-dispatch.d.ts","sourceRoot":"","sources":["../../../src/domain/method-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EAEV,kBAAkB,EAClB,YAAY,EAEb,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,iBAAiB,CAAA;AAE9D,MAAM,MAAM,QAAQ,GAAG,GAAG,KAAK,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AAEpD,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,aAAa,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,YAAY,EAAE,YAAY,CAAA;IAC1B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAA;CACpC,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAsD5D"}
|
|
@@ -64,6 +64,12 @@ export type HandleMethodRouteInput = {
|
|
|
64
64
|
/** flowId from the `idp.flow` cookie. */
|
|
65
65
|
flowId: string;
|
|
66
66
|
cookies: ReadonlyMap<string, string>;
|
|
67
|
+
/**
|
|
68
|
+
* Issuer URL — passed to the method so it can emit mount-prefixed URLs
|
|
69
|
+
* (a re-rendered form action, say). The inbound request URL cannot
|
|
70
|
+
* supply this: a proxy has already stripped the mount prefix from it.
|
|
71
|
+
*/
|
|
72
|
+
issuerUrl: string;
|
|
67
73
|
};
|
|
68
74
|
export type HandleMethodRouteDeps = {
|
|
69
75
|
sessionStore: SessionStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method-route.d.ts","sourceRoot":"","sources":["../../../src/domain/method-route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACtE,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAElB,SAAS,EACV,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAKpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAIjE,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,GACD;IACE,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,QAAQ,CAAA;IAClB,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAA;AAE/D,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,aAAa,CAAA;IACrB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,UAAU,EAAE,KAAK,GAAG,MAAM,CAAA;IAC1B,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"method-route.d.ts","sourceRoot":"","sources":["../../../src/domain/method-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mount prefix — where this IdP sits under its origin.
|
|
3
|
+
*
|
|
4
|
+
* The library serves its routes at its own root (`/authorize`, `/m/*`,
|
|
5
|
+
* `/cb/*`); a deployment may sit behind a reverse proxy that strips a path
|
|
6
|
+
* prefix before forwarding. Routing is unaffected — but every URL the
|
|
7
|
+
* library *emits* (form actions, upstream `redirect_uri`s, SAML metadata)
|
|
8
|
+
* is consumed on the public side of that proxy and must carry the prefix.
|
|
9
|
+
*
|
|
10
|
+
* `issuerUrl` already carries it. It is the single source of truth: there
|
|
11
|
+
* is deliberately no `basePath` option, because two sources could disagree
|
|
12
|
+
* and the `iss` claim would then contradict the URLs we hand out.
|
|
13
|
+
*
|
|
14
|
+
* All emitted-URL construction goes through this module. `metadata.test.ts`
|
|
15
|
+
* is an anti-drift test asserting the SAML entityID/ACS equal what
|
|
16
|
+
* `buildAuthnRequestRedirect` derives; funnelling every site through
|
|
17
|
+
* `callbackTarget` is what keeps that true.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* The normalised mount prefix of `issuerUrl`: `""` for a root-mounted
|
|
21
|
+
* deployment, otherwise a leading-slash, no-trailing-slash path.
|
|
22
|
+
*
|
|
23
|
+
* https://example.com -> ""
|
|
24
|
+
* https://example.com/ -> ""
|
|
25
|
+
* https://example.com/idp -> "/idp"
|
|
26
|
+
* https://example.com/idp/ -> "/idp"
|
|
27
|
+
* https://example.com//idp// -> "/idp"
|
|
28
|
+
*
|
|
29
|
+
* A root-mounted issuer must yield `""` and not `"/"`, so that existing
|
|
30
|
+
* deployments emit byte-identical URLs to before this existed.
|
|
31
|
+
*
|
|
32
|
+
* An unparseable `issuerUrl` yields `""` rather than throwing: emitting a
|
|
33
|
+
* root-relative URL degrades to the pre-existing behaviour, whereas
|
|
34
|
+
* throwing would turn a misconfiguration into a 500 from inside form
|
|
35
|
+
* rendering. Misconfiguration still fails loudly at `/authorize`, which
|
|
36
|
+
* parses `issuerUrl` for the callback host.
|
|
37
|
+
*/
|
|
38
|
+
export declare function mountPath(issuerUrl: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* A path-absolute URL for one of the library's own routes, carrying the
|
|
41
|
+
* deployment's mount prefix. `path` is the route as the service itself
|
|
42
|
+
* serves it, with a leading slash.
|
|
43
|
+
*
|
|
44
|
+
* mountedPath("https://x/idp", "/m/code/send") -> "/idp/m/code/send"
|
|
45
|
+
* mountedPath("https://x", "/m/code/send") -> "/m/code/send"
|
|
46
|
+
*/
|
|
47
|
+
export declare function mountedPath(issuerUrl: string, path: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Where a method's callback lives, in the two forms the framework needs.
|
|
50
|
+
*
|
|
51
|
+
* The distinction matters under a path-mounted deployment and is the
|
|
52
|
+
* reason these are derived together rather than one from the other:
|
|
53
|
+
* `url` is public (registered with upstream providers, advertised in SAML
|
|
54
|
+
* metadata) and carries the mount prefix, while `path` is what the
|
|
55
|
+
* inbound request actually looks like after the proxy has stripped that
|
|
56
|
+
* prefix, and so must not.
|
|
57
|
+
*/
|
|
58
|
+
export type CallbackTarget = {
|
|
59
|
+
/** Public, fully-qualified callback URL. Carries the mount prefix. */
|
|
60
|
+
url: string;
|
|
61
|
+
/** Host the callback is expected to arrive on. */
|
|
62
|
+
host: string;
|
|
63
|
+
/**
|
|
64
|
+
* Expected pathname of the inbound request — this service's own route,
|
|
65
|
+
* *without* the mount prefix, because the proxy has already stripped it.
|
|
66
|
+
* Persisted on `FlowRecord.callbackPath` and matched in `domain/callback.ts`.
|
|
67
|
+
*/
|
|
68
|
+
path: string;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* The single derivation point for a method's callback URL.
|
|
72
|
+
*
|
|
73
|
+
* `callbackHost` is the optional per-tenant override from
|
|
74
|
+
* `IdPOptions.callbackHostFor`. **The issuer's mount prefix applies even
|
|
75
|
+
* when that override is in effect.** `callbackHostFor` exists to partition
|
|
76
|
+
* callbacks across hostnames so a tenant is recoverable from the `Host`
|
|
77
|
+
* header before the state envelope is verified (tenant-recovery mechanism
|
|
78
|
+
* #2) — it varies the authority of the *same* deployment, not the
|
|
79
|
+
* deployment itself. Those hosts are served by this service behind the
|
|
80
|
+
* same proxy, so they share its mount. A deployment needing partitioned
|
|
81
|
+
* hosts mounted differently from the issuer is describing two mounts,
|
|
82
|
+
* which one `issuerUrl` cannot express and a second option must not be
|
|
83
|
+
* introduced to paper over.
|
|
84
|
+
*/
|
|
85
|
+
export declare function callbackTarget(input: {
|
|
86
|
+
issuerUrl: string;
|
|
87
|
+
methodId: string;
|
|
88
|
+
callbackHost?: string | undefined;
|
|
89
|
+
}): CallbackTarget;
|
|
90
|
+
//# sourceMappingURL=mount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../../src/domain/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASnD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAA;IACX,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC,GAAG,cAAc,CASjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method-route.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/method-route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"method-route.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/method-route.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGvD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,OAClC,WAAW,KAAG,OAAO,CAAC,QAAQ,CAAC,CA0JjD"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -38,6 +38,22 @@ export type { TokenStore } from "./ports/token-store";
|
|
|
38
38
|
* ARCHITECTURE.md "Reuse detection scope").
|
|
39
39
|
*/
|
|
40
40
|
export { revokeAllForSubject } from "./domain/revoke";
|
|
41
|
+
/**
|
|
42
|
+
* Build a path-absolute URL for one of the library's own routes, carrying
|
|
43
|
+
* the mount prefix from `issuerUrl`.
|
|
44
|
+
*
|
|
45
|
+
* Custom methods that render their own URLs — a form `action`, say — must
|
|
46
|
+
* use this rather than a path-absolute literal, or the URL will 404 under
|
|
47
|
+
* a deployment mounted behind a proxy at a path prefix. Root-mounted
|
|
48
|
+
* issuers yield the literal unchanged.
|
|
49
|
+
*
|
|
50
|
+
* mountedPath(ctx.issuerUrl, `/m/${id}/send`)
|
|
51
|
+
* // "https://x" -> "/m/mycode/send"
|
|
52
|
+
* // "https://x/idp" -> "/idp/m/mycode/send"
|
|
53
|
+
*
|
|
54
|
+
* See INTEGRATION.md § 8.
|
|
55
|
+
*/
|
|
56
|
+
export { mountedPath, mountPath } from "./domain/mount";
|
|
41
57
|
export { passwordMethod } from "./methods/password";
|
|
42
58
|
export type { PasswordMethodOptions, PasswordProperties, PasswordUser, PasswordUserStore, PasswordState, } from "./methods/password";
|
|
43
59
|
export { codeMethod } from "./methods/code";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAErD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,YAAY,EACV,YAAY,EACZ,wBAAwB,EACxB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,GACZ,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,SAAS,GACV,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EACV,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAE9B,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,eAAe,CAAA;AAEtB,YAAY,EACV,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAA;AAExB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,GAAG,EACH,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,YAAY,EACZ,eAAe,GAChB,MAAM,aAAa,CAAA;AAEpB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAEjE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,YAAY,EACV,aAAa,EACb,QAAQ,EACR,UAAU,EACV,UAAU,GACX,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../src/methods/code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,OAAO,KAAK,EAEV,iBAAiB,EAGlB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../../src/methods/code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,OAAO,KAAK,EAEV,iBAAiB,EAGlB,MAAM,iBAAiB,CAAA;AAIxB,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE;QAChB,WAAW,EAAE,MAAM,CAAA;QACnB,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,MAAM,CAAA;CAC5B,CAAA;AAED;;;;GAIG;AACH,QAAA,MAAM,YAAY;IAChB,6BAA6B;;IAE7B,qEAAqE;;IAErE,uBAAuB;;IAEvB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAA;AACF,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAS9C,wBAAgB,UAAU,CACxB,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,CAgD1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2-generic.d.ts","sourceRoot":"","sources":["../../../src/methods/oauth2-generic.ts"],"names":[],"mappings":"AA8BA;;;;;;GAMG;AACH,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"oauth2-generic.d.ts","sourceRoot":"","sources":["../../../src/methods/oauth2-generic.ts"],"names":[],"mappings":"AA8BA;;;;;;GAMG;AACH,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAI5C,OAAO,KAAK,EAAE,UAAU,EAA+B,MAAM,iBAAiB,CAAA;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,wFAAwF;QACxF,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,4DAA4D;IAC5D,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,4FAA4F;IAC5F,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,6EAA6E;AAC7E,MAAM,MAAM,WAAW,GAAG;IACxB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAA;IACV,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,UAAU,CAAA;IAEjB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAEhB,qBAAqB;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IACpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAA;KAC9B,KAAK,MAAM,CAAA;CACb,CAAA;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,CA6BpD"}
|