@rudderjs/passport 1.1.0 → 1.1.2
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/README.md +96 -15
- package/boost/guidelines.md +190 -0
- package/dist/grants/authorization-code.d.ts.map +1 -1
- package/dist/grants/authorization-code.js +4 -17
- package/dist/grants/authorization-code.js.map +1 -1
- package/dist/grants/client-credentials.d.ts.map +1 -1
- package/dist/grants/client-credentials.js +4 -17
- package/dist/grants/client-credentials.js.map +1 -1
- package/dist/grants/device-code.d.ts.map +1 -1
- package/dist/grants/device-code.js +2 -1
- package/dist/grants/device-code.js.map +1 -1
- package/dist/grants/parse-scopes.d.ts +15 -0
- package/dist/grants/parse-scopes.d.ts.map +1 -0
- package/dist/grants/parse-scopes.js +17 -0
- package/dist/grants/parse-scopes.js.map +1 -0
- package/dist/grants/refresh-token.d.ts.map +1 -1
- package/dist/grants/refresh-token.js +5 -18
- package/dist/grants/refresh-token.js.map +1 -1
- package/dist/grants/verify-client.d.ts +29 -0
- package/dist/grants/verify-client.d.ts.map +1 -0
- package/dist/grants/verify-client.js +43 -0
- package/dist/grants/verify-client.js.map +1 -0
- package/dist/middleware/bearer.d.ts.map +1 -1
- package/dist/middleware/bearer.js +98 -103
- package/dist/middleware/bearer.js.map +1 -1
- package/dist/models/AccessToken.d.ts +3 -3
- package/dist/models/AuthCode.d.ts +3 -3
- package/dist/models/DeviceCode.d.ts +3 -3
- package/dist/models/RefreshToken.d.ts +3 -3
- package/dist/models/helpers.d.ts +27 -9
- package/dist/models/helpers.d.ts.map +1 -1
- package/dist/models/helpers.js +12 -6
- package/dist/models/helpers.js.map +1 -1
- package/dist/personal-access-tokens.d.ts.map +1 -1
- package/dist/personal-access-tokens.js.map +1 -1
- package/dist/routes/authorize.d.ts +17 -0
- package/dist/routes/authorize.d.ts.map +1 -0
- package/dist/routes/authorize.js +107 -0
- package/dist/routes/authorize.js.map +1 -0
- package/dist/routes/device.d.ts +23 -0
- package/dist/routes/device.d.ts.map +1 -0
- package/dist/routes/device.js +69 -0
- package/dist/routes/device.js.map +1 -0
- package/dist/routes/helpers.d.ts +64 -0
- package/dist/routes/helpers.d.ts.map +1 -0
- package/dist/routes/helpers.js +154 -0
- package/dist/routes/helpers.js.map +1 -0
- package/dist/routes/revoke.d.ts +16 -0
- package/dist/routes/revoke.d.ts.map +1 -0
- package/dist/routes/revoke.js +33 -0
- package/dist/routes/revoke.js.map +1 -0
- package/dist/routes/scopes.d.ts +9 -0
- package/dist/routes/scopes.d.ts.map +1 -0
- package/dist/routes/scopes.js +13 -0
- package/dist/routes/scopes.js.map +1 -0
- package/dist/routes/token.d.ts +24 -0
- package/dist/routes/token.d.ts.map +1 -0
- package/dist/routes/token.js +121 -0
- package/dist/routes/token.js.map +1 -0
- package/dist/routes/types.d.ts +132 -0
- package/dist/routes/types.d.ts.map +1 -0
- package/dist/routes/types.js +2 -0
- package/dist/routes/types.js.map +1 -0
- package/dist/routes.d.ts +2 -120
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +16 -411
- package/dist/routes.js.map +1 -1
- package/package.json +7 -6
package/dist/routes.js
CHANGED
|
@@ -1,143 +1,10 @@
|
|
|
1
|
-
import { config, report } from '@rudderjs/core';
|
|
2
1
|
import { Passport } from './Passport.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* subsequent POST/DELETE bodies are attacker-controlled and must be
|
|
10
|
-
* re-checked — otherwise the response leaks an authorization code (POST) or
|
|
11
|
-
* an open redirect (DELETE) to a host the client never registered.
|
|
12
|
-
* Throws `OAuthError` so the surrounding try/catch returns the correct
|
|
13
|
-
* status + payload.
|
|
14
|
-
*/
|
|
15
|
-
async function validateClientRedirect(clientId, redirectUri) {
|
|
16
|
-
if (typeof clientId !== 'string' || !clientId) {
|
|
17
|
-
throw new OAuthError('invalid_request', 'client_id is required.');
|
|
18
|
-
}
|
|
19
|
-
if (typeof redirectUri !== 'string' || !redirectUri) {
|
|
20
|
-
throw new OAuthError('invalid_request', 'redirect_uri is required.');
|
|
21
|
-
}
|
|
22
|
-
const ClientCls = await Passport.clientModel();
|
|
23
|
-
const client = await ClientCls.where('id', clientId).first();
|
|
24
|
-
if (!client || client.revoked) {
|
|
25
|
-
throw new OAuthError('invalid_client', 'Client not found.');
|
|
26
|
-
}
|
|
27
|
-
if (!clientHelpers.hasRedirectUri(client, redirectUri)) {
|
|
28
|
-
throw new OAuthError('invalid_request', 'Invalid redirect_uri.');
|
|
29
|
-
}
|
|
30
|
-
return client;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Resolve client credentials at the token endpoint per RFC 6749 §2.3.
|
|
34
|
-
*
|
|
35
|
-
* Confidential clients can authenticate via:
|
|
36
|
-
* 1. `Authorization: Basic base64(client_id:client_secret)` (§2.3.1, MUST support)
|
|
37
|
-
* 2. `client_id` + `client_secret` in the request body (alternative)
|
|
38
|
-
*
|
|
39
|
-
* §2.3 forbids using both at once — clients MUST NOT pass credentials in
|
|
40
|
-
* the body when the header is present. We reject that combination with
|
|
41
|
-
* `invalid_request` so SDK bugs surface loudly instead of silently
|
|
42
|
-
* accepting one set and ignoring the other.
|
|
43
|
-
*
|
|
44
|
-
* Public clients send only `client_id` in the body; both Basic creds and
|
|
45
|
-
* a body `client_id` mismatch is also rejected.
|
|
46
|
-
*/
|
|
47
|
-
function resolveClientCredentials(req, body) {
|
|
48
|
-
const authHeader = req.headers?.['authorization'];
|
|
49
|
-
const bodyClientId = body['client_id'];
|
|
50
|
-
const bodyClientSecret = body['client_secret'];
|
|
51
|
-
if (typeof authHeader === 'string' && authHeader.length >= 6 && authHeader.slice(0, 6).toLowerCase() === 'basic ') {
|
|
52
|
-
const encoded = authHeader.slice(6).trim();
|
|
53
|
-
let decoded;
|
|
54
|
-
try {
|
|
55
|
-
decoded = Buffer.from(encoded, 'base64').toString('utf8');
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
throw new OAuthError('invalid_request', 'Malformed HTTP Basic credentials.', 401);
|
|
59
|
-
}
|
|
60
|
-
const sep = decoded.indexOf(':');
|
|
61
|
-
if (sep === -1) {
|
|
62
|
-
throw new OAuthError('invalid_request', 'Malformed HTTP Basic credentials.', 401);
|
|
63
|
-
}
|
|
64
|
-
// RFC 6749 §2.3.1 — client_id and client_secret in Basic are
|
|
65
|
-
// application/x-www-form-urlencoded-encoded before base64. SDKs in
|
|
66
|
-
// the wild often skip the percent-encoding step; we accept the raw
|
|
67
|
-
// form because requiring percent-decoding here would reject every
|
|
68
|
-
// ASCII-only credential pair (which is the overwhelming majority).
|
|
69
|
-
const headerClientId = decoded.slice(0, sep);
|
|
70
|
-
const headerClientSecret = decoded.slice(sep + 1);
|
|
71
|
-
if (!headerClientId) {
|
|
72
|
-
throw new OAuthError('invalid_request', 'Malformed HTTP Basic credentials.', 401);
|
|
73
|
-
}
|
|
74
|
-
if (bodyClientSecret !== undefined) {
|
|
75
|
-
throw new OAuthError('invalid_request', 'client_secret must not be sent in both Authorization header and request body.', 401);
|
|
76
|
-
}
|
|
77
|
-
if (bodyClientId !== undefined && bodyClientId !== headerClientId) {
|
|
78
|
-
throw new OAuthError('invalid_request', 'client_id in Authorization header does not match request body.', 401);
|
|
79
|
-
}
|
|
80
|
-
return { clientId: headerClientId, clientSecret: headerClientSecret };
|
|
81
|
-
}
|
|
82
|
-
if (typeof bodyClientId !== 'string' || !bodyClientId) {
|
|
83
|
-
throw new OAuthError('invalid_request', 'client_id is required.');
|
|
84
|
-
}
|
|
85
|
-
return bodyClientSecret !== undefined
|
|
86
|
-
? { clientId: bodyClientId, clientSecret: bodyClientSecret }
|
|
87
|
-
: { clientId: bodyClientId };
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Resolve the device-flow verification URI in this priority order:
|
|
91
|
-
*
|
|
92
|
-
* 1. `opts.verificationUri` — explicit caller override.
|
|
93
|
-
* 2. `config('app.url')` — `${appUrl}${prefix}/device`. Trailing slash on
|
|
94
|
-
* the configured value is tolerated.
|
|
95
|
-
* 3. `req.protocol` + `req.hostname` — last-resort fallback for dev / when
|
|
96
|
-
* neither knob is configured. The `Host` header is attacker-controlled
|
|
97
|
-
* behind a reverse proxy without trust-proxy, so we emit a one-shot
|
|
98
|
-
* warning the first time we land here. Documented in CLAUDE.md.
|
|
99
|
-
*/
|
|
100
|
-
let _hostHeaderFallbackWarned = false;
|
|
101
|
-
function resolveVerificationUri(opts, req, prefix) {
|
|
102
|
-
if (opts.verificationUri)
|
|
103
|
-
return opts.verificationUri;
|
|
104
|
-
const appUrl = config('app.url', undefined);
|
|
105
|
-
if (typeof appUrl === 'string' && appUrl) {
|
|
106
|
-
return `${appUrl.replace(/\/$/, '')}${prefix}/device`;
|
|
107
|
-
}
|
|
108
|
-
if (!_hostHeaderFallbackWarned) {
|
|
109
|
-
_hostHeaderFallbackWarned = true;
|
|
110
|
-
console.warn('[@rudderjs/passport] Falling back to req.protocol/req.hostname for the device-flow verification URI. ' +
|
|
111
|
-
'The Host header is attacker-controlled behind a reverse proxy without trust-proxy. ' +
|
|
112
|
-
'Set APP_URL (config(\'app.url\')) or pass an explicit `verificationUri` to registerPassportRoutes() to silence this.');
|
|
113
|
-
}
|
|
114
|
-
return `${req.protocol}://${req.hostname}${prefix}/device`;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Render an error response from a `/oauth/authorize` handler. RFC 6749
|
|
118
|
-
* §4.1.2.1 requires that `state` is echoed back on errors (so the client
|
|
119
|
-
* can reconcile the response against its own session) — independent of
|
|
120
|
-
* whether the response shape is a redirect or JSON, and independent of
|
|
121
|
-
* the underlying error code.
|
|
122
|
-
*
|
|
123
|
-
* We additionally call `report()` on non-`OAuthError` throws so the root
|
|
124
|
-
* cause surfaces through the configured exception reporter instead of
|
|
125
|
-
* being silently collapsed under `server_error`.
|
|
126
|
-
*/
|
|
127
|
-
function authErrorResponse(res, err, state) {
|
|
128
|
-
const stateEcho = typeof state === 'string' && state ? { state } : {};
|
|
129
|
-
if (err instanceof OAuthError) {
|
|
130
|
-
res.status(err.statusCode).json({ ...err.toJSON(), ...stateEcho });
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
report(err);
|
|
134
|
-
res.status(500).json({ error: 'server_error', error_description: 'Internal server error.', ...stateEcho });
|
|
135
|
-
}
|
|
136
|
-
function asMiddlewareArray(input) {
|
|
137
|
-
if (!input)
|
|
138
|
-
return [];
|
|
139
|
-
return Array.isArray(input) ? input : [input];
|
|
140
|
-
}
|
|
2
|
+
import { asMiddlewareArray } from './routes/helpers.js';
|
|
3
|
+
import { registerAuthorizeRoutes } from './routes/authorize.js';
|
|
4
|
+
import { registerTokenRoute } from './routes/token.js';
|
|
5
|
+
import { registerRevokeRoute } from './routes/revoke.js';
|
|
6
|
+
import { registerScopesRoute } from './routes/scopes.js';
|
|
7
|
+
import { registerDeviceRoutes } from './routes/device.js';
|
|
141
8
|
/**
|
|
142
9
|
* Register all Passport OAuth routes on the given router.
|
|
143
10
|
*
|
|
@@ -160,278 +27,16 @@ export function registerPassportRoutes(router, opts = {}) {
|
|
|
160
27
|
const tokenMiddleware = asMiddlewareArray(opts.tokenMiddleware);
|
|
161
28
|
const authorizeMiddleware = asMiddlewareArray(opts.authorizeMiddleware);
|
|
162
29
|
const deviceMiddleware = asMiddlewareArray(opts.deviceMiddleware);
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
router
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
scope: query['scope'] ?? '',
|
|
174
|
-
state: query['state'],
|
|
175
|
-
codeChallenge: query['code_challenge'],
|
|
176
|
-
codeChallengeMethod: query['code_challenge_method'],
|
|
177
|
-
});
|
|
178
|
-
const ctx = {
|
|
179
|
-
client: {
|
|
180
|
-
id: validated.client.id,
|
|
181
|
-
name: validated.client.name,
|
|
182
|
-
},
|
|
183
|
-
scopes: validated.scopes,
|
|
184
|
-
redirectUri: validated.redirectUri,
|
|
185
|
-
...(validated.state !== undefined ? { state: validated.state } : {}),
|
|
186
|
-
...(validated.codeChallenge !== undefined ? { codeChallenge: validated.codeChallenge } : {}),
|
|
187
|
-
...(validated.codeChallengeMethod !== undefined ? { codeChallengeMethod: validated.codeChallengeMethod } : {}),
|
|
188
|
-
request: req,
|
|
189
|
-
};
|
|
190
|
-
const viewFn = Passport.authorizationViewFn();
|
|
191
|
-
if (viewFn) {
|
|
192
|
-
return await viewFn(ctx);
|
|
193
|
-
}
|
|
194
|
-
// Default: JSON response — the app's consent screen reads this
|
|
195
|
-
res.json({
|
|
196
|
-
client: ctx.client,
|
|
197
|
-
scopes: ctx.scopes,
|
|
198
|
-
state: ctx.state,
|
|
199
|
-
redirectUri: ctx.redirectUri,
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
catch (e) {
|
|
203
|
-
authErrorResponse(res, e, query['state']);
|
|
204
|
-
}
|
|
205
|
-
}, authorizeMiddleware);
|
|
206
|
-
// POST /oauth/authorize — user approves
|
|
207
|
-
router.post(`${prefix}/authorize`, async (req, res) => {
|
|
208
|
-
const body = req.body ?? {};
|
|
209
|
-
try {
|
|
210
|
-
const userId = req.raw?.__rjs_user?.id ?? req.user?.id;
|
|
211
|
-
if (!userId) {
|
|
212
|
-
// Echo state on the unauthenticated branch too — the consent UI
|
|
213
|
-
// round-trips the same payload regardless of the auth gate result.
|
|
214
|
-
const stateEcho = typeof body['state'] === 'string' && body['state'] ? { state: body['state'] } : {};
|
|
215
|
-
res.status(401).json({ error: 'unauthenticated', error_description: 'User must be signed in.', ...stateEcho });
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
await validateClientRedirect(body['client_id'], body['redirect_uri']);
|
|
219
|
-
const code = await issueAuthCode({
|
|
220
|
-
userId,
|
|
221
|
-
clientId: body['client_id'],
|
|
222
|
-
scopes: body['scopes'] ?? [],
|
|
223
|
-
redirectUri: body['redirect_uri'],
|
|
224
|
-
codeChallenge: body['code_challenge'],
|
|
225
|
-
codeChallengeMethod: body['code_challenge_method'],
|
|
226
|
-
});
|
|
227
|
-
const redirectUri = new URL(body['redirect_uri']);
|
|
228
|
-
redirectUri.searchParams.set('code', code);
|
|
229
|
-
if (body['state'])
|
|
230
|
-
redirectUri.searchParams.set('state', body['state']);
|
|
231
|
-
res.json({ redirect_uri: redirectUri.toString() });
|
|
232
|
-
}
|
|
233
|
-
catch (e) {
|
|
234
|
-
authErrorResponse(res, e, body['state']);
|
|
235
|
-
}
|
|
236
|
-
}, authorizeMiddleware);
|
|
237
|
-
// DELETE /oauth/authorize — user denies
|
|
238
|
-
router.delete(`${prefix}/authorize`, async (req, res) => {
|
|
239
|
-
const body = req.body ?? {};
|
|
240
|
-
try {
|
|
241
|
-
await validateClientRedirect(body['client_id'], body['redirect_uri']);
|
|
242
|
-
const redirectUri = new URL(body['redirect_uri']);
|
|
243
|
-
redirectUri.searchParams.set('error', 'access_denied');
|
|
244
|
-
redirectUri.searchParams.set('error_description', 'The user denied the request.');
|
|
245
|
-
if (body['state'])
|
|
246
|
-
redirectUri.searchParams.set('state', body['state']);
|
|
247
|
-
res.json({ redirect_uri: redirectUri.toString() });
|
|
248
|
-
}
|
|
249
|
-
catch (e) {
|
|
250
|
-
authErrorResponse(res, e, body['state']);
|
|
251
|
-
}
|
|
252
|
-
}, authorizeMiddleware);
|
|
253
|
-
}
|
|
254
|
-
// ── POST /oauth/token ────────────────────────────────────
|
|
255
|
-
if (!skip.has('token')) {
|
|
256
|
-
// `tokenMiddleware` runs ahead of the handler — primary intended use is
|
|
257
|
-
// a per-route rate limiter so client_secret guessing can't churn through
|
|
258
|
-
// the registry without backoff. See PassportRouteOptions.tokenMiddleware
|
|
259
|
-
// jsdoc for the recommended config.
|
|
260
|
-
router.post(`${prefix}/token`, async (req, res) => {
|
|
261
|
-
try {
|
|
262
|
-
const body = req.body ?? {};
|
|
263
|
-
const grantType = body['grant_type'];
|
|
264
|
-
// RFC 6749 §2.3.1 — confidential clients MUST be able to
|
|
265
|
-
// authenticate via HTTP Basic; body params are an alternative.
|
|
266
|
-
// §2.3 forbids using both at once. Resolve credentials once for
|
|
267
|
-
// all grants instead of repeating the parsing in each branch.
|
|
268
|
-
const credentials = resolveClientCredentials(req, body);
|
|
269
|
-
let result;
|
|
270
|
-
switch (grantType) {
|
|
271
|
-
case 'authorization_code':
|
|
272
|
-
result = await exchangeAuthCode({
|
|
273
|
-
grantType,
|
|
274
|
-
code: body['code'],
|
|
275
|
-
...credentials,
|
|
276
|
-
redirectUri: body['redirect_uri'],
|
|
277
|
-
codeVerifier: body['code_verifier'],
|
|
278
|
-
});
|
|
279
|
-
break;
|
|
280
|
-
case 'client_credentials':
|
|
281
|
-
// ClientCredentialsRequest requires clientSecret (the grant
|
|
282
|
-
// is confidential-only by spec). Surface the missing-secret
|
|
283
|
-
// case as invalid_request rather than letting it surface
|
|
284
|
-
// downstream as "Invalid client secret."
|
|
285
|
-
if (credentials.clientSecret === undefined) {
|
|
286
|
-
throw new OAuthError('invalid_request', 'client_secret is required for the client_credentials grant.', 401);
|
|
287
|
-
}
|
|
288
|
-
result = await clientCredentialsGrant({
|
|
289
|
-
grantType,
|
|
290
|
-
clientId: credentials.clientId,
|
|
291
|
-
clientSecret: credentials.clientSecret,
|
|
292
|
-
scope: body['scope'],
|
|
293
|
-
});
|
|
294
|
-
break;
|
|
295
|
-
case 'refresh_token':
|
|
296
|
-
result = await refreshTokenGrant({
|
|
297
|
-
grantType,
|
|
298
|
-
refreshToken: body['refresh_token'],
|
|
299
|
-
...credentials,
|
|
300
|
-
scope: body['scope'],
|
|
301
|
-
});
|
|
302
|
-
break;
|
|
303
|
-
case 'urn:ietf:params:oauth:grant-type:device_code': {
|
|
304
|
-
const pollResult = await pollDeviceCode({
|
|
305
|
-
grantType,
|
|
306
|
-
deviceCode: body['device_code'],
|
|
307
|
-
clientId: credentials.clientId,
|
|
308
|
-
});
|
|
309
|
-
if (pollResult.status === 'authorized') {
|
|
310
|
-
result = pollResult.tokens;
|
|
311
|
-
}
|
|
312
|
-
else {
|
|
313
|
-
// RFC 8628 §3.5 — device-flow polling errors (including
|
|
314
|
-
// slow_down) are §5.2-shaped errors and MUST return HTTP
|
|
315
|
-
// 400. 429 is for transport-level rate-limiting, not the
|
|
316
|
-
// OAuth `slow_down` signal.
|
|
317
|
-
//
|
|
318
|
-
// On slow_down, forward the escalated `interval` so a
|
|
319
|
-
// well-behaved client uses the new value instead of having
|
|
320
|
-
// to add 5 itself. Other variants don't need it.
|
|
321
|
-
if (pollResult.status === 'slow_down') {
|
|
322
|
-
res.status(400).json({ error: 'slow_down', interval: pollResult.interval });
|
|
323
|
-
}
|
|
324
|
-
else {
|
|
325
|
-
res.status(400).json({ error: pollResult.status });
|
|
326
|
-
}
|
|
327
|
-
return;
|
|
328
|
-
}
|
|
329
|
-
break;
|
|
330
|
-
}
|
|
331
|
-
default:
|
|
332
|
-
res.status(400).json({
|
|
333
|
-
error: 'unsupported_grant_type',
|
|
334
|
-
error_description: `Grant type "${grantType}" is not supported.`,
|
|
335
|
-
});
|
|
336
|
-
return;
|
|
337
|
-
}
|
|
338
|
-
res.json(result);
|
|
339
|
-
}
|
|
340
|
-
catch (e) {
|
|
341
|
-
if (e instanceof OAuthError) {
|
|
342
|
-
// RFC 6749 §5.2 — client-auth failures at the token endpoint
|
|
343
|
-
// are signalled with WWW-Authenticate alongside the 401 status.
|
|
344
|
-
if (e.statusCode === 401 && typeof res.header === 'function') {
|
|
345
|
-
res.header('WWW-Authenticate', 'Basic realm="oauth"');
|
|
346
|
-
}
|
|
347
|
-
res.status(e.statusCode).json(e.toJSON());
|
|
348
|
-
}
|
|
349
|
-
else {
|
|
350
|
-
report(e);
|
|
351
|
-
res.status(500).json({ error: 'server_error', error_description: 'Internal server error.' });
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}, tokenMiddleware);
|
|
355
|
-
}
|
|
356
|
-
// ── DELETE /oauth/tokens/:id — revoke a specific token ──
|
|
357
|
-
// Requires a valid bearer token AND ownership of the token being revoked.
|
|
358
|
-
// Token ids appear in JWT `jti` claims (semi-public), so without an
|
|
359
|
-
// ownership check anyone with a single captured JWT could DoS arbitrary
|
|
360
|
-
// users. Returns 404 (not 403) on ownership mismatch to avoid leaking
|
|
361
|
-
// whether a given id exists.
|
|
362
|
-
if (!skip.has('revoke')) {
|
|
363
|
-
router.delete(`${prefix}/tokens/:id`, async (req, res) => {
|
|
364
|
-
const tokenId = req.params?.['id'] ?? '';
|
|
365
|
-
const AccessTokenCls = await Passport.tokenModel();
|
|
366
|
-
const token = await AccessTokenCls.where('id', tokenId).first();
|
|
367
|
-
const requesterId = req.raw?.__rjs_user?.id ?? req.user?.id;
|
|
368
|
-
if (!token || !requesterId || token.userId !== requesterId) {
|
|
369
|
-
res.status(404).json({ error: 'not_found', error_description: 'Token not found.' });
|
|
370
|
-
return;
|
|
371
|
-
}
|
|
372
|
-
// QueryBuilder.updateAll() bypasses the mass-assignment filter;
|
|
373
|
-
// `revoked` is no longer in `AccessToken.fillable`.
|
|
374
|
-
await AccessTokenCls.where('id', token.id)
|
|
375
|
-
.updateAll({ revoked: true });
|
|
376
|
-
res.status(204).send();
|
|
377
|
-
}, [RequireBearer(), ...authorizeMiddleware]);
|
|
378
|
-
}
|
|
379
|
-
// ── GET /oauth/scopes ────────────────────────────────────
|
|
380
|
-
if (!skip.has('scopes')) {
|
|
381
|
-
router.get(`${prefix}/scopes`, async (_req, res) => {
|
|
382
|
-
res.json(Passport.scopes());
|
|
383
|
-
});
|
|
384
|
-
}
|
|
385
|
-
// ── /oauth/device ────────────────────────────────────────
|
|
386
|
-
if (!skip.has('device')) {
|
|
387
|
-
// POST /oauth/device/code — request device authorization
|
|
388
|
-
// `deviceMiddleware` runs ahead of the handler — primary intended use is
|
|
389
|
-
// a per-route rate limiter tighter than the api-group default. See
|
|
390
|
-
// PassportRouteOptions.deviceMiddleware jsdoc.
|
|
391
|
-
router.post(`${prefix}/device/code`, async (req, res) => {
|
|
392
|
-
try {
|
|
393
|
-
const body = req.body ?? {};
|
|
394
|
-
const verificationUri = resolveVerificationUri(opts, req, prefix);
|
|
395
|
-
const result = await requestDeviceCode({
|
|
396
|
-
clientId: body['client_id'],
|
|
397
|
-
scope: body['scope'],
|
|
398
|
-
verificationUri,
|
|
399
|
-
});
|
|
400
|
-
res.json(result);
|
|
401
|
-
}
|
|
402
|
-
catch (e) {
|
|
403
|
-
if (e instanceof OAuthError) {
|
|
404
|
-
res.status(e.statusCode).json(e.toJSON());
|
|
405
|
-
}
|
|
406
|
-
else {
|
|
407
|
-
report(e);
|
|
408
|
-
res.status(500).json({ error: 'server_error', error_description: 'Internal server error.' });
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
}, deviceMiddleware);
|
|
412
|
-
// POST /oauth/device/approve — user approves/denies device
|
|
413
|
-
router.post(`${prefix}/device/approve`, async (req, res) => {
|
|
414
|
-
try {
|
|
415
|
-
const body = req.body ?? {};
|
|
416
|
-
const userId = req.raw?.__rjs_user?.id ?? req.user?.id;
|
|
417
|
-
if (!userId) {
|
|
418
|
-
res.status(401).json({ error: 'unauthenticated', error_description: 'User must be signed in.' });
|
|
419
|
-
return;
|
|
420
|
-
}
|
|
421
|
-
await approveDeviceCode(body['user_code'], userId, body['approved'] !== false);
|
|
422
|
-
res.json({ status: 'ok' });
|
|
423
|
-
}
|
|
424
|
-
catch (e) {
|
|
425
|
-
if (e instanceof OAuthError) {
|
|
426
|
-
res.status(e.statusCode).json(e.toJSON());
|
|
427
|
-
}
|
|
428
|
-
else {
|
|
429
|
-
report(e);
|
|
430
|
-
res.status(500).json({ error: 'server_error', error_description: 'Internal server error.' });
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
}, deviceMiddleware);
|
|
434
|
-
}
|
|
30
|
+
if (!skip.has('authorize'))
|
|
31
|
+
registerAuthorizeRoutes(router, prefix, authorizeMiddleware);
|
|
32
|
+
if (!skip.has('token'))
|
|
33
|
+
registerTokenRoute(router, prefix, tokenMiddleware);
|
|
34
|
+
if (!skip.has('revoke'))
|
|
35
|
+
registerRevokeRoute(router, prefix, authorizeMiddleware);
|
|
36
|
+
if (!skip.has('scopes'))
|
|
37
|
+
registerScopesRoute(router, prefix);
|
|
38
|
+
if (!skip.has('device'))
|
|
39
|
+
registerDeviceRoutes(router, opts, prefix, deviceMiddleware);
|
|
435
40
|
}
|
|
436
41
|
/**
|
|
437
42
|
* Register the **web-group** Passport routes — `GET/POST/DELETE
|
package/dist/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAU,mBAAmB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAS,oBAAoB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAS,oBAAoB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAQ,oBAAoB,CAAA;AAI3D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,OAA6B,EAAE;IACpF,IAAI,QAAQ,CAAC,aAAa,EAAE;QAAE,OAAM;IAEpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAA;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IACvC,MAAM,eAAe,GAAO,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACnE,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IACvE,MAAM,gBAAgB,GAAM,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAEpE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAA;IACxF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QAAM,kBAAkB,CAAK,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;IACnF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAK,mBAAmB,CAAI,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAA;IACvF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAK,mBAAmB,CAAI,MAAM,EAAE,MAAM,CAAC,CAAA;IAClE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAK,oBAAoB,CAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAC5F,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAc,EAAE,OAA6B,EAAE;IACvF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAyB,CAAC,CAAA;IACrG,sBAAsB,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AACzE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAc,EAAE,OAA6B,EAAE;IACvF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAyB,CAAC,CAAA;IAC/F,sBAAsB,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AACzE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rudderjs/passport",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"rudderjs": {
|
|
5
5
|
"provider": "PassportProvider",
|
|
6
6
|
"stage": "infrastructure",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"type": "module",
|
|
19
19
|
"files": [
|
|
20
20
|
"dist",
|
|
21
|
-
"schema"
|
|
21
|
+
"schema",
|
|
22
|
+
"boost"
|
|
22
23
|
],
|
|
23
24
|
"main": "./dist/index.js",
|
|
24
25
|
"types": "./dist/index.d.ts",
|
|
@@ -33,15 +34,15 @@
|
|
|
33
34
|
}
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
|
-
"@rudderjs/core": "^1.1.
|
|
37
|
-
"@rudderjs/contracts": "^1.
|
|
38
|
-
"@rudderjs/orm": "^1.
|
|
37
|
+
"@rudderjs/core": "^1.1.3",
|
|
38
|
+
"@rudderjs/contracts": "^1.6.0",
|
|
39
|
+
"@rudderjs/orm": "^1.9.1"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
42
|
"@types/node": "^20.0.0",
|
|
42
43
|
"typescript": "^5.4.0",
|
|
43
44
|
"tsx": "^4.0.0",
|
|
44
|
-
"@rudderjs/console": "^1.0.
|
|
45
|
+
"@rudderjs/console": "^1.0.1"
|
|
45
46
|
},
|
|
46
47
|
"author": "Suleiman Shahbari",
|
|
47
48
|
"scripts": {
|