@atlasauth/nextjs 0.9.0 → 0.10.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 +14 -0
- package/README.md +1 -1
- package/dist/mount.d.ts +22 -4
- package/dist/mount.js +59 -13
- package/dist/mount.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.10.0 — 2026-11-04
|
|
6
|
+
|
|
7
|
+
### Security
|
|
8
|
+
|
|
9
|
+
- `createMountHandler` no longer trusts a browser-supplied client IP. It used the leftmost `X-Forwarded-For` entry (or `X-Real-IP`) as `X-Atlas-Client-IP`, which Atlas uses for rate limits, lockouts, risk checks and audit logs, so a visitor could pick their own IP. It now takes the `X-Forwarded-For` entry `trustedProxyHops` places from the right (default `1`: the one your nearest proxy appended), never reads `X-Real-IP`, and drops values that are not IP addresses.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `createMountHandler({ clientIp?, trustedProxyHops? })`: `clientIp(request)` supplies the client IP yourself (takes precedence); `trustedProxyHops` sets how many proxies append to `X-Forwarded-For` (`0` forwards no client IP).
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- `createMountHandler` without `ATLAS_UPSTREAM` or `ATLAS_PROXY_SECRET` answers 503 (`text/plain`) and logs the missing variable once, instead of throwing (a bare 500).
|
|
18
|
+
|
|
5
19
|
## 0.9.0 — 2026-11-03
|
|
6
20
|
|
|
7
21
|
### Added
|
package/README.md
CHANGED
|
@@ -139,7 +139,7 @@ Set `ATLAS_UPSTREAM` (your instance's Frontend API host, from the domain's `inst
|
|
|
139
139
|
|
|
140
140
|
Use a base path without a leading underscore, such as `/atlas`. The App Router treats folders starting with `_` as private and never routes them, so the default `/__atlas` doesn't work in Next.js.
|
|
141
141
|
|
|
142
|
-
The handler forwards the method, path, query and body, sets `X-Atlas-Forwarded-Host
|
|
142
|
+
The handler forwards the method, path, query and body, drops any incoming `X-Atlas-*`, `X-Forwarded-*`, `Forwarded` and `X-Real-IP` headers, sets `X-Atlas-Forwarded-Host` and `X-Atlas-Proxy-Secret` itself, and returns every `Set-Cookie` and redirect unchanged. The client IP (`X-Atlas-Client-IP` and `X-Forwarded-For`) is the incoming `X-Forwarded-For` entry `trustedProxyHops` places from the right (default `1`: the entry your nearest proxy appended; entries further left are browser-controlled and ignored; `0` forwards none), or whatever `clientIp(request)` returns when you pass it; values that are not IP addresses are dropped. Without `ATLAS_UPSTREAM` or `ATLAS_PROXY_SECRET` the mount answers 503 and logs the missing variable once. Both handlers are also exported from `@atlasauth/nextjs`.
|
|
143
143
|
|
|
144
144
|
## Routing rules
|
|
145
145
|
|
package/dist/mount.d.ts
CHANGED
|
@@ -28,6 +28,19 @@ export interface AtlasMountOptions {
|
|
|
28
28
|
verifyToken?: string;
|
|
29
29
|
/** The mount's `base_path`, as registered with Atlas. Default `/atlas`. */
|
|
30
30
|
basePath?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Derive the client IP forwarded to Atlas as `X-Atlas-Client-IP` yourself
|
|
33
|
+
* (for example from your platform's verified request IP). Takes precedence
|
|
34
|
+
* over `trustedProxyHops`. A value that is not an IP address is dropped.
|
|
35
|
+
*/
|
|
36
|
+
clientIp?: (request: Request) => string | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* How many proxies in front of this app append to `X-Forwarded-For`. The
|
|
39
|
+
* client IP is the entry that many places from the right (default 1: the
|
|
40
|
+
* rightmost, appended by the nearest proxy). Entries further left are
|
|
41
|
+
* browser-controlled and never used. `0` forwards no client IP.
|
|
42
|
+
*/
|
|
43
|
+
trustedProxyHops?: number;
|
|
31
44
|
fetchImpl?: typeof fetch;
|
|
32
45
|
}
|
|
33
46
|
type Handler = (request: Request) => Promise<Response>;
|
|
@@ -43,10 +56,15 @@ export interface AtlasMountHandlers {
|
|
|
43
56
|
/**
|
|
44
57
|
* App Router handlers that forward the mount to Atlas: method, path (base
|
|
45
58
|
* included: Atlas reads the prefix from it), query and streamed body unchanged;
|
|
46
|
-
* hop-by-hop headers dropped
|
|
47
|
-
* `
|
|
48
|
-
*
|
|
49
|
-
*
|
|
59
|
+
* hop-by-hop headers dropped. Every incoming `X-Atlas-*`, `X-Forwarded-*`,
|
|
60
|
+
* `Forwarded` and `X-Real-IP` header is dropped, then set as: `X-Atlas-Forwarded-Host`
|
|
61
|
+
* from `Host`; `X-Atlas-Proxy-Secret` from config; `X-Atlas-Client-IP` and
|
|
62
|
+
* `X-Forwarded-For` from `options.clientIp`, else the incoming `X-Forwarded-For`
|
|
63
|
+
* entry `trustedProxyHops` (default 1) from the right, omitted when absent or not
|
|
64
|
+
* an IP; `X-Forwarded-Proto` from the last incoming `X-Forwarded-Proto` entry (http or https only),
|
|
65
|
+
* else the request URL's scheme. The response keeps its status, headers and EVERY
|
|
66
|
+
* `Set-Cookie`; redirects are returned, not followed. Without an upstream or
|
|
67
|
+
* proxy secret it answers 503 (logged once).
|
|
50
68
|
*/
|
|
51
69
|
export declare function createMountHandler(options?: AtlasMountOptions): AtlasMountHandlers;
|
|
52
70
|
type VerifyContext = {
|
package/dist/mount.js
CHANGED
|
@@ -37,10 +37,41 @@ function setCookies(headers) {
|
|
|
37
37
|
const single = headers.get('set-cookie');
|
|
38
38
|
return single ? [single] : [];
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
/** An IPv4/IPv6 address with any port or brackets stripped, or undefined when `raw` is not one. */
|
|
41
|
+
function normaliseIp(raw) {
|
|
42
|
+
let v = raw?.trim() ?? '';
|
|
43
|
+
const bracketed = /^\[([^\]]+)\](?::\d+)?$/.exec(v);
|
|
44
|
+
if (bracketed)
|
|
45
|
+
v = bracketed[1];
|
|
46
|
+
else if (/^[\d.]+:\d+$/.test(v))
|
|
47
|
+
v = v.slice(0, v.lastIndexOf(':'));
|
|
48
|
+
if (/^\d{1,3}(\.\d{1,3}){3}$/.test(v))
|
|
49
|
+
return v.split('.').every((o) => Number(o) <= 255) ? v : undefined;
|
|
50
|
+
if (!v.includes(':') || !/^[0-9a-fA-F:.]+$/.test(v))
|
|
51
|
+
return undefined;
|
|
52
|
+
try {
|
|
53
|
+
new URL(`http://[${v}]/`); // the WHATWG URL parser validates IPv6 on every runtime
|
|
54
|
+
return v;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
43
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The client IP: `options.clientIp(request)` when given, else the
|
|
62
|
+
* `X-Forwarded-For` entry `trustedProxyHops` from the right. The browser can
|
|
63
|
+
* set any `X-Forwarded-For` / `X-Real-IP`, so leftmost entries are never trusted.
|
|
64
|
+
*/
|
|
65
|
+
function clientIp(request, options) {
|
|
66
|
+
if (options.clientIp)
|
|
67
|
+
return normaliseIp(options.clientIp(request));
|
|
68
|
+
const hops = options.trustedProxyHops ?? 1;
|
|
69
|
+
if (hops <= 0)
|
|
70
|
+
return undefined;
|
|
71
|
+
const entries = request.headers.get('x-forwarded-for')?.split(',') ?? [];
|
|
72
|
+
return entries.length < hops ? undefined : normaliseIp(entries[entries.length - hops]);
|
|
73
|
+
}
|
|
74
|
+
let loggedMisconfig = false;
|
|
44
75
|
/** `/atlas`, normalised: one leading slash, no trailing slash. */
|
|
45
76
|
function normaliseBase(raw) {
|
|
46
77
|
const base = `/${raw.trim().replace(/^\/+|\/+$/g, '')}`;
|
|
@@ -51,20 +82,33 @@ function normaliseBase(raw) {
|
|
|
51
82
|
/**
|
|
52
83
|
* App Router handlers that forward the mount to Atlas: method, path (base
|
|
53
84
|
* included: Atlas reads the prefix from it), query and streamed body unchanged;
|
|
54
|
-
* hop-by-hop headers dropped
|
|
55
|
-
* `
|
|
56
|
-
*
|
|
57
|
-
*
|
|
85
|
+
* hop-by-hop headers dropped. Every incoming `X-Atlas-*`, `X-Forwarded-*`,
|
|
86
|
+
* `Forwarded` and `X-Real-IP` header is dropped, then set as: `X-Atlas-Forwarded-Host`
|
|
87
|
+
* from `Host`; `X-Atlas-Proxy-Secret` from config; `X-Atlas-Client-IP` and
|
|
88
|
+
* `X-Forwarded-For` from `options.clientIp`, else the incoming `X-Forwarded-For`
|
|
89
|
+
* entry `trustedProxyHops` (default 1) from the right, omitted when absent or not
|
|
90
|
+
* an IP; `X-Forwarded-Proto` from the last incoming `X-Forwarded-Proto` entry (http or https only),
|
|
91
|
+
* else the request URL's scheme. The response keeps its status, headers and EVERY
|
|
92
|
+
* `Set-Cookie`; redirects are returned, not followed. Without an upstream or
|
|
93
|
+
* proxy secret it answers 503 (logged once).
|
|
58
94
|
*/
|
|
59
95
|
function createMountHandler(options = {}) {
|
|
60
96
|
const handle = async (request) => {
|
|
61
97
|
const env = readEnv();
|
|
62
98
|
const upstream = options.upstream ?? env.ATLAS_UPSTREAM;
|
|
63
99
|
const proxySecret = options.proxySecret ?? env.ATLAS_PROXY_SECRET;
|
|
64
|
-
if (!upstream)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
100
|
+
if (!upstream || !proxySecret) {
|
|
101
|
+
if (!loggedMisconfig) {
|
|
102
|
+
loggedMisconfig = true;
|
|
103
|
+
console.error(!upstream
|
|
104
|
+
? '@atlasauth/nextjs createMountHandler: set ATLAS_UPSTREAM (your Frontend API host).'
|
|
105
|
+
: '@atlasauth/nextjs createMountHandler: set ATLAS_PROXY_SECRET (POST /v1/instance/proxy_secret).');
|
|
106
|
+
}
|
|
107
|
+
return new Response('Atlas is not configured', {
|
|
108
|
+
status: 503,
|
|
109
|
+
headers: { 'content-type': 'text/plain; charset=utf-8', 'cache-control': 'no-store' },
|
|
110
|
+
});
|
|
111
|
+
}
|
|
68
112
|
const base = normaliseBase(options.basePath ?? '/atlas');
|
|
69
113
|
const url = new URL(request.url);
|
|
70
114
|
if (url.pathname !== base && !url.pathname.startsWith(`${base}/`)) {
|
|
@@ -79,12 +123,14 @@ function createMountHandler(options = {}) {
|
|
|
79
123
|
});
|
|
80
124
|
headers.set('x-atlas-forwarded-host', request.headers.get('host') ?? url.host);
|
|
81
125
|
headers.set('x-atlas-proxy-secret', proxySecret);
|
|
82
|
-
const ip = clientIp(request
|
|
126
|
+
const ip = clientIp(request, options);
|
|
83
127
|
if (ip) {
|
|
84
128
|
headers.set('x-atlas-client-ip', ip);
|
|
85
129
|
headers.set('x-forwarded-for', ip);
|
|
86
130
|
}
|
|
87
|
-
|
|
131
|
+
// Rightmost entry (the nearest proxy's), http or https only: a browser-sent value cannot downgrade the scheme.
|
|
132
|
+
const proto = request.headers.get('x-forwarded-proto')?.split(',').pop()?.trim().toLowerCase();
|
|
133
|
+
headers.set('x-forwarded-proto', proto === 'http' || proto === 'https' ? proto : url.protocol.replace(':', ''));
|
|
88
134
|
const method = request.method.toUpperCase();
|
|
89
135
|
const hasBody = method !== 'GET' && method !== 'HEAD' && request.body !== null;
|
|
90
136
|
const res = await (options.fetchImpl ?? fetch)(target, {
|
package/dist/mount.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlasauth/nextjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"./package.json": "./package.json"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@atlasauth/backend": "0.
|
|
22
|
+
"@atlasauth/backend": "0.37.0"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"next": ">=13.4"
|