@owlmeans/server-auth 0.1.18-rc.8 → 0.1.18

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.
Files changed (218) hide show
  1. package/README.md +216 -38
  2. package/agent-meta/manifest.json +10 -3
  3. package/agent-meta/skills/server-auth/SKILL.md +161 -22
  4. package/agent-meta/skills/supervisor-auth/SKILL.md +128 -0
  5. package/build/actions/service.d.ts +6 -2
  6. package/build/actions/service.d.ts.map +1 -1
  7. package/build/actions/service.js +5 -4
  8. package/build/actions/service.js.map +1 -1
  9. package/build/actions/types.local.d.ts +6 -0
  10. package/build/actions/types.local.d.ts.map +1 -0
  11. package/build/actions/types.local.js +2 -0
  12. package/build/actions/types.local.js.map +1 -0
  13. package/build/entrypoints.d.ts +5 -0
  14. package/build/entrypoints.d.ts.map +1 -0
  15. package/build/entrypoints.js +9 -0
  16. package/build/entrypoints.js.map +1 -0
  17. package/build/index.d.ts +2 -1
  18. package/build/index.d.ts.map +1 -1
  19. package/build/index.js +2 -1
  20. package/build/index.js.map +1 -1
  21. package/build/manager/actions/authenticate.d.ts +8 -0
  22. package/build/manager/actions/authenticate.d.ts.map +1 -0
  23. package/build/manager/actions/authenticate.js +5 -0
  24. package/build/manager/actions/authenticate.js.map +1 -0
  25. package/build/manager/actions/index.d.ts +3 -1
  26. package/build/manager/actions/index.d.ts.map +1 -1
  27. package/build/manager/actions/index.js +3 -1
  28. package/build/manager/actions/index.js.map +1 -1
  29. package/build/manager/actions/init.d.ts +8 -0
  30. package/build/manager/actions/init.d.ts.map +1 -0
  31. package/build/manager/actions/init.js +5 -0
  32. package/build/manager/actions/init.js.map +1 -0
  33. package/build/manager/actions/rely.d.ts +8 -0
  34. package/build/manager/actions/rely.d.ts.map +1 -0
  35. package/build/manager/actions/rely.js +7 -0
  36. package/build/manager/actions/rely.js.map +1 -0
  37. package/build/manager/consts.local.d.ts +2 -0
  38. package/build/manager/consts.local.d.ts.map +1 -0
  39. package/build/manager/consts.local.js +2 -0
  40. package/build/manager/consts.local.js.map +1 -0
  41. package/build/manager/context.d.ts.map +1 -1
  42. package/build/manager/context.js +0 -1
  43. package/build/manager/context.js.map +1 -1
  44. package/build/manager/entrypoints.d.ts +9 -0
  45. package/build/manager/entrypoints.d.ts.map +1 -0
  46. package/build/manager/entrypoints.js +16 -0
  47. package/build/manager/entrypoints.js.map +1 -0
  48. package/build/manager/exports.d.ts +1 -2
  49. package/build/manager/exports.d.ts.map +1 -1
  50. package/build/manager/exports.js +1 -2
  51. package/build/manager/exports.js.map +1 -1
  52. package/build/manager/index.d.ts +1 -1
  53. package/build/manager/index.d.ts.map +1 -1
  54. package/build/manager/index.js +1 -1
  55. package/build/manager/index.js.map +1 -1
  56. package/build/manager/main.d.ts.map +1 -1
  57. package/build/manager/main.js +2 -2
  58. package/build/manager/main.js.map +1 -1
  59. package/build/manager/model.d.ts.map +1 -1
  60. package/build/manager/model.js +71 -32
  61. package/build/manager/model.js.map +1 -1
  62. package/build/manager/plugins/basic-ed25519.d.ts +1 -1
  63. package/build/manager/plugins/basic-ed25519.d.ts.map +1 -1
  64. package/build/manager/plugins/basic-ed25519.js +6 -6
  65. package/build/manager/plugins/basic-ed25519.js.map +1 -1
  66. package/build/manager/plugins/basic-rely.d.ts +1 -1
  67. package/build/manager/plugins/basic-rely.d.ts.map +1 -1
  68. package/build/manager/plugins/basic-rely.js +11 -8
  69. package/build/manager/plugins/basic-rely.js.map +1 -1
  70. package/build/manager/plugins/consts.d.ts +8 -0
  71. package/build/manager/plugins/consts.d.ts.map +1 -0
  72. package/build/manager/plugins/consts.js +9 -0
  73. package/build/manager/plugins/consts.js.map +1 -0
  74. package/build/manager/plugins/export.d.ts +5 -0
  75. package/build/manager/plugins/export.d.ts.map +1 -1
  76. package/build/manager/plugins/export.js +4 -0
  77. package/build/manager/plugins/export.js.map +1 -1
  78. package/build/manager/plugins/index.d.ts +3 -4
  79. package/build/manager/plugins/index.d.ts.map +1 -1
  80. package/build/manager/plugins/index.js +6 -6
  81. package/build/manager/plugins/index.js.map +1 -1
  82. package/build/manager/plugins/re-captcha/consts.d.ts +7 -0
  83. package/build/manager/plugins/re-captcha/consts.d.ts.map +1 -0
  84. package/build/manager/plugins/re-captcha/consts.js +7 -0
  85. package/build/manager/plugins/re-captcha/consts.js.map +1 -0
  86. package/build/manager/plugins/re-captcha/consts.local.d.ts +7 -0
  87. package/build/manager/plugins/re-captcha/consts.local.d.ts.map +1 -0
  88. package/build/manager/plugins/re-captcha/consts.local.js +9 -0
  89. package/build/manager/plugins/re-captcha/consts.local.js.map +1 -0
  90. package/build/manager/plugins/re-captcha/policy.d.ts +3 -0
  91. package/build/manager/plugins/re-captcha/policy.d.ts.map +1 -0
  92. package/build/manager/plugins/re-captcha/policy.js +44 -0
  93. package/build/manager/plugins/re-captcha/policy.js.map +1 -0
  94. package/build/manager/plugins/re-captcha/types.d.ts +79 -0
  95. package/build/manager/plugins/re-captcha/types.d.ts.map +1 -0
  96. package/build/manager/plugins/re-captcha/types.js +2 -0
  97. package/build/manager/plugins/re-captcha/types.js.map +1 -0
  98. package/build/manager/plugins/re-captcha/verifier.d.ts +12 -0
  99. package/build/manager/plugins/re-captcha/verifier.d.ts.map +1 -0
  100. package/build/manager/plugins/re-captcha/verifier.js +62 -0
  101. package/build/manager/plugins/re-captcha/verifier.js.map +1 -0
  102. package/build/manager/plugins/re-captcha.d.ts +10 -1
  103. package/build/manager/plugins/re-captcha.d.ts.map +1 -1
  104. package/build/manager/plugins/re-captcha.js +50 -37
  105. package/build/manager/plugins/re-captcha.js.map +1 -1
  106. package/build/manager/plugins/supervisor.d.ts +1 -2
  107. package/build/manager/plugins/supervisor.d.ts.map +1 -1
  108. package/build/manager/plugins/supervisor.js +6 -6
  109. package/build/manager/plugins/supervisor.js.map +1 -1
  110. package/build/manager/plugins/types.d.ts +22 -14
  111. package/build/manager/plugins/types.d.ts.map +1 -1
  112. package/build/manager/plugins/utils.d.ts +5 -4
  113. package/build/manager/plugins/utils.d.ts.map +1 -1
  114. package/build/manager/plugins/utils.js +20 -15
  115. package/build/manager/plugins/utils.js.map +1 -1
  116. package/build/manager/rely/flow.d.ts.map +1 -1
  117. package/build/manager/rely/flow.js +13 -11
  118. package/build/manager/rely/flow.js.map +1 -1
  119. package/build/manager/rely.d.ts.map +1 -1
  120. package/build/manager/rely.js.map +1 -1
  121. package/build/manager/supervisor.d.ts +4 -45
  122. package/build/manager/supervisor.d.ts.map +1 -1
  123. package/build/manager/supervisor.js +5 -5
  124. package/build/manager/supervisor.js.map +1 -1
  125. package/build/manager/types.d.ts +41 -1
  126. package/build/manager/types.d.ts.map +1 -1
  127. package/build/manager/types.local.d.ts +4 -0
  128. package/build/manager/types.local.d.ts.map +1 -0
  129. package/build/manager/types.local.js +2 -0
  130. package/build/manager/types.local.js.map +1 -0
  131. package/build/manager/utils/trusted.d.ts.map +1 -1
  132. package/build/manager/utils/trusted.js.map +1 -1
  133. package/build/model/rely/consumer.d.ts +3 -1
  134. package/build/model/rely/consumer.d.ts.map +1 -1
  135. package/build/model/rely/consumer.js.map +1 -1
  136. package/build/model/rely/peer.d.ts.map +1 -1
  137. package/build/model/rely/peer.js +7 -7
  138. package/build/model/rely/peer.js.map +1 -1
  139. package/build/model/rely/provider.d.ts +3 -1
  140. package/build/model/rely/provider.d.ts.map +1 -1
  141. package/build/model/rely/provider.js.map +1 -1
  142. package/build/re-captcha/guard.d.ts +12 -0
  143. package/build/re-captcha/guard.d.ts.map +1 -0
  144. package/build/re-captcha/guard.js +43 -0
  145. package/build/re-captcha/guard.js.map +1 -0
  146. package/build/re-captcha/index.d.ts +4 -0
  147. package/build/re-captcha/index.d.ts.map +1 -0
  148. package/build/re-captcha/index.js +3 -0
  149. package/build/re-captcha/index.js.map +1 -0
  150. package/build/re-captcha/token.d.ts +6 -0
  151. package/build/re-captcha/token.d.ts.map +1 -0
  152. package/build/re-captcha/token.js +74 -0
  153. package/build/re-captcha/token.js.map +1 -0
  154. package/build/re-captcha/types.d.ts +44 -0
  155. package/build/re-captcha/types.d.ts.map +1 -0
  156. package/build/re-captcha/types.js +2 -0
  157. package/build/re-captcha/types.js.map +1 -0
  158. package/build/service.d.ts +2 -3
  159. package/build/service.d.ts.map +1 -1
  160. package/build/service.js +136 -13
  161. package/build/service.js.map +1 -1
  162. package/build/types.local.d.ts +4 -0
  163. package/build/types.local.d.ts.map +1 -0
  164. package/build/types.local.js +2 -0
  165. package/build/types.local.js.map +1 -0
  166. package/package.json +33 -30
  167. package/src/actions/service.ts +10 -12
  168. package/src/actions/types.local.ts +6 -0
  169. package/src/entrypoints.ts +12 -0
  170. package/src/index.ts +2 -2
  171. package/src/manager/README.md +14 -18
  172. package/src/manager/actions/authenticate.ts +12 -0
  173. package/src/manager/actions/index.ts +3 -1
  174. package/src/manager/actions/init.ts +12 -0
  175. package/src/manager/actions/rely.ts +12 -0
  176. package/src/manager/consts.local.ts +1 -0
  177. package/src/manager/context.ts +0 -2
  178. package/src/manager/entrypoints.ts +17 -0
  179. package/src/manager/exports.ts +1 -2
  180. package/src/manager/index.ts +1 -1
  181. package/src/manager/main.ts +2 -2
  182. package/src/manager/model.ts +82 -41
  183. package/src/manager/plugins/basic-ed25519.ts +8 -8
  184. package/src/manager/plugins/basic-rely.ts +14 -9
  185. package/src/manager/plugins/consts.ts +7 -0
  186. package/src/manager/plugins/export.ts +5 -0
  187. package/src/manager/plugins/index.ts +10 -12
  188. package/src/manager/plugins/re-captcha/consts.local.ts +8 -0
  189. package/src/manager/plugins/re-captcha/consts.ts +8 -0
  190. package/src/manager/plugins/re-captcha/policy.ts +56 -0
  191. package/src/manager/plugins/re-captcha/types.ts +85 -0
  192. package/src/manager/plugins/re-captcha/verifier.ts +74 -0
  193. package/src/manager/plugins/re-captcha.ts +58 -43
  194. package/src/manager/plugins/supervisor.ts +9 -11
  195. package/src/manager/plugins/types.ts +23 -14
  196. package/src/manager/plugins/utils.ts +24 -14
  197. package/src/manager/rely/flow.ts +14 -11
  198. package/src/manager/rely.ts +2 -5
  199. package/src/manager/supervisor.ts +8 -54
  200. package/src/manager/types.local.ts +5 -0
  201. package/src/manager/types.ts +46 -1
  202. package/src/model/rely/consumer.ts +3 -1
  203. package/src/model/rely/peer.ts +8 -8
  204. package/src/model/rely/provider.ts +3 -1
  205. package/src/re-captcha/guard.ts +52 -0
  206. package/src/re-captcha/index.ts +3 -0
  207. package/src/re-captcha/token.ts +89 -0
  208. package/src/re-captcha/types.ts +45 -0
  209. package/src/service.ts +133 -19
  210. package/src/types.local.ts +5 -0
  211. package/tests/context.ts +3 -2
  212. package/tests/re-captcha.spec.ts +298 -0
  213. package/tests/replay-policy.spec.ts +36 -0
  214. package/tests/supervisor.spec.ts +6 -4
  215. package/build/.gitkeep +0 -0
  216. package/src/manager/actions/manager.ts +0 -23
  217. package/src/manager/modules.ts +0 -29
  218. package/src/modules.ts +0 -17
