@owlmeans/web-oidc-rp 0.1.16-rc.0 → 0.1.17
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 +3 -4
- package/agent-meta/manifest.json +4 -11
- package/agent-meta/skills/web-oidc-rp/SKILL.md +10 -1
- package/build/auth/plugins/google-client.js.map +1 -1
- package/build/auth/plugins/helpers.d.ts.map +1 -1
- package/build/components/dispatcher.d.ts.map +1 -1
- package/build/components/dispatcher.js +14 -1
- package/build/components/dispatcher.js.map +1 -1
- package/build/guard.d.ts.map +1 -1
- package/build/service.d.ts.map +1 -1
- package/build/service.js.map +1 -1
- package/package.json +19 -19
- package/src/components/dispatcher.tsx +16 -1
- package/agent-meta/instructions/web-oidc-rp.instructions.md +0 -48
package/README.md
CHANGED
|
@@ -79,10 +79,9 @@ Login and callback React components exported from `./components` (re-exported at
|
|
|
79
79
|
<!-- owlmeans:agent-guidance:start -->
|
|
80
80
|
## Agent guidance
|
|
81
81
|
|
|
82
|
-
This package ships embedded
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
(`.claude/skills/` and `.github/instructions/`):
|
|
82
|
+
This package ships embedded agent skills under `agent-meta/`. After installing your
|
|
83
|
+
`@owlmeans/*` packages, run the OwlMeans agent-skills installer to place them into
|
|
84
|
+
your project's skill store (`.agents/skills/`):
|
|
86
85
|
|
|
87
86
|
```sh
|
|
88
87
|
npx @owlmeans/agent-skills
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schemaVersion":
|
|
2
|
+
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/web-oidc-rp",
|
|
4
|
-
"version": "0.1.
|
|
5
|
-
"generatedAt": "2026-08-
|
|
4
|
+
"version": "0.1.17",
|
|
5
|
+
"generatedAt": "2026-08-15T13:01:19.931Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -10,14 +10,7 @@
|
|
|
10
10
|
"name": "web-oidc-rp",
|
|
11
11
|
"category": "package-specific",
|
|
12
12
|
"file": "skills/web-oidc-rp/SKILL.md",
|
|
13
|
-
"canonicalPath": ".
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"kind": "instruction",
|
|
17
|
-
"name": "web-oidc-rp",
|
|
18
|
-
"category": "package-specific",
|
|
19
|
-
"file": "instructions/web-oidc-rp.instructions.md",
|
|
20
|
-
"canonicalPath": ".github/instructions/web-oidc-rp.instructions.md"
|
|
13
|
+
"canonicalPath": ".agents/skills/web-oidc-rp/SKILL.md"
|
|
21
14
|
}
|
|
22
15
|
]
|
|
23
16
|
}
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/web-oidc-rp
|
|
9
9
|
|
|
10
10
|
**Layer:** Web (React)
|
|
11
|
-
**Install:** `"@owlmeans/web-oidc-rp": "^0.1.
|
|
11
|
+
**Install:** `"@owlmeans/web-oidc-rp": "^0.1.17"` in `dependencies`
|
|
12
12
|
|
|
13
13
|
## Key Exports
|
|
14
14
|
|
|
@@ -43,6 +43,15 @@ import { setupOidcGuard } from '@owlmeans/web-oidc-rp'
|
|
|
43
43
|
setupOidcGuard(modules, undefined, { payload: { simplified: true } })
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
+
## Dispatcher and authorization errors
|
|
47
|
+
|
|
48
|
+
The `Dispatcher` component is the redirect URI: the provider returns **both** outcomes to it — a
|
|
49
|
+
`code` on success and `error` / `error_description` (`OIDC_ERROR_QUERY`, `OIDC_ERROR_DESCRIPTION_QUERY`
|
|
50
|
+
from `@owlmeans/oidc`) on failure. It must check for the error params **before** re-entering the
|
|
51
|
+
flow and render the message instead: starting authorization again would rebuild the request that
|
|
52
|
+
just failed, so the browser bounces between dispatcher and provider forever and the actual reason
|
|
53
|
+
never reaches the user. The same rule holds for the MUI dispatcher in `@owlmeans/mui-oidc-rp`.
|
|
54
|
+
|
|
46
55
|
## Product-Viable Usage Notes
|
|
47
56
|
|
|
48
57
|
- Importing `@owlmeans/web-oidc-rp/auth/plugins` registers both `OIDC_CLIENT_AUTH` and `GOOGLE_CLIENT_AUTH` plugins into the `@owlmeans/client-auth` plugin registry.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-client.js","sourceRoot":"","sources":["../../../src/auth/plugins/google-client.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAE1E,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAEzE,MAAM,CAAC,MAAM,kBAAkB,GAAyB;IACtD,IAAI,EAAE,kBAAkB;IAExB,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACvD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;QAC5B,QAAQ,GAAG,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,CAAA;QAElD,QAAQ,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACtB,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC;gBACtB,KAAK,mBAAmB,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"google-client.js","sourceRoot":"","sources":["../../../src/auth/plugins/google-client.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/auth/plugins/helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/auth/plugins/helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sBAAuB,MAAM,gBAAgB,MAAM,KAAG,MAQlF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,gBACtB,MAAM,QACb,MAAM,aACD,MAAM,KAChB,eAOD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/components/dispatcher.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/components/dispatcher.tsx"],"names":[],"mappings":"AAWA,eAAO,MAAM,UAAU,6FA+DrB,CAAA"}
|
|
@@ -4,6 +4,7 @@ import { useEffect } from 'react';
|
|
|
4
4
|
import { useContext } from '@owlmeans/web-client';
|
|
5
5
|
import { useI18nLib } from '@owlmeans/client-i18n';
|
|
6
6
|
import { AUTH_QUERY } from '@owlmeans/auth';
|
|
7
|
+
import { OIDC_ERROR_DESCRIPTION_QUERY, OIDC_ERROR_QUERY } from '@owlmeans/oidc';
|
|
7
8
|
import { useFlow } from '@owlmeans/web-flow';
|
|
8
9
|
import { DEFAULT_ALIAS } from '../consts.js';
|
|
9
10
|
export const Dispatcher = DispatcherHOC(({ provideToken, navigate }) => {
|
|
@@ -11,10 +12,19 @@ export const Dispatcher = DispatcherHOC(({ provideToken, navigate }) => {
|
|
|
11
12
|
const [query] = context.router().useSearchParams();
|
|
12
13
|
const client = useFlow();
|
|
13
14
|
const t = useI18nLib('auth', 'dispatcher');
|
|
15
|
+
// The provider reports a failed authorization by redirecting BACK here with `error` set. Re-entering
|
|
16
|
+
// the flow at that point sends the browser into the very authorization request that just failed —
|
|
17
|
+
// an endless dispatcher <-> provider redirect loop that also hides the reason. Surface it, stop.
|
|
18
|
+
const error = query.get(OIDC_ERROR_QUERY);
|
|
19
|
+
const errorDescription = query.get(OIDC_ERROR_DESCRIPTION_QUERY);
|
|
14
20
|
useEffect(() => {
|
|
15
21
|
if (client == null) {
|
|
16
22
|
return;
|
|
17
23
|
}
|
|
24
|
+
if (error != null) {
|
|
25
|
+
console.error(`[oidc] authorization failed: ${error}${errorDescription != null ? ` — ${errorDescription}` : ''}`);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
18
28
|
const token = query.get(AUTH_QUERY);
|
|
19
29
|
const params = {};
|
|
20
30
|
query.forEach((value, key) => {
|
|
@@ -49,7 +59,10 @@ export const Dispatcher = DispatcherHOC(({ provideToken, navigate }) => {
|
|
|
49
59
|
}
|
|
50
60
|
});
|
|
51
61
|
}
|
|
52
|
-
}, [client]);
|
|
62
|
+
}, [client, error]);
|
|
63
|
+
if (error != null) {
|
|
64
|
+
return _jsx("div", { children: t('error', { error: errorDescription ?? error }) });
|
|
65
|
+
}
|
|
53
66
|
return query.has(AUTH_QUERY)
|
|
54
67
|
? _jsx("div", { children: t('loading') })
|
|
55
68
|
: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/components/dispatcher.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,eAAe,EAAE,CAAA;IAClD,MAAM,MAAM,GAAG,OAAO,EAAE,CAAA;IAExB,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACnC,MAAM,MAAM,GAA2B,EAAE,CAAA;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC3B,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YACrB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,yEAAyE;YACzE,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAkB,aAAa,CAAC,CAAA;YAC5D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;gBAC5C,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,MAAM,QAAQ,EAAE,CAAA;gBACzB,CAAC;gBACD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,OAAM;gBACR,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAA;gBAC/D,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;oBACxC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAA;oBACjC,OAAM;gBACR,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,CAAA;gBACvD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;oBACvB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;gBACxC,CAAC;qBAAM,CAAC;oBACN,MAAM,QAAQ,EAAE,CAAA;gBAClB,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/components/dispatcher.tsx"],"names":[],"mappings":"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"}
|
package/build/guard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAMtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAI7D,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAMtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAI7D,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,WAC3D,CAAC,SAAS,gBAAgB,MAOpC,CAAA;AAED,eAAO,MAAM,cAAc,YAAa,gBAAgB,EAAE,aAAa,MAAM,GAAG,MAAM,EAAE,WAAW,OAAO,CAAC,iBAAiB,CAAC,SAQ5H,CAAA"}
|
package/build/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,eAAe,EAAmB,MAAM,YAAY,CAAA;AAenF,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,eAAe,EAAmB,MAAM,YAAY,CAAA;AAenF,eAAO,MAAM,mBAAmB,WAAW,MAAM,KAAmB,eA+InE,CAAA"}
|
package/build/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjG,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEvF,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE9D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/web-oidc-rp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
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.
|
|
33
|
-
"@owlmeans/basic-envelope": "^0.1.
|
|
34
|
-
"@owlmeans/client": "^0.1.
|
|
35
|
-
"@owlmeans/client-auth": "^0.1.
|
|
36
|
-
"@owlmeans/client-flow": "^0.1.
|
|
37
|
-
"@owlmeans/client-i18n": "^0.1.
|
|
38
|
-
"@owlmeans/context": "^0.1.
|
|
39
|
-
"@owlmeans/flow": "^0.1.
|
|
40
|
-
"@owlmeans/entrypoint": "^0.1.
|
|
41
|
-
"@owlmeans/oidc": "^0.1.
|
|
42
|
-
"@owlmeans/resource": "^0.1.
|
|
43
|
-
"@owlmeans/web-client": "^0.1.
|
|
44
|
-
"@owlmeans/web-flow": "^0.1.
|
|
32
|
+
"@owlmeans/auth": "^0.1.17",
|
|
33
|
+
"@owlmeans/basic-envelope": "^0.1.17",
|
|
34
|
+
"@owlmeans/client": "^0.1.17",
|
|
35
|
+
"@owlmeans/client-auth": "^0.1.17",
|
|
36
|
+
"@owlmeans/client-flow": "^0.1.17",
|
|
37
|
+
"@owlmeans/client-i18n": "^0.1.17",
|
|
38
|
+
"@owlmeans/context": "^0.1.17",
|
|
39
|
+
"@owlmeans/flow": "^0.1.17",
|
|
40
|
+
"@owlmeans/entrypoint": "^0.1.17",
|
|
41
|
+
"@owlmeans/oidc": "^0.1.17",
|
|
42
|
+
"@owlmeans/resource": "^0.1.17",
|
|
43
|
+
"@owlmeans/web-client": "^0.1.17",
|
|
44
|
+
"@owlmeans/web-flow": "^0.1.17",
|
|
45
45
|
"oidc-client-ts": "3.5.0"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@owlmeans/dep-config": "workspace:*",
|
|
58
|
-
"@owlmeans/test-auth": "^0.1.
|
|
59
|
-
"@owlmeans/test-ui": "^0.1.
|
|
58
|
+
"@owlmeans/test-auth": "^0.1.17",
|
|
59
|
+
"@owlmeans/test-ui": "^0.1.17",
|
|
60
60
|
"@radix-ui/react-progress": "^1.1.7",
|
|
61
61
|
"@tailwindcss/vite": "^4.1.16",
|
|
62
62
|
"@types/bun": "^1.3.14",
|
|
@@ -64,12 +64,12 @@
|
|
|
64
64
|
"@vitejs/plugin-react": "^6.0.3",
|
|
65
65
|
"class-variance-authority": "^0.7.1",
|
|
66
66
|
"clsx": "^2.1.1",
|
|
67
|
-
"lucide-react": "^
|
|
67
|
+
"lucide-react": "^1.31.0",
|
|
68
68
|
"nodemon": "^3.1.14",
|
|
69
|
-
"playwright": "^1.
|
|
69
|
+
"playwright": "^1.61.1",
|
|
70
70
|
"tailwind-merge": "^3.3.1",
|
|
71
71
|
"tailwindcss": "^4.1.16",
|
|
72
|
-
"typescript": "^
|
|
72
|
+
"typescript": "^7.0.2",
|
|
73
73
|
"vite": "^8.1.2"
|
|
74
74
|
},
|
|
75
75
|
"publishConfig": {
|
|
@@ -4,6 +4,7 @@ import { useEffect } from 'react'
|
|
|
4
4
|
import { useContext } from '@owlmeans/web-client'
|
|
5
5
|
import { useI18nLib } from '@owlmeans/client-i18n'
|
|
6
6
|
import { AUTH_QUERY } from '@owlmeans/auth'
|
|
7
|
+
import { OIDC_ERROR_DESCRIPTION_QUERY, OIDC_ERROR_QUERY } from '@owlmeans/oidc'
|
|
7
8
|
import { useFlow } from '@owlmeans/web-flow'
|
|
8
9
|
import { OidcAuthService } from '../types.js'
|
|
9
10
|
import { DEFAULT_ALIAS } from '../consts.js'
|
|
@@ -15,10 +16,20 @@ export const Dispatcher = DispatcherHOC(({ provideToken, navigate }) => {
|
|
|
15
16
|
|
|
16
17
|
const t = useI18nLib('auth', 'dispatcher')
|
|
17
18
|
|
|
19
|
+
// The provider reports a failed authorization by redirecting BACK here with `error` set. Re-entering
|
|
20
|
+
// the flow at that point sends the browser into the very authorization request that just failed —
|
|
21
|
+
// an endless dispatcher <-> provider redirect loop that also hides the reason. Surface it, stop.
|
|
22
|
+
const error = query.get(OIDC_ERROR_QUERY)
|
|
23
|
+
const errorDescription = query.get(OIDC_ERROR_DESCRIPTION_QUERY)
|
|
24
|
+
|
|
18
25
|
useEffect(() => {
|
|
19
26
|
if (client == null) {
|
|
20
27
|
return
|
|
21
28
|
}
|
|
29
|
+
if (error != null) {
|
|
30
|
+
console.error(`[oidc] authorization failed: ${error}${errorDescription != null ? ` — ${errorDescription}` : ''}`)
|
|
31
|
+
return
|
|
32
|
+
}
|
|
22
33
|
const token = query.get(AUTH_QUERY)
|
|
23
34
|
const params: Record<string, string> = {}
|
|
24
35
|
query.forEach((value, key) => {
|
|
@@ -52,7 +63,11 @@ export const Dispatcher = DispatcherHOC(({ provideToken, navigate }) => {
|
|
|
52
63
|
}
|
|
53
64
|
})
|
|
54
65
|
}
|
|
55
|
-
}, [client])
|
|
66
|
+
}, [client, error])
|
|
67
|
+
|
|
68
|
+
if (error != null) {
|
|
69
|
+
return <div>{t('error', { error: errorDescription ?? error })}</div>
|
|
70
|
+
}
|
|
56
71
|
|
|
57
72
|
return query.has(AUTH_QUERY)
|
|
58
73
|
? <div>{t('loading')}</div>
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "How to use @owlmeans/web-oidc-rp — browser OIDC relying party. appendOidcGuard() to wire the guard into a web context; setupOidcGuard() to wire it into module declarations."
|
|
3
|
-
applyTo: "**/context.ts, **/modules.ts, **/*.ts, **/*.tsx"
|
|
4
|
-
---
|
|
5
|
-
<!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
|
|
6
|
-
|
|
7
|
-
# @owlmeans/web-oidc-rp
|
|
8
|
-
|
|
9
|
-
**Layer:** Web (React)
|
|
10
|
-
**Install:** `"@owlmeans/web-oidc-rp": "^0.1.16-rc.0"` in `dependencies`
|
|
11
|
-
|
|
12
|
-
## Key Exports
|
|
13
|
-
|
|
14
|
-
| Export | Description |
|
|
15
|
-
|--------|-------------|
|
|
16
|
-
| `appendOidcGuard<C, T>(context)` | Add OIDC guard to a web context |
|
|
17
|
-
| `setupOidcGuard(modules, options?, payloadOptions?)` | Wire OIDC guard onto modules |
|
|
18
|
-
| `service` | Web OIDC RP service (oidc-client-ts based) |
|
|
19
|
-
| `components` | Login / callback components |
|
|
20
|
-
| Constants | OIDC client aliases |
|
|
21
|
-
|
|
22
|
-
## Subpath Exports
|
|
23
|
-
|
|
24
|
-
- `./auth/plugins`
|
|
25
|
-
|
|
26
|
-
## Usage
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
// context.ts
|
|
30
|
-
import { appendOidcGuard } from '@owlmeans/web-oidc-rp'
|
|
31
|
-
appendOidcGuard<C, T>(context)
|
|
32
|
-
|
|
33
|
-
// modules.ts
|
|
34
|
-
import { setupOidcGuard } from '@owlmeans/web-oidc-rp'
|
|
35
|
-
setupOidcGuard(modules, undefined, { payload: { simplified: true } })
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Product-Viable Usage Notes
|
|
39
|
-
|
|
40
|
-
- Importing `@owlmeans/web-oidc-rp/auth/plugins` registers both `OIDC_CLIENT_AUTH` and `GOOGLE_CLIENT_AUTH` plugins into the `@owlmeans/client-auth` plugin registry.
|
|
41
|
-
- The Google plugin uses `useValue` to manage redirect side effects, persists auth control state before redirect, restores it on return, then submits URL query params as `AuthCredentials`.
|
|
42
|
-
- The browser plugin starts login; the server finalizes provider exchange, links local identity, and returns a normal bearer token.
|
|
43
|
-
- Do not encode product authorization in browser OIDC plugins. Server module gates and local identity profiles remain the authorization source.
|
|
44
|
-
- **URL generation:** The Google plugin uses module-based URL generation via `context.module<Module<string>>(alias).call({ full: true })` to build its `source` (redirect_uri) and post-auth home redirect. Never use raw `window.location.origin` concatenation — use the `HOME` module for the app root and `CAUTHEN_AUTHEN_TYPED` with `{ params: { type } }` for the current auth page URL.
|
|
45
|
-
|
|
46
|
-
## Depends On
|
|
47
|
-
|
|
48
|
-
- `@owlmeans/oidc`, `@owlmeans/web-client`, `@owlmeans/web-panel`, `@owlmeans/client-auth`, `@owlmeans/auth-common`, `oidc-client-ts`, `react`
|