@owlmeans/auth-common 0.1.18-rc.10 → 0.1.18-rc.12
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 +11 -11
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/auth-common/SKILL.md +1 -1
- package/build/consts.d.ts.map +1 -1
- package/build/entity.d.ts.map +1 -1
- package/build/entrypoints.d.ts +3 -0
- package/build/entrypoints.d.ts.map +1 -0
- package/build/{modules.js → entrypoints.js} +7 -7
- package/build/entrypoints.js.map +1 -0
- package/build/guards/basic-ed25519/service.d.ts.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/middleware.d.ts.map +1 -1
- package/build/middleware.js +12 -11
- package/build/middleware.js.map +1 -1
- package/build/utils/header.d.ts.map +1 -1
- package/build/utils/header.js.map +1 -1
- package/build/utils/trusted.d.ts.map +1 -1
- package/build/utils/trusted.js +2 -1
- package/build/utils/trusted.js.map +1 -1
- package/package.json +11 -11
- package/src/{modules.ts → entrypoints.ts} +6 -6
- package/src/index.ts +1 -1
- package/src/middleware.ts +12 -11
- package/src/utils/trusted.ts +3 -2
- package/tests/context.ts +1 -2
- package/tests/dispatcher.spec.ts +9 -9
- package/build/modules.d.ts +0 -3
- package/build/modules.d.ts.map +0 -1
- package/build/modules.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# @owlmeans/auth-common
|
|
2
2
|
|
|
3
|
-
Predefined authentication
|
|
3
|
+
Predefined authentication entrypoints, guards, and constants shared between server and client packages.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
- Exports standard auth
|
|
7
|
+
- Exports standard auth entrypoint definitions (login, init, rely, dispatcher) ready to register in any app
|
|
8
8
|
- Provides `DEFAULT_GUARD` and `GUARD_ED25519` constants for protecting routes
|
|
9
9
|
- Implements the Basic ED25519 signature guard service for cryptographic request authentication
|
|
10
10
|
- Headers: `BED255_NONCE_HEADER`, `BED255_TIME_HEADER` for auth challenge/response
|
|
@@ -17,30 +17,30 @@ bun add @owlmeans/auth-common
|
|
|
17
17
|
|
|
18
18
|
## Usage
|
|
19
19
|
|
|
20
|
-
Register the built-in auth
|
|
20
|
+
Register the built-in auth entrypoints and protect a route:
|
|
21
21
|
|
|
22
22
|
```typescript
|
|
23
|
-
import {
|
|
23
|
+
import { entrypoints } from '@owlmeans/auth-common'
|
|
24
24
|
import { GUARD_ED25519, DEFAULT_GUARD } from '@owlmeans/auth-common'
|
|
25
25
|
|
|
26
|
-
// Add auth
|
|
27
|
-
await main(context, [...
|
|
26
|
+
// Add auth entrypoints to your app (includes /authentication, /login, /dispatcher routes)
|
|
27
|
+
await main(context, [...entrypoints, ...appEntrypoints])
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Protect a route with the ED25519 signature guard (re-exported via `@owlmeans/server-app`):
|
|
31
31
|
|
|
32
32
|
```typescript
|
|
33
33
|
import { GUARD_ED25519 } from '@owlmeans/auth-common'
|
|
34
|
-
import {
|
|
34
|
+
import { entrypoint, guard } from '@owlmeans/server-app'
|
|
35
35
|
|
|
36
|
-
const
|
|
36
|
+
const adminEntrypoint = entrypoint(route('admin', '/api/admin'), guard(GUARD_ED25519))
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
## API
|
|
40
40
|
|
|
41
|
-
### `
|
|
41
|
+
### `entrypoints`
|
|
42
42
|
|
|
43
|
-
Array of pre-built `
|
|
43
|
+
Array of pre-built `CommonEntrypoint` instances covering the standard auth flow:
|
|
44
44
|
- `AUTHEN` — backend `/authentication` base route
|
|
45
45
|
- `AUTHEN_INIT` — POST `/authentication/init` (allowance request)
|
|
46
46
|
- `AUTHEN_AUTHEN` — POST `/authentication/authenticate` (credential submission)
|
|
@@ -68,7 +68,7 @@ BED255_CASHE_RESOURCE // resource alias for nonce cache
|
|
|
68
68
|
- `DEFAULT_GUARD` protects manager routes after bearer authentication is installed by `@owlmeans/server-auth`.
|
|
69
69
|
- Product authorization composes a custom gate inside `guard(DEFAULT_GUARD, gate(VIABLE_AUTH_GATE, [...]))` rather than using `OIDC_GATE` for Google login flows.
|
|
70
70
|
- `GUARD_ED25519` remains the service-to-service guard for internal/publisher/payment/auth-service calls.
|
|
71
|
-
- The browser-side alias from `@owlmeans/client-auth` must match the default guard name so shared
|
|
71
|
+
- The browser-side alias from `@owlmeans/client-auth` must match the default guard name so shared entrypoint declarations elevate consistently.
|
|
72
72
|
|
|
73
73
|
## Related Packages
|
|
74
74
|
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/auth-common",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-09-
|
|
4
|
+
"version": "0.1.18-rc.12",
|
|
5
|
+
"generatedAt": "2026-09-01T17:39:40.761Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
package/build/consts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,cAAc,CAAA;AAE1C,eAAO,MAAM,iBAAiB,gBAAgB,CAAA;AAE9C,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,eAAe,CAAA;AAE1C,eAAO,MAAM,YAAY,SAAS,CAAA;AAElC,eAAO,MAAM,aAAa,SAAe,CAAA;AAEzC,eAAO,MAAM,YAAY,uBAAuB,CAAA;AAEhD,eAAO,MAAM,OAAO,iBAAiB,CAAA;AAErC,+FAA+F;AAC/F,eAAO,MAAM,eAAe,oBAAoB,CAAA;AAEhD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,QAA2C,CAAA;AAE3E,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,cAAc,CAAA;AAE1C,eAAO,MAAM,iBAAiB,gBAAgB,CAAA;AAE9C,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,eAAe,CAAA;AAE1C,eAAO,MAAM,YAAY,SAAS,CAAA;AAElC,eAAO,MAAM,aAAa,SAAe,CAAA;AAEzC,eAAO,MAAM,YAAY,uBAAuB,CAAA;AAEhD,eAAO,MAAM,OAAO,iBAAiB,CAAA;AAErC,+FAA+F;AAC/F,eAAO,MAAM,eAAe,oBAAoB,CAAA;AAEhD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,QAA2C,CAAA;AAE3E,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;CAkBnB,CAAA"}
|
package/build/entity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,GAAI,KAAK,eAAe,KAAG,MAAM,GAAG,SAClB,CAAA;AAE1C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,eAAe,KAAG,MAOvD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,eAAe,KAAG,cAMpD,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,GACvB,SAAS,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,eAAe,KACnD,OAAO,CAAC,cAAc,GAAG,SAAS,CAiBpC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,WAAW,mDAkCvB,CAAA;AAED,eAAO,MAAM,kBAAkB,mDAW9B,CAAA"}
|
|
@@ -4,7 +4,7 @@ import { body, filter, entrypoint, query } from '@owlmeans/entrypoint';
|
|
|
4
4
|
import { route, RouteMethod, frontend, backend, socket } from '@owlmeans/route';
|
|
5
5
|
import { DISPATCHER_PATH, SURROGATE_PATH, WEB_API, authApi } from './consts.js';
|
|
6
6
|
import { SurrogateQuerySchema } from './schemas.js';
|
|
7
|
-
export const
|
|
7
|
+
export const entrypoints = [
|
|
8
8
|
entrypoint(route(AUTHEN, '/authentication', backend())),
|
|
9
9
|
entrypoint(route(AUTHEN_INIT, '/init', backend(AUTHEN, RouteMethod.POST)), filter(body(AllowanceRequestSchema))),
|
|
10
10
|
entrypoint(route(AUTHEN_AUTHEN, '/authenticate', backend(AUTHEN, RouteMethod.POST)), filter(body(AuthCredentialsSchema))),
|
|
@@ -18,7 +18,7 @@ export const modules = [
|
|
|
18
18
|
// This is a helper route that is useb by service providres to process authentication provisioning via redirect.
|
|
19
19
|
// Also it can be default starting point to be redirected to an external identity provider.
|
|
20
20
|
entrypoint(route(DISPATCHER, DISPATCHER_PATH, frontend({ service: DISPATCHER })),
|
|
21
|
-
// This
|
|
21
|
+
// This entrypoint is sticky - it means it's always attach to client router.
|
|
22
22
|
// It's required here cause every web app needs dispatcher route to authorize
|
|
23
23
|
// rediected users.
|
|
24
24
|
filter(query(AuthTokenSchema), { sticky: true })),
|
|
@@ -34,14 +34,14 @@ export const modules = [
|
|
|
34
34
|
// a user with OwlMeans server-auth library.
|
|
35
35
|
entrypoint(route(DISPATCHER_AUTHEN, '/authenticate', backend(null, RouteMethod.POST)), filter(body(AuthTokenSchema))),
|
|
36
36
|
];
|
|
37
|
-
export const
|
|
37
|
+
export const managerEntrypoints = [
|
|
38
38
|
entrypoint(route(authApi.profile.base, '/profile', backend({ service: WEB_API }))),
|
|
39
39
|
entrypoint(route(authApi.profile.toEntityId, '/to-entity-id', backend(authApi.profile.base, RouteMethod.POST))),
|
|
40
40
|
entrypoint(route(authApi.auth.base, '/auth', backend({ service: WEB_API }))),
|
|
41
41
|
entrypoint(route(authApi.auth.delegate, '/delegate', backend(authApi.auth.base, RouteMethod.POST))),
|
|
42
42
|
];
|
|
43
|
-
// const
|
|
44
|
-
// export const
|
|
45
|
-
// module => !
|
|
43
|
+
// const skipEntrypoints = [DISPATCHER]
|
|
44
|
+
// export const authBackendEntrypoints = entrypoints.filter(
|
|
45
|
+
// module => !skipEntrypoints.includes(module.alias) && module.route.route.type === AppType.Backend
|
|
46
46
|
// ).map(module => module.alias)
|
|
47
|
-
//# sourceMappingURL=
|
|
47
|
+
//# sourceMappingURL=entrypoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/guards/basic-ed25519/service.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAU7E;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/guards/basic-ed25519/service.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAU7E;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,EAAE,OAAO,wBAAwB,KAAG,iBAqHzF,CAAA"}
|
package/build/index.d.ts
CHANGED
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAE/B,cAAc,cAAc,CAAA;AAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAE/B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA"}
|
package/build/index.js
CHANGED
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAOnD,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAOnD,eAAO,MAAM,cAAc,EAAE,UAuC5B,CAAA"}
|
package/build/middleware.js
CHANGED
|
@@ -6,22 +6,23 @@ export const authMiddleware = {
|
|
|
6
6
|
stage: MiddlewareStage.Loading,
|
|
7
7
|
apply: async (context) => {
|
|
8
8
|
context.entrypoints().forEach(module => {
|
|
9
|
-
if (module.route.route.type === AppType.Backend && module.
|
|
10
|
-
|
|
11
|
-
if (guards.length > 0) {
|
|
9
|
+
if (module.route.route.type === AppType.Backend && module.invoke != null) {
|
|
10
|
+
if (module.getGuards().length > 0) {
|
|
12
11
|
if (module._auth_common_middleware_applied === true) {
|
|
13
12
|
return;
|
|
14
13
|
}
|
|
15
14
|
module._auth_common_middleware_applied = true;
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
// Wrapping `invoke` covers `call` too: `call` reads `invoke` off the entrypoint at the
|
|
16
|
+
// moment it runs, so both verbs carry the authentication header.
|
|
17
|
+
const invoke = module.invoke;
|
|
18
|
+
module.invoke = (async (req) => {
|
|
19
19
|
// @TODO Actually we may use multiple authentication headers with the same name
|
|
20
20
|
// As I learnt its not always the case
|
|
21
|
-
|
|
21
|
+
// Asked per call, not captured: an ancestor may have gained a guard since the
|
|
22
|
+
// middleware wrapped this entrypoint.
|
|
23
|
+
const [token] = (await Promise.all(module.getGuards().map(guard => context.service(guard).authenticated(req)))).filter(token => token != null).reverse();
|
|
22
24
|
if (token != null) {
|
|
23
|
-
|
|
24
|
-
const _req = req ?? provideRequest(module.getAlias(), module.getPath());
|
|
25
|
+
const _req = req ?? provideRequest(module.alias, module.path());
|
|
25
26
|
const headers = (_req.headers ?? {});
|
|
26
27
|
if (headers[AUTH_HEADER] == null) {
|
|
27
28
|
headers[AUTH_HEADER] = token;
|
|
@@ -29,8 +30,8 @@ export const authMiddleware = {
|
|
|
29
30
|
req = _req;
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
|
-
return
|
|
33
|
-
};
|
|
33
|
+
return invoke(req);
|
|
34
|
+
});
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
});
|
package/build/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAG5C,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,IAAI,EAAE,cAAc,CAAC,OAAO;IAC5B,KAAK,EAAE,eAAe,CAAC,OAAO;IAC9B,KAAK,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;QACrB,OAAO,CAAC,WAAW,EAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAG5C,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,IAAI,EAAE,cAAc,CAAC,OAAO;IAC5B,KAAK,EAAE,eAAe,CAAC,OAAO;IAC9B,KAAK,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;QACrB,OAAO,CAAC,WAAW,EAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;gBACzE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,IAAI,MAAM,CAAC,+BAA+B,KAAK,IAAI,EAAE,CAAC;wBACpD,OAAM;oBACR,CAAC;oBACD,MAAM,CAAC,+BAA+B,GAAG,IAAI,CAAA;oBAC7C,uFAAuF;oBACvF,iEAAiE;oBACjE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;oBAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;wBAC3B,+EAA+E;wBAC/E,sCAAsC;wBACtC,8EAA8E;wBAC9E,sCAAsC;wBACtC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CACvD,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAe,KAAK,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CACjE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;wBAC5C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;4BAClB,MAAM,IAAI,GAA6B,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;4BACzF,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAuC,CAAA;4BAC1E,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;gCACjC,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,CAAA;gCAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;gCACtB,GAAG,GAAG,IAAkB,CAAA;4BAC1B,CAAC;wBACH,CAAC;wBAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;oBACpB,CAAC,CAAyB,CAAA;gBAE5B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/utils/header.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/utils/header.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D,eAAO,MAAM,gBAAgB,GAC3B,KAAK,OAAO,CAAC,eAAe,CAAC,EAC7B,OAAM,MAAM,GAAG,IAA0C,EACzD,YAAW,OAAc,KACxB,MAAM,GAAG,IAgBX,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/utils/header.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAG/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAA6B,EAC7B,
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/utils/header.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAG/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAA6B,EAC7B,OAAsB,iBAAiB,CAAC,iBAAiB,EACzD,YAAqB,IAAI,EACV,EAAE;IACjB,IAAI,aAAa,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;IAC9C,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA;IAE/E,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAClD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA;IACnD,CAAC;IAED,OAAO,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa;QAC1C,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trusted.d.ts","sourceRoot":"","sources":["../../src/utils/trusted.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhD,eAAO,MAAM,KAAK,GAAU,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"trusted.d.ts","sourceRoot":"","sources":["../../src/utils/trusted.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhD,eAAO,MAAM,KAAK,GAAU,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,MAAM,EAAE,UAAU,MAAM,EAAE,QAAO,MAAe;;;EAWzI,CAAA"}
|
package/build/utils/trusted.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { fromPubKey, makeKeyPairModel } from '@owlmeans/basic-keys';
|
|
2
2
|
export const trust = async (context, resource, userName, field = 'name') => {
|
|
3
|
-
const
|
|
3
|
+
const where = { [field]: userName };
|
|
4
|
+
const trustedUser = await context.resource(resource).load(where);
|
|
4
5
|
if (trustedUser == null) {
|
|
5
6
|
throw new SyntaxError(`Auth service trusted entity is not provided: ${userName}`);
|
|
6
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trusted.js","sourceRoot":"","sources":["../../src/utils/trusted.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEnE,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAA0C,OAAU,EAAE,QAAgB,EAAE,QAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"trusted.js","sourceRoot":"","sources":["../../src/utils/trusted.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEnE,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAA0C,OAAU,EAAE,QAAgB,EAAE,QAAgB,EAAE,QAAgB,MAAM,EAAE,EAAE;IAC5I,MAAM,KAAK,GAA4B,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;IAC5D,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,QAAQ,CAA0B,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzF,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,WAAW,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAA;IACnF,CAAC;IAED,4EAA4E;IAC5E,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,UAAW,CAAC,CAAA;IAEvH,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;AAC5C,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/auth-common",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.12",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -29,19 +29,19 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@owlmeans/auth": "^0.1.18-rc.
|
|
33
|
-
"@owlmeans/auth-common": "^0.1.18-rc.
|
|
34
|
-
"@owlmeans/basic-ids": "^0.1.18-rc.
|
|
35
|
-
"@owlmeans/basic-keys": "^0.1.18-rc.
|
|
36
|
-
"@owlmeans/client-entrypoint": "^0.1.18-rc.
|
|
37
|
-
"@owlmeans/context": "^0.1.18-rc.
|
|
38
|
-
"@owlmeans/entrypoint": "^0.1.18-rc.
|
|
39
|
-
"@owlmeans/resource": "^0.1.18-rc.
|
|
40
|
-
"@owlmeans/route": "^0.1.18-rc.
|
|
32
|
+
"@owlmeans/auth": "^0.1.18-rc.8",
|
|
33
|
+
"@owlmeans/auth-common": "^0.1.18-rc.12",
|
|
34
|
+
"@owlmeans/basic-ids": "^0.1.18-rc.8",
|
|
35
|
+
"@owlmeans/basic-keys": "^0.1.18-rc.11",
|
|
36
|
+
"@owlmeans/client-entrypoint": "^0.1.18-rc.12",
|
|
37
|
+
"@owlmeans/context": "^0.1.18-rc.7",
|
|
38
|
+
"@owlmeans/entrypoint": "^0.1.18-rc.10",
|
|
39
|
+
"@owlmeans/resource": "^0.1.18-rc.8",
|
|
40
|
+
"@owlmeans/route": "^0.1.18-rc.8"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@owlmeans/dep-config": "workspace:*",
|
|
44
|
-
"@owlmeans/test-auth": "^0.1.18-rc.
|
|
44
|
+
"@owlmeans/test-auth": "^0.1.18-rc.12",
|
|
45
45
|
"@types/bun": "^1.4.0",
|
|
46
46
|
"nodemon": "^3.1.14",
|
|
47
47
|
"typescript": "^7.0.2"
|
|
@@ -10,7 +10,7 @@ import { route, RouteMethod, frontend, backend, socket } from '@owlmeans/route'
|
|
|
10
10
|
import { DISPATCHER_PATH, SURROGATE_PATH, WEB_API, authApi } from './consts.js'
|
|
11
11
|
import { SurrogateQuerySchema } from './schemas.js'
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const entrypoints = [
|
|
14
14
|
entrypoint(route(AUTHEN, '/authentication', backend())),
|
|
15
15
|
entrypoint(route(AUTHEN_INIT, '/init', backend(AUTHEN, RouteMethod.POST)), filter(body(AllowanceRequestSchema))),
|
|
16
16
|
entrypoint(route(AUTHEN_AUTHEN, '/authenticate', backend(AUTHEN, RouteMethod.POST)), filter(body(AuthCredentialsSchema))),
|
|
@@ -25,7 +25,7 @@ export const modules = [
|
|
|
25
25
|
// Also it can be default starting point to be redirected to an external identity provider.
|
|
26
26
|
entrypoint(
|
|
27
27
|
route(DISPATCHER, DISPATCHER_PATH, frontend({ service: DISPATCHER })),
|
|
28
|
-
// This
|
|
28
|
+
// This entrypoint is sticky - it means it's always attach to client router.
|
|
29
29
|
// It's required here cause every web app needs dispatcher route to authorize
|
|
30
30
|
// rediected users.
|
|
31
31
|
filter(query(AuthTokenSchema), { sticky: true })
|
|
@@ -46,7 +46,7 @@ export const modules = [
|
|
|
46
46
|
entrypoint(route(DISPATCHER_AUTHEN, '/authenticate', backend(null, RouteMethod.POST)), filter(body(AuthTokenSchema))),
|
|
47
47
|
]
|
|
48
48
|
|
|
49
|
-
export const
|
|
49
|
+
export const managerEntrypoints = [
|
|
50
50
|
entrypoint(route(authApi.profile.base, '/profile', backend({ service: WEB_API }))),
|
|
51
51
|
entrypoint(route(
|
|
52
52
|
authApi.profile.toEntityId, '/to-entity-id',
|
|
@@ -59,7 +59,7 @@ export const managerModules = [
|
|
|
59
59
|
)),
|
|
60
60
|
]
|
|
61
61
|
|
|
62
|
-
// const
|
|
63
|
-
// export const
|
|
64
|
-
// module => !
|
|
62
|
+
// const skipEntrypoints = [DISPATCHER]
|
|
63
|
+
// export const authBackendEntrypoints = entrypoints.filter(
|
|
64
|
+
// module => !skipEntrypoints.includes(module.alias) && module.route.route.type === AppType.Backend
|
|
65
65
|
// ).map(module => module.alias)
|
package/src/index.ts
CHANGED
package/src/middleware.ts
CHANGED
|
@@ -10,24 +10,25 @@ export const authMiddleware: Middleware = {
|
|
|
10
10
|
stage: MiddlewareStage.Loading,
|
|
11
11
|
apply: async context => {
|
|
12
12
|
context.entrypoints<Perked>().forEach(module => {
|
|
13
|
-
if (module.route.route.type === AppType.Backend && module.
|
|
14
|
-
|
|
15
|
-
if (guards.length > 0) {
|
|
13
|
+
if (module.route.route.type === AppType.Backend && module.invoke != null) {
|
|
14
|
+
if (module.getGuards().length > 0) {
|
|
16
15
|
if (module._auth_common_middleware_applied === true) {
|
|
17
16
|
return
|
|
18
17
|
}
|
|
19
18
|
module._auth_common_middleware_applied = true
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
// Wrapping `invoke` covers `call` too: `call` reads `invoke` off the entrypoint at the
|
|
20
|
+
// moment it runs, so both verbs carry the authentication header.
|
|
21
|
+
const invoke = module.invoke
|
|
22
|
+
module.invoke = (async req => {
|
|
23
23
|
// @TODO Actually we may use multiple authentication headers with the same name
|
|
24
24
|
// As I learnt its not always the case
|
|
25
|
-
|
|
25
|
+
// Asked per call, not captured: an ancestor may have gained a guard since the
|
|
26
|
+
// middleware wrapped this entrypoint.
|
|
27
|
+
const [token] = (await Promise.all(module.getGuards().map(
|
|
26
28
|
guard => context.service<GuardService>(guard).authenticated(req)
|
|
27
29
|
))).filter(token => token != null).reverse()
|
|
28
30
|
if (token != null) {
|
|
29
|
-
|
|
30
|
-
const _req: Partial<AbstractRequest> = req ?? provideRequest(module.getAlias(), module.getPath())
|
|
31
|
+
const _req: Partial<AbstractRequest> = req ?? provideRequest(module.alias, module.path())
|
|
31
32
|
const headers = (_req.headers ?? {}) as Record<string, string | undefined>
|
|
32
33
|
if (headers[AUTH_HEADER] == null) {
|
|
33
34
|
headers[AUTH_HEADER] = token
|
|
@@ -36,8 +37,8 @@ export const authMiddleware: Middleware = {
|
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
return
|
|
40
|
-
}
|
|
40
|
+
return invoke(req)
|
|
41
|
+
}) as typeof module.invoke
|
|
41
42
|
|
|
42
43
|
}
|
|
43
44
|
}
|
package/src/utils/trusted.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
import type { Context, Config } from './types.js'
|
|
3
3
|
import type { TrustedRecord } from '../types.js'
|
|
4
|
-
import type { Resource } from '@owlmeans/resource'
|
|
4
|
+
import type { Criteria, Resource } from '@owlmeans/resource'
|
|
5
5
|
import { fromPubKey, makeKeyPairModel } from '@owlmeans/basic-keys'
|
|
6
6
|
|
|
7
7
|
export const trust = async <C extends Config, T extends Context<C>>(context: T, resource: string, userName: string, field: string = 'name') => {
|
|
8
|
-
const
|
|
8
|
+
const where: Criteria<TrustedRecord> = { [field]: userName }
|
|
9
|
+
const trustedUser = await context.resource<Resource<TrustedRecord>>(resource).load(where)
|
|
9
10
|
if (trustedUser == null) {
|
|
10
11
|
throw new SyntaxError(`Auth service trusted entity is not provided: ${userName}`)
|
|
11
12
|
}
|
package/tests/context.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AppType,
|
|
1
|
+
import { AppType, makeBasicContext } from '@owlmeans/context'
|
|
2
2
|
import type { BasicConfig, BasicContext } from '@owlmeans/context'
|
|
3
3
|
import { makeMemoryTrustedResource, makeFixtureKeyPair } from '@owlmeans/test-auth'
|
|
4
4
|
import type { TrustedRecord } from '@owlmeans/auth-common'
|
|
@@ -38,7 +38,6 @@ export const makeTrustFixture = (
|
|
|
38
38
|
const ctx = makeBasicContext<BasicConfig>({
|
|
39
39
|
ready: false,
|
|
40
40
|
service: 'auth-common-tests',
|
|
41
|
-
layer: Layer.Service,
|
|
42
41
|
type: AppType.Backend,
|
|
43
42
|
})
|
|
44
43
|
|
package/tests/dispatcher.spec.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test'
|
|
2
|
-
import {
|
|
2
|
+
import { entrypoints } from '@owlmeans/auth-common'
|
|
3
3
|
import { DISPATCHER, DISPATCHER_AUTHEN } from '@owlmeans/auth'
|
|
4
4
|
import { DISPATCHER_PATH } from '../src/consts.js'
|
|
5
5
|
|
|
6
|
-
// The DISPATCHER
|
|
7
|
-
//
|
|
6
|
+
// The DISPATCHER entrypoint intentionally declares service: DISPATCHER so that
|
|
7
|
+
// url() produces an absolute URL (pointing to the auth service).
|
|
8
8
|
// The fix for the React Router 404 ("/https:/vib.owl.flat/dispatcher") lives
|
|
9
9
|
// in @owlmeans/client's navigator.navigate() — when the URL is absolute it
|
|
10
10
|
// does a browser redirect (globalThis.location.href) instead of React Router navigate().
|
|
11
11
|
|
|
12
|
-
describe('@owlmeans/auth-common — DISPATCHER
|
|
13
|
-
const dispatcher =
|
|
12
|
+
describe('@owlmeans/auth-common — DISPATCHER entrypoint declaration', () => {
|
|
13
|
+
const dispatcher = entrypoints.find(m => m.route.route.alias === DISPATCHER)
|
|
14
14
|
|
|
15
|
-
test('DISPATCHER
|
|
15
|
+
test('DISPATCHER entrypoint is present in the entrypoints array', () => {
|
|
16
16
|
expect(dispatcher).toBeDefined()
|
|
17
17
|
})
|
|
18
18
|
|
|
@@ -26,12 +26,12 @@ describe('@owlmeans/auth-common — DISPATCHER module declaration', () => {
|
|
|
26
26
|
expect(dispatcher?.route.route.path).toBe(DISPATCHER_PATH)
|
|
27
27
|
})
|
|
28
28
|
|
|
29
|
-
test('DISPATCHER
|
|
29
|
+
test('DISPATCHER entrypoint is sticky (always registered in every app router)', () => {
|
|
30
30
|
expect(dispatcher?.sticky).toBe(true)
|
|
31
31
|
})
|
|
32
32
|
|
|
33
|
-
test('DISPATCHER_AUTHEN backend
|
|
34
|
-
const dispatcherAuthen =
|
|
33
|
+
test('DISPATCHER_AUTHEN backend entrypoint is distinct', () => {
|
|
34
|
+
const dispatcherAuthen = entrypoints.find(m => m.route.route.alias === DISPATCHER_AUTHEN)
|
|
35
35
|
expect(dispatcherAuthen).toBeDefined()
|
|
36
36
|
expect(dispatcherAuthen?.sticky).toBeFalsy()
|
|
37
37
|
})
|
package/build/modules.d.ts
DELETED
package/build/modules.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,OAAO,mDAkCnB,CAAA;AAED,eAAO,MAAM,cAAc,mDAW1B,CAAA"}
|
package/build/modules.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}
|