@@ -1,14 +1,21 @@
1
- import { AuthenFailed, AuthenPayloadError } from '@owlmeans/auth';
2
- import { getPlugin } from './plugins/utils.js';
1
+ import { AuthenFailed, AuthenPayloadError, AuthError, AuthUnavailable, authHelper } from '@owlmeans/auth';
2
+ import { logger } from '@owlmeans/log';
3
+ import { ENTITY_RESOLVER } from '@owlmeans/auth-common';
4
+ import { authPluginHelper } from './plugins/utils.js';
3
5
  import { AUTH_CACHE, AUTHEN_TIMEFRAME } from '../consts.js';
4
6
  import { EnvelopeKind, makeEnvelopeModel } from '@owlmeans/basic-envelope';
5
7
  import { createRelyFlow } from './rely/flow.js';
6
8
  import { trusted } from './utils/trusted.js';
9
+ import { AuthChallengeReplayPolicy } from './plugins/consts.js';
10
+ const log = logger('server-auth');
11
+ /** An account id as a log may carry it: an e-mail is reduced to its domain. */
12
+ const accountOf = (userId) => userId == null ? undefined : userId.includes('@') ? `*@${userId.slice(userId.lastIndexOf('@') + 1)}` : userId;
13
+ const compact = (value) => Object.fromEntries(Object.entries(value).filter(([, entry]) => entry != null));
7
14
  export const makeAuthModel = (context) => {
8
15
  const cache = (context) => context.resource(AUTH_CACHE);
9
16
  const model = {
10
17
  init: async (request) => {
11
- const plugin = await getPlugin(request.type, context);
18
+ const plugin = await authPluginHelper.getPlugin(request.type, context);
12
19
  const response = await plugin.init(request);
13
20
  const envelope = makeEnvelopeModel(plugin.type);
14
21
  /**
@@ -24,40 +31,72 @@ export const makeAuthModel = (context) => {
24
31
  return { challenge };
25
32
  },
26
33
  authenticate: async (credential) => {
27
- const [trustedUser, keyPair] = await trusted(context);
28
- const envelope = makeEnvelopeModel(credential.challenge, EnvelopeKind.Wrap);
29
- if (!await envelope.verify(keyPair)) {
30
- throw new AuthenFailed('challenge');
31
- }
32
- const msg = envelope.message(true);
34
+ // The one place every manager sign-in method (each plugin) is decided — logged once here.
35
+ const method = credential.type;
33
36
  try {
34
- await cache(context).create({ id: msg }, { ttl: (envelope.envelope.ttl ?? AUTHEN_TIMEFRAME) / 1000 });
37
+ const [trustedUser, keyPair] = await trusted(context);
38
+ const envelope = makeEnvelopeModel(credential.challenge, EnvelopeKind.Wrap);
39
+ if (!await envelope.verify(keyPair)) {
40
+ throw new AuthenFailed('challenge');
41
+ }
42
+ const msg = envelope.message(true);
43
+ const plugin = await authPluginHelper.getPlugin(envelope.type(), context);
44
+ if (plugin.challengeReplayPolicy !== AuthChallengeReplayPolicy.Plugin) {
45
+ try {
46
+ await cache(context).create({ id: msg }, { ttl: (envelope.envelope.ttl ?? AUTHEN_TIMEFRAME) / 1000 });
47
+ }
48
+ catch (e) {
49
+ const error = new AuthenFailed('challenge');
50
+ if (e instanceof Error) {
51
+ error.oiriginalStack = `${e} : ${e.stack}`;
52
+ }
53
+ throw error;
54
+ }
55
+ }
56
+ if (credential.userId == null) {
57
+ throw new AuthenPayloadError('userId');
58
+ }
59
+ // @TODO this token PROBABLY needs to be registered somewhere and rechecked
60
+ // from time to time to make sure that the session is not deleted
61
+ // or permission hasn't changed.
62
+ // Alternative solution is to have permissions cached and cleaned
63
+ // when some broadcast message is sent from authentication system.
64
+ const challenge = credential.challenge;
65
+ const { token } = await plugin.authenticate(Object.assign(credential, { challenge: msg }));
66
+ credential.challenge = token === '' ? challenge : token;
67
+ // Plugins accept whatever the caller typed — a current slug, a slug the organization has
68
+ // since retired, or (for a token minted before slugs existed) its stable key. The token is
69
+ // signed once and read for as long as it lives, so the value is canonicalized here rather
70
+ // than at every place that later reads it back.
71
+ const entitySlug = authHelper.entitySlugOf(credential);
72
+ if (entitySlug != null && context.hasService(ENTITY_RESOLVER)) {
73
+ const entity = await context.service(ENTITY_RESOLVER).resolve(entitySlug);
74
+ if (entity == null) {
75
+ throw new AuthenFailed('entity');
76
+ }
77
+ credential.entitySlug = entity.slug;
78
+ }
79
+ credential.credential = trustedUser.id;
80
+ const result = {
81
+ token: await makeEnvelopeModel(credential.type)
82
+ .send(credential, AUTHEN_TIMEFRAME)
83
+ .sign(keyPair, EnvelopeKind.Token)
84
+ };
85
+ log.info('Signed in', compact({
86
+ method, accountId: accountOf(credential.userId), profileId: credential.profileId,
87
+ entitySlug: credential.entitySlug,
88
+ }), { event: 'auth.signed-in' });
89
+ return result;
35
90
  }
36
- catch (e) {
37
- const error = new AuthenFailed('challenge');
38
- if (e instanceof Error) {
39
- error.oiriginalStack = `${e} : ${e.stack}`;
91
+ catch (error) {
92
+ // An outage (`AuthUnavailable`) is not a refusal; it propagates and is logged as a failure.
93
+ if (error instanceof AuthError && !(error instanceof AuthUnavailable)) {
94
+ log.warn('Sign-in refused', compact({
95
+ method, accountId: accountOf(credential.userId), reason: error.message,
96
+ }), { event: 'auth.refused' });
40
97
  }
41
98
  throw error;
42
99
  }
43
- if (credential.userId == null) {
44
- throw new AuthenPayloadError('userId');
45
- }
46
- const plugin = await getPlugin(envelope.type(), context);
47
- // @TODO this token PROBABLY needs to be registered somewhere and rechecked
48
- // from time to time to make sure that the session is not deleted
49
- // or permission hasn't changed.
50
- // Alternative solution is to have permissions cached and cleaned
51
- // when some broadcast message is sent from authentication system.
52
- const challenge = credential.challenge;
53
- const { token } = await plugin.authenticate(Object.assign(credential, { challenge: msg }));
54
- credential.challenge = token === '' ? challenge : token;
55
- credential.credential = trustedUser.id;
56
- return {
57
- token: await makeEnvelopeModel(credential.type)
58
- .send(credential, AUTHEN_TIMEFRAME)
59
- .sign(keyPair, EnvelopeKind.Token)
60
- };
61
100
  },
62
101
  rely: async (conn, auth) => {
63
102
  conn.authenticate = createRelyFlow(context, conn, auth);
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/manager/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/manager/model.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { AuthPlugin } from './types.js';
2
2
  import type { AppConfig, AppContext } from '../types.js';
3
- export declare const basicEd25519: <C extends AppConfig, T extends AppContext<C>>(context: T) => AuthPlugin;
3
+ export declare const makeBasicEd25519Plugin: <C extends AppConfig, T extends AppContext<C>>(context: T) => AuthPlugin;
4
4
  //# sourceMappingURL=basic-ed25519.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"basic-ed25519.d.ts","sourceRoot":"","sources":["../../../src/manager/plugins/basic-ed25519.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAK5C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxD,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,KAAG,UA6CvF,CAAA"}
1
+ {"version":3,"file":"basic-ed25519.d.ts","sourceRoot":"","sources":["../../../src/manager/plugins/basic-ed25519.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAK5C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxD,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,KAAG,UA6CjG,CAAA"}
@@ -1,14 +1,14 @@
1
1
  import { AuthenticationType, AuthenFailed, ALL_SCOPES, AuthRole } from '@owlmeans/auth';
2
- import { assertType } from './utils.js';
3
- import { randomBytes } from '@noble/hashes/utils';
2
+ import { authPluginHelper } from './utils.js';
3
+ import { randomBytes } from '@noble/hashes/utils.js';
4
4
  import { base64 } from '@scure/base';
5
- import { fromPubKey } from '@owlmeans/basic-keys';
5
+ import { keyHelper } from '@owlmeans/basic-keys';
6
6
  import { TRUSTED } from '@owlmeans/config';
7
- export const basicEd25519 = (context) => {
7
+ export const makeBasicEd25519Plugin = (context) => {
8
8
  const plugin = {
9
9
  type: AuthenticationType.BasicEd25519,
10
10
  init: async (request) => {
11
- assertType(request.type, plugin);
11
+ authPluginHelper.assertType(request.type, plugin);
12
12
  const challenge = base64.encode(randomBytes(32));
13
13
  return { challenge };
14
14
  },
@@ -24,7 +24,7 @@ export const basicEd25519 = (context) => {
24
24
  if (systemUser.credential == null) {
25
25
  throw new SyntaxError('System user missconfigured');
26
26
  }
27
- const key = fromPubKey(systemUser.credential);
27
+ const key = keyHelper.fromPubKey(systemUser.credential);
28
28
  if (!await key.verify(credential.challenge, credential.credential)) {
29
29
  throw new AuthenFailed(`challenge:${plugin.type}`);
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"basic-ed25519.js","sourceRoot":"","sources":["../../../src/manager/plugins/basic-ed25519.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEvF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAG1C,MAAM,CAAC,MAAM,YAAY,GAAG,CAA+C,OAAU,EAAc,EAAE;IACnG,MAAM,MAAM,GAAe;QACzB,IAAI,EAAE,kBAAkB,CAAC,YAAY;QACrC,IAAI,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YACpB,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAEhC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;YAEhD,OAAO,EAAE,SAAS,EAAE,CAAA;QACtB,CAAC;QAED,YAAY,EAAE,KAAK,EAAC,UAAU,EAAC,EAAE;YAC/B;;eAEG;YACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC;iBACxD,IAAI,CAAgB,UAAU,CAAC,MAAM,CAAC,CAAA;YAEzC,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,YAAY,EAAE,CAAA;YAC1B,CAAC;YAED,IAAI,UAAU,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,WAAW,CAAC,4BAA4B,CAAC,CAAA;YACrD,CAAC;YAED,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;YAE7C,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnE,MAAM,IAAI,YAAY,CAAC,aAAa,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YACpD,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;YAE5C,8DAA8D;YAC9D,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAA;YAChC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAA;YACpC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAA;YAC5B,UAAU,CAAC,IAAI,GAAG,kBAAkB,CAAC,YAAY,CAAA;YAEjD,OAAO,EAAE,KAAK,EAAE,CAAA;QAClB,CAAC;KACF,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"basic-ed25519.js","sourceRoot":"","sources":["../../../src/manager/plugins/basic-ed25519.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAG1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAA+C,OAAU,EAAc,EAAE;IAC7G,MAAM,MAAM,GAAe;QACzB,IAAI,EAAE,kBAAkB,CAAC,YAAY;QACrC,IAAI,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;YACpB,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAEjD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;YAEhD,OAAO,EAAE,SAAS,EAAE,CAAA;QACtB,CAAC;QAED,YAAY,EAAE,KAAK,EAAC,UAAU,EAAC,EAAE;YAC/B;;eAEG;YACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAgB,OAAO,CAAC;iBACvE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YAE1B,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,YAAY,EAAE,CAAA;YAC1B,CAAC;YAED,IAAI,UAAU,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,WAAW,CAAC,4BAA4B,CAAC,CAAA;YACrD,CAAC;YAED,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;YAEvD,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnE,MAAM,IAAI,YAAY,CAAC,aAAa,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YACpD,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;YAE5C,8DAA8D;YAC9D,UAAU,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAA;YAChC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAA;YACpC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAA;YAC5B,UAAU,CAAC,IAAI,GAAG,kBAAkB,CAAC,YAAY,CAAA;YAEjD,OAAO,EAAE,KAAK,EAAE,CAAA;QAClB,CAAC;KACF,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
1
  import type { AppContext } from '../types.js';
2
2
  import type { AuthPlugin } from './types.js';
3
- export declare const basicRely: (context: AppContext, type?: string) => AuthPlugin;
3
+ export declare const makeBasicRelyPlugin: (context: AppContext, type?: string) => AuthPlugin;
4
4
  //# sourceMappingURL=basic-rely.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"basic-rely.d.ts","sourceRoot":"","sources":["../../../src/manager/plugins/basic-rely.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAqC,MAAM,aAAa,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAiC,MAAM,YAAY,CAAA;AAS3E,eAAO,MAAM,SAAS,GAAI,SAAS,UAAU,EAAE,OAAO,MAAM,KAAG,UA0J9D,CAAA"}
1
+ {"version":3,"file":"basic-rely.d.ts","sourceRoot":"","sources":["../../../src/manager/plugins/basic-rely.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAqC,MAAM,aAAa,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAiC,MAAM,YAAY,CAAA;AAa3E,eAAO,MAAM,mBAAmB,YAAa,UAAU,SAAS,MAAM,KAAG,UA2JxE,CAAA"}
@@ -5,14 +5,16 @@ import { EnvelopeKind, makeEnvelopeModel } from '@owlmeans/basic-envelope';
5
5
  import { AUTH_CACHE } from '../../consts.js';
6
6
  import { ResourceError } from '@owlmeans/resource';
7
7
  import { RELY_CALL_TIMEOUT, RELY_PIN_PERFIX, RELY_TOKEN_PREFIX } from '@owlmeans/auth-common';
8
+ import { logger } from '@owlmeans/log';
9
+ const log = logger('server-auth:rely');
8
10
  const _subscriptions = {};
9
- export const basicRely = (context, type) => {
11
+ export const makeBasicRelyPlugin = (context, type) => {
10
12
  const plugin = {
11
13
  type: type ?? AuthenticationType.RelyHandshake,
12
14
  // This method is used by consumer and by provider (wallet)
13
15
  // to initialize shared authentication process.
14
- // The idea is that both subscribe to wait for a handshake value
15
- // from the peer, that in fact is a subscription to a redis message tunnel.
16
+ // The idea is that both watch the record holding their own pin/token and wake
17
+ // up when the peer writes its handshake value into it.
16
18
  init: async (request) => {
17
19
  const [, keyPair] = await trusted(context);
18
20
  const tunnel = context.resource(AUTH_CACHE);
@@ -32,8 +34,8 @@ export const basicRely = (context, type) => {
32
34
  }
33
35
  if (request.provideRely != null) {
34
36
  await Promise.all([pin, token].filter(key => key != null).map(async (key) => {
35
- _subscriptions[key] = await tunnel.subscribe(async (value) => {
36
- if (value.challenge != null) {
37
+ _subscriptions[key] = await tunnel.watch(key, async (value) => {
38
+ if (value?.challenge != null) {
37
39
  const rely = makeEnvelopeModel(value.challenge, EnvelopeKind.Wrap);
38
40
  if (await rely.verify(keyPair)) {
39
41
  [pin, token].filter(key => key != null).forEach(key => {
@@ -45,7 +47,7 @@ export const basicRely = (context, type) => {
45
47
  await request.provideRely?.(rely.message(), relyMsg, true);
46
48
  }
47
49
  }
48
- }, { /*ttl: RELY_CALL_TIMEOUT,*/ key, once: true });
50
+ }, { once: true });
49
51
  // @TODO they need to be killed on close - but actually live a little bit longer
50
52
  // then timeout for them is ok
51
53
  setTimeout(() => {
@@ -65,7 +67,7 @@ export const basicRely = (context, type) => {
65
67
  }
66
68
  catch (e) {
67
69
  if (e instanceof ResourceError) {
68
- console.error('COLISION ON TRY TO CREATE RELY PIN\TOKEN...', e);
70
+ log.warn('Rely pin/token collision; retrying', e);
69
71
  }
70
72
  else {
71
73
  throw e;
@@ -109,7 +111,8 @@ export const basicRely = (context, type) => {
109
111
  }
110
112
  catch (e) {
111
113
  if (e instanceof ResourceError) {
112
- console.error(e);
114
+ // The peer's pin/token is unknown; the refusal itself is logged where sign-in is decided.
115
+ log.debug('Rely peer lookup failed', e);
113
116
  throw new AuthorizationError('rely');
114
117
  }
115
118
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"basic-rely.js","sourceRoot":"","sources":["../../../src/manager/plugins/basic-rely.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basic-rely.js","sourceRoot":"","sources":["../../../src/manager/plugins/basic-rely.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAI3H,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC7F,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,MAAM,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAEtC,MAAM,cAAc,GAAgC,EAAE,CAAA;AACtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAmB,EAAE,IAAa,EAAc,EAAE;IACpF,MAAM,MAAM,GAAe;QACzB,IAAI,EAAE,IAAI,IAAI,kBAAkB,CAAC,aAAa;QAE9C,2DAA2D;QAC3D,+CAA+C;QAC/C,8EAA8E;QAC9E,uDAAuD;QACvD,IAAI,EAAE,KAAK,EAAE,OAA6B,EAA8B,EAAE;YACxE,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAoB,UAAU,CAAC,CAAA;YAC9D,IAAI,OAAkB,CAAA;YACtB,GAAG,CAAC;gBACF,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAA;oBAE3E,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;oBACxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;oBAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;oBAEnF,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAA;oBAE3E,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;wBAChB,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAA;oBAC3E,CAAC;oBACD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;wBAClB,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAA;oBAC7E,CAAC;oBAED,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;wBAChC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;4BACxE,cAAc,CAAC,GAAG,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;gCAC1D,IAAI,KAAK,EAAE,SAAS,IAAI,IAAI,EAAE,CAAC;oCAC7B,MAAM,IAAI,GAAG,iBAAiB,CAAY,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;oCAC7E,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;wCAC/B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;4CACpD,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,CAAA;4CACvB,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;gDAChC,OAAO,cAAc,CAAC,GAAG,CAAC,CAAA;4CAC5B,CAAC;wCACH,CAAC,CAAC,CAAA;wCACF,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;oCAC5D,CAAC;gCACH,CAAC;4BACH,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;4BAElB,iFAAiF;4BACjF,8BAA8B;4BAC9B,UAAU,CAAC,GAAG,EAAE;gCACd,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;oCAChC,IAAI,CAAC;wCACH,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE,CAAA;wCAC1B,OAAO,cAAc,CAAC,GAAG,CAAC,CAAA;oCAC5B,CAAC;4CAAS,CAAC;wCACT,KAAK,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;oCAC5B,CAAC;gCACH,CAAC;4BACH,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAA;wBAC9B,CAAC,CAAC,CAAC,CAAA;oBACL,CAAC;oBAED,OAAO,QAAQ,CAAA;gBACjB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC;wBAC/B,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAA;oBACnD,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,CAAA;oBACT,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;YACxD,CAAC,QAAQ,IAAI,EAAC;QAChB,CAAC;QAED,iGAAiG;QACjG,YAAY,EAAE,KAAK,EAAC,UAAU,EAAC,EAAE;YAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAoB,UAAU,CAAC,CAAA;YAE9D,6DAA6D;YAC7D,yCAAyC;YACzC,sCAAsC;YAEtC,IAAI,IAAe,CAAA;YACnB,IAAI,CAAC;gBACH,IAAI,IAAgB,CAAA;gBACpB,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACtD,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;oBACnE,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;wBACpB,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAA;oBACrC,CAAC;oBACD,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;gBAChD,CAAC;qBAAM,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC/D,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;oBACrE,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;wBACpB,MAAM,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAA;oBACvC,CAAC;oBACD,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;gBAChD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAA;gBAC5C,CAAC;gBACD,MAAM,OAAO,GAAG,iBAAiB,CAAY,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;gBAC/E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7B,MAAM,IAAI,gBAAgB,EAAE,CAAA;gBAC9B,CAAC;gBACD,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;YAC1B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC;oBAC/B,0FAA0F;oBAC1F,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAA;oBACvC,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;gBACtC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAA;gBACT,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAG,iBAAiB,CAAY,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;YACzF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,YAAY,EAAE,CAAA;YAC1B,CAAC;YAED,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YAEjF,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;YAErC;gBACE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,eAAe,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC7D,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;aACpE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACzC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;oBAChC,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE,CAAA;oBAC1B,OAAO,cAAc,CAAC,GAAG,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG,iBAAiB,CAAc,kBAAkB,CAAC,aAAa,CAAC,CAAA;YAC9E,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAEpC,UAAU,CAAC,IAAI,GAAG,kBAAkB,CAAC,aAAa,CAAA;YAElD,6FAA6F;YAC7F,gGAAgG;YAChG,iFAAiF;YACjF,8FAA8F;YAC9F,4GAA4G;YAC5G,iEAAiE;YACjE,MAAM,KAAK,GAAS,UAA6B,CAAA;YACjD,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;YAC5B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;YAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAA;YAEnB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAA;QAC/B,CAAC;KACF,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ /** Ownership of atomic replay protection for a verified authentication challenge. */
2
+ export declare enum AuthChallengeReplayPolicy {
3
+ /** Default: the auth manager consumes the challenge before plugin authentication. */
4
+ Manager = "manager",
5
+ /** The plugin owns bounded attempts and atomic success consumption. */
6
+ Plugin = "plugin"
7
+ }
8
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/manager/plugins/consts.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,oBAAY,yBAAyB;IACnC,qFAAqF;IACrF,OAAO,YAAY;IACnB,uEAAuE;IACvE,MAAM,WAAW;CAClB"}
@@ -0,0 +1,9 @@
1
+ /** Ownership of atomic replay protection for a verified authentication challenge. */
2
+ export var AuthChallengeReplayPolicy;
3
+ (function (AuthChallengeReplayPolicy) {
4
+ /** Default: the auth manager consumes the challenge before plugin authentication. */
5
+ AuthChallengeReplayPolicy["Manager"] = "manager";
6
+ /** The plugin owns bounded attempts and atomic success consumption. */
7
+ AuthChallengeReplayPolicy["Plugin"] = "plugin";
8
+ })(AuthChallengeReplayPolicy || (AuthChallengeReplayPolicy = {}));
9
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/manager/plugins/consts.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,CAAN,IAAY,yBAKX;AALD,WAAY,yBAAyB;IACnC,qFAAqF;IACrF,gDAAmB,CAAA;IACnB,uEAAuE;IACvE,8CAAiB,CAAA;AACnB,CAAC,EALW,yBAAyB,KAAzB,yBAAyB,QAKpC"}
@@ -1,4 +1,9 @@
1
1
  export type * from './types.js';
2
+ export type * from './re-captcha/types.js';
3
+ export * from './consts.js';
4
+ export * from './re-captcha/consts.js';
5
+ export * from './re-captcha/policy.js';
6
+ export * from './re-captcha/verifier.js';
2
7
  export * from './basic-ed25519.js';
3
8
  export * from './re-captcha.js';
4
9
  export * from './basic-rely.js';
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/manager/plugins/export.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/manager/plugins/export.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,mBAAmB,uBAAuB,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
@@ -1,3 +1,7 @@
1
+ export * from './consts.js';
2
+ export * from './re-captcha/consts.js';
3
+ export * from './re-captcha/policy.js';
4
+ export * from './re-captcha/verifier.js';
1
5
  export * from './basic-ed25519.js';
2
6
  export * from './re-captcha.js';
3
7
  export * from './basic-rely.js';
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/manager/plugins/export.ts"],"names":[],"mappings":"AAEA,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/manager/plugins/export.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAA;AAC3B,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
@@ -1,6 +1,5 @@
1
- import type { AuthPlugin } from './types.js';
2
- import type { AppContext, AppConfig } from '../types.js';
3
- export declare const plugins: Record<string, <C extends AppConfig, T extends AppContext<C>>(context: T) => AuthPlugin>;
1
+ import type { AuthPluginFactory } from './types.js';
2
+ export declare const plugins: Record<string, AuthPluginFactory>;
4
3
  /** Register an external AuthPlugin factory under a custom type string. */
5
- export declare const registerPlugin: (type: string, factory: <C extends AppConfig, T extends AppContext<C>>(context: T) => AuthPlugin) => void;
4
+ export declare const registerPlugin: (type: string, factory: AuthPluginFactory) => void;
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/manager/plugins/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIxD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,UAAU,CAAM,CAAA;AAMnH,0EAA0E;AAC1E,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,UAAU,KAChF,IAEF,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/manager/plugins/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAKnD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAM,CAAA;AAM5D,0EAA0E;AAC1E,eAAO,MAAM,cAAc,SACnB,MAAM,WACH,iBAAiB,KACzB,IAEF,CAAA"}
@@ -1,11 +1,11 @@
1
1
  import { AuthenticationType } from '@owlmeans/auth';
2
- import { basicEd25519 } from './basic-ed25519.js';
3
- import { reCaptcha } from './re-captcha.js';
4
- import { basicRely } from './basic-rely.js';
2
+ import { makeBasicEd25519Plugin } from './basic-ed25519.js';
3
+ import { makeReCaptchaPlugin } from './re-captcha.js';
4
+ import { makeBasicRelyPlugin } from './basic-rely.js';
5
5
  export const plugins = {};
6
- plugins[AuthenticationType.BasicEd25519] = basicEd25519;
7
- plugins[AuthenticationType.ReCaptcha] = reCaptcha;
8
- plugins[AuthenticationType.RelyHandshake] = basicRely;
6
+ plugins[AuthenticationType.BasicEd25519] = makeBasicEd25519Plugin;
7
+ plugins[AuthenticationType.ReCaptcha] = makeReCaptchaPlugin;
8
+ plugins[AuthenticationType.RelyHandshake] = makeBasicRelyPlugin;
9
9
  /** Register an external AuthPlugin factory under a custom type string. */
10
10
  export const registerPlugin = (type, factory) => {
11
11
  plugins[type] = factory;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/manager/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,CAAC,MAAM,OAAO,GAA6F,EAAE,CAAA;AAEnH,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG,YAAoD,CAAA;AAC/F,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,SAAiD,CAAA;AACzF,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,GAAG,SAAiD,CAAA;AAE7F,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAY,EACZ,OAAiF,EAC3E,EAAE;IACR,OAAO,CAAC,IAAI,CAAC,GAAG,OAA+C,CAAA;AACjE,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/manager/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,MAAM,CAAC,MAAM,OAAO,GAAsC,EAAE,CAAA;AAE5D,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG,sBAA2C,CAAA;AACtF,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,mBAAwC,CAAA;AAChF,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,GAAG,mBAAwC,CAAA;AAEpF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAY,EACZ,OAA0B,EACpB,EAAE;IACR,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;AACzB,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ /** The service alias the reCAPTCHA plugin resolves its verifier by. */
2
+ export declare const RECAPTCHA_VERIFIER = "re-captcha-verifier";
3
+ /** Google's siteverify endpoint — always https. */
4
+ export declare const RECAPTCHA_SITEVERIFY_URL = "https://www.google.com/recaptcha/api/siteverify";
5
+ /** How long the default verifier waits for Google, in ms. */
6
+ export declare const RECAPTCHA_VERIFY_TIMEOUT = 10000;
7
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../../src/manager/plugins/re-captcha/consts.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,wBAAwB,CAAA;AAEvD,mDAAmD;AACnD,eAAO,MAAM,wBAAwB,oDAAoD,CAAA;AAEzF,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,QAAS,CAAA"}
@@ -0,0 +1,7 @@
1
+ /** The service alias the reCAPTCHA plugin resolves its verifier by. */
2
+ export const RECAPTCHA_VERIFIER = 're-captcha-verifier';
3
+ /** Google's siteverify endpoint — always https. */
4
+ export const RECAPTCHA_SITEVERIFY_URL = 'https://www.google.com/recaptcha/api/siteverify';
5
+ /** How long the default verifier waits for Google, in ms. */
6
+ export const RECAPTCHA_VERIFY_TIMEOUT = 10_000;
7
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../../src/manager/plugins/re-captcha/consts.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAA;AAEvD,mDAAmD;AACnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,iDAAiD,CAAA;AAEzF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The only credential fields a reCAPTCHA guest token keeps. Everything else the caller posted —
3
+ * a profile, an organization (`entitySlug` or `entityId`), permissions, groups, an expiry, a
4
+ * `source` — is dropped: the token proves a solved challenge, never an identity.
5
+ */
6
+ export declare const RECAPTCHA_CREDENTIAL_FIELDS: readonly string[];
7
+ //# sourceMappingURL=consts.local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.local.d.ts","sourceRoot":"","sources":["../../../../src/manager/plugins/re-captcha/consts.local.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAEvD,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The only credential fields a reCAPTCHA guest token keeps. Everything else the caller posted —
3
+ * a profile, an organization (`entitySlug` or `entityId`), permissions, groups, an expiry, a
4
+ * `source` — is dropped: the token proves a solved challenge, never an identity.
5
+ */
6
+ export const RECAPTCHA_CREDENTIAL_FIELDS = Object.freeze([
7
+ 'type', 'role', 'userId', 'scopes', 'challenge', 'credential',
8
+ ]);
9
+ //# sourceMappingURL=consts.local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.local.js","sourceRoot":"","sources":["../../../../src/manager/plugins/re-captcha/consts.local.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1E,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY;CAC9D,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ReCaptchaPluginConfig, ReCaptchaPolicyModel } from './types.js';
2
+ export declare const makeReCaptchaPolicyModel: (record: ReCaptchaPluginConfig) => ReCaptchaPolicyModel;
3
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../src/manager/plugins/re-captcha/policy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAqB,MAAM,YAAY,CAAA;AAShG,eAAO,MAAM,wBAAwB,WAAY,qBAAqB,KAAG,oBA4CxE,CAAA"}
@@ -0,0 +1,44 @@
1
+ import { AuthenFailed } from '@owlmeans/auth';
2
+ import { PluginMissconfigured } from '@owlmeans/config';
3
+ /** A comma- or space-separated config string as its entries; `''` and absent are no entries. */
4
+ const listOf = (value) => typeof value === 'string' ? value.split(/[\s,]+/).map(entry => entry.trim()).filter(entry => entry !== '') : [];
5
+ /** A host as it is compared: lowercased, without a trailing dot or a leading `*.`/`.`. */
6
+ const hostOf = (value) => value.trim().toLowerCase().replace(/\.$/, '').replace(/^\*?\./, '');
7
+ export const makeReCaptchaPolicyModel = (record) => {
8
+ const hostnames = () => listOf(record.hostnames).map(hostOf).filter(host => host !== '');
9
+ const minScore = () => {
10
+ const value = record.minScore;
11
+ if (value == null || (typeof value === 'string' && value.trim() === '')) {
12
+ return null;
13
+ }
14
+ const score = typeof value === 'number' ? value : Number(value);
15
+ if (!Number.isFinite(score) || score < 0 || score > 1) {
16
+ throw new PluginMissconfigured('minScore');
17
+ }
18
+ return score;
19
+ };
20
+ const actions = () => listOf(record.actions);
21
+ const assert = (response) => {
22
+ if (response.success !== true) {
23
+ const codes = Array.isArray(response['error-codes']) ? response['error-codes'] : [];
24
+ throw new AuthenFailed('recaptcha:' + (codes.length > 0 ? codes.join(',') : 'unknown'));
25
+ }
26
+ const allowed = hostnames();
27
+ if (allowed.length > 0) {
28
+ const host = typeof response.hostname === 'string' ? hostOf(response.hostname) : '';
29
+ if (host === '' || !allowed.some(entry => host === entry || host.endsWith(`.${entry}`))) {
30
+ throw new AuthenFailed('recaptcha:hostname');
31
+ }
32
+ }
33
+ const floor = minScore();
34
+ if (floor != null && typeof response.score === 'number' && response.score < floor) {
35
+ throw new AuthenFailed('recaptcha:score');
36
+ }
37
+ const named = actions();
38
+ if (named.length > 0 && (typeof response.action !== 'string' || !named.includes(response.action))) {
39
+ throw new AuthenFailed('recaptcha:action');
40
+ }
41
+ };
42
+ return { record, hostnames, minScore, actions, assert };
43
+ };
44
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../../src/manager/plugins/re-captcha/policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import type { PluginConfig } from '@owlmeans/config';
2
+ import type { InitializedService } from '@owlmeans/context';
3
+ /** Google's siteverify answer, for a checkbox (v2) or a score-based (v3) token. */
4
+ export interface ReCaptchaResponse {
5
+ success: boolean;
6
+ /** When the challenge was solved, as an ISO date-time string. */
7
+ challenge_ts: string;
8
+ /** The host of the page the token was solved on. */
9
+ hostname: string;
10
+ /** Score-based keys only: 0.0 (a bot) … 1.0 (a person). */
11
+ score?: number;
12
+ /** Score-based keys only: the action the page named when it asked for the token. */
13
+ action?: string;
14
+ 'error-codes'?: string[];
15
+ }
16
+ /** The siteverify form: the key's secret, the token the browser got, optionally the browser's IP. */
17
+ export interface ReCaptchaRequest {
18
+ secret: string;
19
+ response: string;
20
+ remoteip?: string;
21
+ }
22
+ /**
23
+ * Asks Google whether a reCAPTCHA token is good. The plugin resolves it by `RECAPTCHA_VERIFIER`, so a
24
+ * test (or a proxy) registers its own under that alias; without one, the default siteverify call runs.
25
+ */
26
+ export interface ReCaptchaVerifierService extends InitializedService {
27
+ /**
28
+ * Google's answer for one token. A refusal is an answer (`success: false`), not an error.
29
+ *
30
+ * @throws {AuthUnavailable} when Google cannot be asked or answers something unreadable.
31
+ */
32
+ verify: (request: ReCaptchaRequest) => Promise<ReCaptchaResponse>;
33
+ }
34
+ /** The one call the default verifier makes — `fetch`, or a stand-in a test injects. */
35
+ export interface ReCaptchaFetch {
36
+ (url: string, init: RequestInit): Promise<Response>;
37
+ }
38
+ export interface ReCaptchaVerifierOptions {
39
+ /** The siteverify address; must be https. Default `RECAPTCHA_SITEVERIFY_URL`. */
40
+ url?: string;
41
+ /** Default: the global `fetch`. */
42
+ fetch?: ReCaptchaFetch;
43
+ /** Milliseconds before the call is abandoned. Default `RECAPTCHA_VERIFY_TIMEOUT`. */
44
+ timeout?: number;
45
+ }
46
+ /**
47
+ * The `MOD_RECAPTCHA` plugin record of the server config: the secret in `value` plus the policy.
48
+ * Every policy field is a string as a mounted config file delivers it; `''` or absent = no check.
49
+ */
50
+ export interface ReCaptchaPluginConfig extends PluginConfig {
51
+ /** Hosts a token may be solved on, comma- or space-separated; a subdomain of an entry passes. */
52
+ hostnames?: string;
53
+ /** The lowest score a score-based token may carry (0…1); a checkbox token has none and passes. */
54
+ minScore?: string | number;
55
+ /** The actions a token may be issued for, comma- or space-separated; a token naming none fails. */
56
+ actions?: string;
57
+ }
58
+ /** The policy one `MOD_RECAPTCHA` record states, applied to Google's answer. */
59
+ export interface ReCaptchaPolicyModel {
60
+ readonly record: ReCaptchaPluginConfig;
61
+ /** The allowed hosts, lowercased; empty = any host. */
62
+ hostnames: () => string[];
63
+ /**
64
+ * The lowest accepted score, or `null` for no score check.
65
+ *
66
+ * @throws {PluginMissconfigured} when the record's value is not a number between 0 and 1.
67
+ */
68
+ minScore: () => number | null;
69
+ /** The allowed actions; empty = any action. */
70
+ actions: () => string[];
71
+ /**
72
+ * Accept Google's answer or refuse it, in this order: success, hostname, score, action.
73
+ *
74
+ * @throws {AuthenFailed} `recaptcha:<error-codes>`, `recaptcha:hostname`, `recaptcha:score`,
75
+ * `recaptcha:action`.
76
+ */
77
+ assert: (response: ReCaptchaResponse) => void;
78
+ }
79
+ //# sourceMappingURL=types.d.ts.map