emilsoftware-utilities 2.0.0-dev.67 → 2.0.0-dev.69

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 (149) hide show
  1. package/dist/accessi/resource-server/errors.d.ts +1 -1
  2. package/dist/accessi/resource-server/errors.js.map +1 -1
  3. package/dist/accessi/resource-server/express.js +21 -0
  4. package/dist/accessi/resource-server/express.js.map +1 -1
  5. package/dist/accessi/resource-server/nest.js +13 -0
  6. package/dist/accessi/resource-server/nest.js.map +1 -1
  7. package/dist/accessi/resource-server/runtime.js +11 -1
  8. package/dist/accessi/resource-server/runtime.js.map +1 -1
  9. package/dist/accessi/resource-server/types.d.ts +7 -0
  10. package/dist/accessi/resource-server/types.js.map +1 -1
  11. package/dist/accessi/server/index.d.ts +1 -0
  12. package/dist/accessi/server/index.js +1 -0
  13. package/dist/accessi/server/index.js.map +1 -1
  14. package/dist/accessi/server/standalone.d.ts +41 -0
  15. package/dist/accessi/server/standalone.js +264 -0
  16. package/dist/accessi/server/standalone.js.map +1 -0
  17. package/dist/accessi-module/AccessiModule.d.ts +53 -2
  18. package/dist/accessi-module/AccessiModule.js +5 -2
  19. package/dist/accessi-module/AccessiModule.js.map +1 -1
  20. package/dist/accessi-module/Console/accessiFetch.d.ts +5 -0
  21. package/dist/accessi-module/Console/accessiFetch.js +7 -4
  22. package/dist/accessi-module/Console/accessiFetch.js.map +1 -1
  23. package/dist/accessi-module/Console/console.js +21 -7
  24. package/dist/accessi-module/Console/generated/emilsoftware-utilities.d.ts +31 -1
  25. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js +28 -3
  26. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js.map +1 -1
  27. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.d.ts +12 -0
  28. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js +9 -0
  29. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js.map +1 -0
  30. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.d.ts +15 -0
  31. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js +3 -0
  32. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js.map +1 -0
  33. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.d.ts +14 -0
  34. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js +3 -0
  35. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js.map +1 -0
  36. package/dist/accessi-module/Console/generated/model/index.d.ts +6 -0
  37. package/dist/accessi-module/Console/generated/model/index.js +6 -0
  38. package/dist/accessi-module/Console/generated/model/index.js.map +1 -1
  39. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +2 -0
  40. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -1
  41. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.d.ts +10 -0
  42. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js +9 -0
  43. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js.map +1 -0
  44. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.d.ts +14 -0
  45. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js +3 -0
  46. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js.map +1 -0
  47. package/dist/accessi-module/Console/generated/model/refreshTokenResult.d.ts +13 -0
  48. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js +3 -0
  49. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js.map +1 -0
  50. package/dist/accessi-module/Console/wiki.js +16 -3
  51. package/dist/accessi-module/Console/wiki.js.map +1 -1
  52. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +6 -1
  53. package/dist/accessi-module/Controllers/AccessiConsoleController.js +24 -1
  54. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -1
  55. package/dist/accessi-module/Controllers/AuthController.d.ts +3 -1
  56. package/dist/accessi-module/Controllers/AuthController.js +90 -8
  57. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  58. package/dist/accessi-module/Controllers/ConsoleEntryController.d.ts +2 -0
  59. package/dist/accessi-module/Controllers/ConsoleEntryController.js +11 -3
  60. package/dist/accessi-module/Controllers/ConsoleEntryController.js.map +1 -1
  61. package/dist/accessi-module/Controllers/EmailController.js +1 -1
  62. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  63. package/dist/accessi-module/Controllers/UserController.js +1 -1
  64. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  65. package/dist/accessi-module/Dtos/FederatedExchangeDtos.d.ts +21 -0
  66. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js +74 -0
  67. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js.map +1 -0
  68. package/dist/accessi-module/Dtos/LoginResponse.d.ts +1 -0
  69. package/dist/accessi-module/Dtos/LoginResponse.js +6 -0
  70. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  71. package/dist/accessi-module/Dtos/RefreshTokenDtos.d.ts +12 -0
  72. package/dist/accessi-module/Dtos/RefreshTokenDtos.js +50 -0
  73. package/dist/accessi-module/Dtos/RefreshTokenDtos.js.map +1 -0
  74. package/dist/accessi-module/Dtos/index.d.ts +2 -0
  75. package/dist/accessi-module/Dtos/index.js +2 -0
  76. package/dist/accessi-module/Dtos/index.js.map +1 -1
  77. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +14 -0
  78. package/dist/accessi-module/Services/AuthService/AuthService.js +99 -6
  79. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  80. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +8 -16
  81. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +1 -1
  82. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.d.ts +15 -0
  83. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js +85 -0
  84. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js.map +1 -0
  85. package/dist/accessi-module/federated-auth/FederatedAuthService.js +7 -1
  86. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -1
  87. package/dist/accessi-module/index.d.ts +17 -1
  88. package/dist/accessi-module/index.js +71 -5
  89. package/dist/accessi-module/index.js.map +1 -1
  90. package/dist/accessi-module/jwt/jwt.strategy.js +4 -0
  91. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  92. package/dist/accessi-module/middleware/authenticateGen.js +4 -0
  93. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  94. package/dist/accessi-module/security/audit.d.ts +7 -0
  95. package/dist/accessi-module/security/audit.js +14 -0
  96. package/dist/accessi-module/security/audit.js.map +1 -0
  97. package/dist/accessi-module/security/authenticatedToken.d.ts +1 -1
  98. package/dist/accessi-module/security/authenticatedToken.js +3 -3
  99. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  100. package/dist/accessi-module/security/consoleEntry.d.ts +58 -11
  101. package/dist/accessi-module/security/consoleEntry.js +181 -31
  102. package/dist/accessi-module/security/consoleEntry.js.map +1 -1
  103. package/dist/accessi-module/security/edgeRateLimit.d.ts +33 -0
  104. package/dist/accessi-module/security/edgeRateLimit.js +81 -0
  105. package/dist/accessi-module/security/edgeRateLimit.js.map +1 -0
  106. package/dist/accessi-module/security/jwks.d.ts +33 -0
  107. package/dist/accessi-module/security/jwks.js +83 -0
  108. package/dist/accessi-module/security/jwks.js.map +1 -0
  109. package/dist/accessi-module/security/jwksBootstrap.d.ts +15 -0
  110. package/dist/accessi-module/security/jwksBootstrap.js +44 -0
  111. package/dist/accessi-module/security/jwksBootstrap.js.map +1 -0
  112. package/dist/accessi-module/security/jwtTokenOptions.d.ts +9 -2
  113. package/dist/accessi-module/security/jwtTokenOptions.js +18 -4
  114. package/dist/accessi-module/security/jwtTokenOptions.js.map +1 -1
  115. package/dist/accessi-module/security/passwordResetToken.d.ts +1 -1
  116. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  117. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +9 -7
  118. package/dist/accessi-module/security/publicAuthRateLimit.js +55 -78
  119. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  120. package/dist/accessi-module/security/rateLimitStore.d.ts +34 -0
  121. package/dist/accessi-module/security/rateLimitStore.js +145 -0
  122. package/dist/accessi-module/security/rateLimitStore.js.map +1 -0
  123. package/dist/accessi-module/security/refreshTokenRotation.d.ts +40 -0
  124. package/dist/accessi-module/security/refreshTokenRotation.js +91 -0
  125. package/dist/accessi-module/security/refreshTokenRotation.js.map +1 -0
  126. package/dist/accessi-module/security/serviceTokenGuard.d.ts +3 -1
  127. package/dist/accessi-module/security/serviceTokenGuard.js +11 -6
  128. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -1
  129. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +5 -4
  130. package/dist/accessi-module/security/serviceTokenRateLimit.js +33 -29
  131. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -1
  132. package/dist/accessi-module/security/sessionRevocation.d.ts +52 -0
  133. package/dist/accessi-module/security/sessionRevocation.js +124 -0
  134. package/dist/accessi-module/security/sessionRevocation.js.map +1 -0
  135. package/dist/accessi-module/security/validateOptions.d.ts +19 -0
  136. package/dist/accessi-module/security/validateOptions.js +115 -0
  137. package/dist/accessi-module/security/validateOptions.js.map +1 -0
  138. package/dist/emilsoftware-utilities-2.0.0-dev.69.tgz +0 -0
  139. package/dist/initEmilsoftwareModule.js +39 -3
  140. package/dist/initEmilsoftwareModule.js.map +1 -1
  141. package/dist/scripts/startAccessiService.d.ts +1 -0
  142. package/dist/scripts/startAccessiService.js +11 -0
  143. package/dist/scripts/startAccessiService.js.map +1 -0
  144. package/docs/accessi-openapi-fingerprint.json +190 -0
  145. package/docs/gateway-rate-limit.md +98 -0
  146. package/docs/standalone-service.md +176 -0
  147. package/integration-prompt.md +299 -8
  148. package/package.json +11 -5
  149. package/dist/emilsoftware-utilities-2.0.0-dev.67.tgz +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federatedAuthenticationResultDto.js","sourceRoot":"","sources":["../../../../../src/accessi-module/Console/generated/model/federatedAuthenticationResultDto.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\nimport type { LoginResult } from './loginResult';\nimport type { TokenResult } from './tokenResult';\n\nexport interface FederatedAuthenticationResultDto {\n codiceUtente: number;\n /** Profilo, grant e token della sessione Accessi. */\n login: LoginResult;\n /** Assente quando login.challenge richiede la verifica 2FA. */\n token?: TokenResult;\n}\n"]}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Generated by orval v6.31.0 🍺
3
+ * Do not edit manually.
4
+ * Accessi API
5
+ * OpenAPI spec version: 1.0
6
+ */
7
+ import type { FederatedAuthenticationResultDto } from './federatedAuthenticationResultDto';
8
+ import type { Status } from './status';
9
+ export interface FederatedExchangeResponse {
10
+ /** Messaggio informativo restituito dalla libreria quando presente. */
11
+ Message?: string;
12
+ Result: FederatedAuthenticationResultDto;
13
+ Status: Status;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=federatedExchangeResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federatedExchangeResponse.js","sourceRoot":"","sources":["../../../../../src/accessi-module/Console/generated/model/federatedExchangeResponse.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\nimport type { FederatedAuthenticationResultDto } from './federatedAuthenticationResultDto';\nimport type { Status } from './status';\n\nexport interface FederatedExchangeResponse {\n /** Messaggio informativo restituito dalla libreria quando presente. */\n Message?: string;\n Result: FederatedAuthenticationResultDto;\n Status: Status;\n}\n"]}
@@ -36,6 +36,9 @@ export * from './createScopeRequest';
36
36
  export * from './createServiceTokenRequest';
37
37
  export * from './createServiceTokenResponse';
38
38
  export * from './errorResponse';
39
+ export * from './exchangeFederatedIdentityRequest';
40
+ export * from './federatedAuthenticationResultDto';
41
+ export * from './federatedExchangeResponse';
39
42
  export * from './federatedIdentityListResponse';
40
43
  export * from './federatedIdentityResponse';
41
44
  export * from './federatedIdentityResponseDto';
@@ -81,6 +84,9 @@ export * from './menuTypeEntity';
81
84
  export * from './passwordExpiredResponse';
82
85
  export * from './permission';
83
86
  export * from './publicRegisterRequest';
87
+ export * from './refreshTokenRequest';
88
+ export * from './refreshTokenResponse';
89
+ export * from './refreshTokenResult';
84
90
  export * from './registerRequest';
85
91
  export * from './registerResponse';
86
92
  export * from './resendTwoFactorRequest';
@@ -52,6 +52,9 @@ __exportStar(require("./createScopeRequest"), exports);
52
52
  __exportStar(require("./createServiceTokenRequest"), exports);
53
53
  __exportStar(require("./createServiceTokenResponse"), exports);
54
54
  __exportStar(require("./errorResponse"), exports);
55
+ __exportStar(require("./exchangeFederatedIdentityRequest"), exports);
56
+ __exportStar(require("./federatedAuthenticationResultDto"), exports);
57
+ __exportStar(require("./federatedExchangeResponse"), exports);
55
58
  __exportStar(require("./federatedIdentityListResponse"), exports);
56
59
  __exportStar(require("./federatedIdentityResponse"), exports);
57
60
  __exportStar(require("./federatedIdentityResponseDto"), exports);
@@ -97,6 +100,9 @@ __exportStar(require("./menuTypeEntity"), exports);
97
100
  __exportStar(require("./passwordExpiredResponse"), exports);
98
101
  __exportStar(require("./permission"), exports);
99
102
  __exportStar(require("./publicRegisterRequest"), exports);
103
+ __exportStar(require("./refreshTokenRequest"), exports);
104
+ __exportStar(require("./refreshTokenResponse"), exports);
105
+ __exportStar(require("./refreshTokenResult"), exports);
100
106
  __exportStar(require("./registerRequest"), exports);
101
107
  __exportStar(require("./registerResponse"), exports);
102
108
  __exportStar(require("./resendTwoFactorRequest"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/accessi-module/Console/generated/model/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,qDAAmC;AACnC,qEAAmD;AACnD,kEAAgD;AAChD,mDAAiC;AACjC,iEAA+C;AAC/C,+DAA6C;AAC7C,mEAAiD;AACjD,6DAA2C;AAC3C,iEAA+C;AAC/C,gEAA8C;AAC9C,0DAAwC;AACxC,2DAAyC;AACzC,4DAA0C;AAC1C,gEAA8C;AAC9C,gEAA8C;AAC9C,gEAA8C;AAC9C,8DAA4C;AAC5C,+DAA6C;AAC7C,6DAA2C;AAC3C,4DAA0C;AAC1C,mEAAiD;AACjD,mEAAiD;AACjD,+DAA6C;AAC7C,4DAA0C;AAC1C,sEAAoD;AACpD,2DAAyC;AACzC,sDAAoC;AACpC,0DAAwC;AACxC,uDAAqC;AACrC,8DAA4C;AAC5C,+DAA6C;AAC7C,kDAAgC;AAChC,kEAAgD;AAChD,8DAA4C;AAC5C,iEAA+C;AAC/C,kEAAgD;AAChD,8DAA4C;AAC5C,iEAA+C;AAC/C,iDAA+B;AAC/B,sDAAoC;AACpC,0DAAwC;AACxC,4DAA0C;AAC1C,6DAA2C;AAC3C,+DAA6C;AAC7C,0DAAwC;AACxC,yDAAuC;AACvC,mDAAiC;AACjC,qDAAmC;AACnC,qDAAmC;AACnC,sDAAoC;AACpC,sDAAoC;AACpC,2DAAyC;AACzC,6DAA2C;AAC3C,0DAAwC;AACxC,2DAAyC;AACzC,gEAA8C;AAC9C,mDAAiC;AACjC,qDAAmC;AACnC,mDAAiC;AACjC,kEAAgD;AAChD,yDAAuC;AACvC,kEAAgD;AAChD,mEAAiD;AACjD,0DAAwC;AACxC,mDAAiC;AACjC,oDAAkC;AAClC,kDAAgC;AAChC,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,+DAA6C;AAC7C,gEAA8C;AAC9C,+CAA6B;AAC7B,mDAAiC;AACjC,4DAA0C;AAC1C,+CAA6B;AAC7B,0DAAwC;AACxC,oDAAkC;AAClC,qDAAmC;AACnC,2DAAyC;AACzC,yCAAuB;AACvB,8CAA4B;AAC5B,8DAA4C;AAC5C,oDAAkC;AAClC,qDAAmC;AACnC,gDAA8B;AAC9B,kEAAgD;AAChD,iEAA+C;AAC/C,oDAAkC;AAClC,yDAAuC;AACvC,kEAAgD;AAChD,yDAAuC;AACvC,6DAA2C;AAC3C,+EAA6D;AAC7D,2DAAyC;AACzC,2CAAyB;AACzB,+CAA6B;AAC7B,yDAAuC;AACvC,gDAA8B;AAC9B,oDAAkC;AAClC,0DAAwC;AACxC,gEAA8C;AAC9C,2EAAyD;AACzD,+DAA6C;AAC7C,mEAAiD;AACjD,mEAAiD;AACjD,4DAA0C;AAC1C,sEAAoD;AACpD,2DAAyC;AACzC,sDAAoC;AACpC,0DAAwC;AACxC,uDAAqC;AACrC,4CAA0B;AAC1B,8DAA4C;AAC5C,kDAAgC;AAChC,uDAAqC;AACrC,2DAAyC","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\n\nexport * from './abilitazioneMenu';\nexport * from './abilitazioneMenuTipoAbilitazione';\nexport * from './accessiIntrospectionResultDto';\nexport * from './actionResponse';\nexport * from './adminBootstrapStatusResponse';\nexport * from './adminBootstrapStatusResult';\nexport * from './assignPermissionsToUserRequest';\nexport * from './assignRolesToUserRequest';\nexport * from './authenticatedTokenPayloadDto';\nexport * from './authenticatedUserPayloadDto';\nexport * from './bootstrapAdminRequest';\nexport * from './bootstrapAdminResponse';\nexport * from './bootstrapAdminResultDto';\nexport * from './confirmResetPasswordRequest';\nexport * from './consoleEntryExchangeRequest';\nexport * from './consoleEntrySessionResponse';\nexport * from './consoleEntrySessionResult';\nexport * from './consoleEntryTicketResponse';\nexport * from './consoleEntryTicketResult';\nexport * from './consoleEntryTokenResult';\nexport * from './createFederatedIdentityRequest';\nexport * from './createFederatedProviderRequest';\nexport * from './createFederatedUserRequest';\nexport * from './createFilterTypeRequest';\nexport * from './createFilterTypeRequestFlgEnabled';\nexport * from './createMenuGroupRequest';\nexport * from './createMenuRequest';\nexport * from './createMenuTypeRequest';\nexport * from './createScopeRequest';\nexport * from './createServiceTokenRequest';\nexport * from './createServiceTokenResponse';\nexport * from './errorResponse';\nexport * from './federatedIdentityListResponse';\nexport * from './federatedIdentityResponse';\nexport * from './federatedIdentityResponseDto';\nexport * from './federatedProviderListResponse';\nexport * from './federatedProviderResponse';\nexport * from './federatedProviderResponseDto';\nexport * from './filtriUtente';\nexport * from './getFiltriResponse';\nexport * from './getFiltriUtenteParams';\nexport * from './getFiltriUtenteResponse';\nexport * from './getGroupsWithMenusParams';\nexport * from './getGroupsWithMenusResponse';\nexport * from './getMenuScopesResponse';\nexport * from './getMenuTypesResponse';\nexport * from './getMenusParams';\nexport * from './getMenusResponse';\nexport * from './getRolesResponse';\nexport * from './getSchemaResponse';\nexport * from './getScopesResponse';\nexport * from './getServiceTokensParams';\nexport * from './getServiceTokensResponse';\nexport * from './getUserByTokenRequest';\nexport * from './getUserByTokenResponse';\nexport * from './getUserRolesAndGrantsParams';\nexport * from './getUsersParams';\nexport * from './getUsersResponse';\nexport * from './getUsersResult';\nexport * from './getUsersResultExtensionFields';\nexport * from './groupWithMenusEntity';\nexport * from './introspectAccessiTokenRequest';\nexport * from './introspectAccessiTokenResponse';\nexport * from './issuedServiceTokenDto';\nexport * from './loginAsRequest';\nexport * from './loginAsResponse';\nexport * from './loginAsResult';\nexport * from './loginRequest';\nexport * from './loginResponse';\nexport * from './loginResult';\nexport * from './loginResultExtensionFields';\nexport * from './loginResultPasswordRequired';\nexport * from './menuEntity';\nexport * from './menuTypeEntity';\nexport * from './passwordExpiredResponse';\nexport * from './permission';\nexport * from './publicRegisterRequest';\nexport * from './registerRequest';\nexport * from './registerResponse';\nexport * from './resendTwoFactorRequest';\nexport * from './role';\nexport * from './ruoliMenu';\nexport * from './ruoliMenuTipoAbilitazione';\nexport * from './schemaDdlResult';\nexport * from './schemaDdlSection';\nexport * from './scopeEntity';\nexport * from './sendResetPasswordEmailRequest';\nexport * from './serveResetPasswordPageParams';\nexport * from './serviceTokenDto';\nexport * from './setMenuScopesRequest';\nexport * from './setPasswordLoginPolicyRequest';\nexport * from './setScopeMenusRequest';\nexport * from './setStatoRegistrazioneDto';\nexport * from './setStatoRegistrazioneDtoStatoRegistrazione';\nexport * from './setUserPasswordRequest';\nexport * from './status';\nexport * from './tipoFiltro';\nexport * from './tipoFiltroFlgEnabled';\nexport * from './tokenResult';\nexport * from './tokenResultType';\nexport * from './twoFactorChallengeDto';\nexport * from './twoFactorChallengeDtoMethod';\nexport * from './twoFactorChallengeDtoTwoFactorRequired';\nexport * from './updateEnabledStatusRequest';\nexport * from './updateFederatedIdentityRequest';\nexport * from './updateFederatedProviderRequest';\nexport * from './updateFilterTypeRequest';\nexport * from './updateFilterTypeRequestFlgEnabled';\nexport * from './updateMenuGroupRequest';\nexport * from './updateMenuRequest';\nexport * from './updateMenuTypeRequest';\nexport * from './updateScopeRequest';\nexport * from './userDto';\nexport * from './userDtoStatoRegistrazione';\nexport * from './userGrantsDto';\nexport * from './userGrantsResponse';\nexport * from './verifyTwoFactorRequest';"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/accessi-module/Console/generated/model/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,qDAAmC;AACnC,qEAAmD;AACnD,kEAAgD;AAChD,mDAAiC;AACjC,iEAA+C;AAC/C,+DAA6C;AAC7C,mEAAiD;AACjD,6DAA2C;AAC3C,iEAA+C;AAC/C,gEAA8C;AAC9C,0DAAwC;AACxC,2DAAyC;AACzC,4DAA0C;AAC1C,gEAA8C;AAC9C,gEAA8C;AAC9C,gEAA8C;AAC9C,8DAA4C;AAC5C,+DAA6C;AAC7C,6DAA2C;AAC3C,4DAA0C;AAC1C,mEAAiD;AACjD,mEAAiD;AACjD,+DAA6C;AAC7C,4DAA0C;AAC1C,sEAAoD;AACpD,2DAAyC;AACzC,sDAAoC;AACpC,0DAAwC;AACxC,uDAAqC;AACrC,8DAA4C;AAC5C,+DAA6C;AAC7C,kDAAgC;AAChC,qEAAmD;AACnD,qEAAmD;AACnD,8DAA4C;AAC5C,kEAAgD;AAChD,8DAA4C;AAC5C,iEAA+C;AAC/C,kEAAgD;AAChD,8DAA4C;AAC5C,iEAA+C;AAC/C,iDAA+B;AAC/B,sDAAoC;AACpC,0DAAwC;AACxC,4DAA0C;AAC1C,6DAA2C;AAC3C,+DAA6C;AAC7C,0DAAwC;AACxC,yDAAuC;AACvC,mDAAiC;AACjC,qDAAmC;AACnC,qDAAmC;AACnC,sDAAoC;AACpC,sDAAoC;AACpC,2DAAyC;AACzC,6DAA2C;AAC3C,0DAAwC;AACxC,2DAAyC;AACzC,gEAA8C;AAC9C,mDAAiC;AACjC,qDAAmC;AACnC,mDAAiC;AACjC,kEAAgD;AAChD,yDAAuC;AACvC,kEAAgD;AAChD,mEAAiD;AACjD,0DAAwC;AACxC,mDAAiC;AACjC,oDAAkC;AAClC,kDAAgC;AAChC,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,+DAA6C;AAC7C,gEAA8C;AAC9C,+CAA6B;AAC7B,mDAAiC;AACjC,4DAA0C;AAC1C,+CAA6B;AAC7B,0DAAwC;AACxC,wDAAsC;AACtC,yDAAuC;AACvC,uDAAqC;AACrC,oDAAkC;AAClC,qDAAmC;AACnC,2DAAyC;AACzC,yCAAuB;AACvB,8CAA4B;AAC5B,8DAA4C;AAC5C,oDAAkC;AAClC,qDAAmC;AACnC,gDAA8B;AAC9B,kEAAgD;AAChD,iEAA+C;AAC/C,oDAAkC;AAClC,yDAAuC;AACvC,kEAAgD;AAChD,yDAAuC;AACvC,6DAA2C;AAC3C,+EAA6D;AAC7D,2DAAyC;AACzC,2CAAyB;AACzB,+CAA6B;AAC7B,yDAAuC;AACvC,gDAA8B;AAC9B,oDAAkC;AAClC,0DAAwC;AACxC,gEAA8C;AAC9C,2EAAyD;AACzD,+DAA6C;AAC7C,mEAAiD;AACjD,mEAAiD;AACjD,4DAA0C;AAC1C,sEAAoD;AACpD,2DAAyC;AACzC,sDAAoC;AACpC,0DAAwC;AACxC,uDAAqC;AACrC,4CAA0B;AAC1B,8DAA4C;AAC5C,kDAAgC;AAChC,uDAAqC;AACrC,2DAAyC","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\n\nexport * from './abilitazioneMenu';\nexport * from './abilitazioneMenuTipoAbilitazione';\nexport * from './accessiIntrospectionResultDto';\nexport * from './actionResponse';\nexport * from './adminBootstrapStatusResponse';\nexport * from './adminBootstrapStatusResult';\nexport * from './assignPermissionsToUserRequest';\nexport * from './assignRolesToUserRequest';\nexport * from './authenticatedTokenPayloadDto';\nexport * from './authenticatedUserPayloadDto';\nexport * from './bootstrapAdminRequest';\nexport * from './bootstrapAdminResponse';\nexport * from './bootstrapAdminResultDto';\nexport * from './confirmResetPasswordRequest';\nexport * from './consoleEntryExchangeRequest';\nexport * from './consoleEntrySessionResponse';\nexport * from './consoleEntrySessionResult';\nexport * from './consoleEntryTicketResponse';\nexport * from './consoleEntryTicketResult';\nexport * from './consoleEntryTokenResult';\nexport * from './createFederatedIdentityRequest';\nexport * from './createFederatedProviderRequest';\nexport * from './createFederatedUserRequest';\nexport * from './createFilterTypeRequest';\nexport * from './createFilterTypeRequestFlgEnabled';\nexport * from './createMenuGroupRequest';\nexport * from './createMenuRequest';\nexport * from './createMenuTypeRequest';\nexport * from './createScopeRequest';\nexport * from './createServiceTokenRequest';\nexport * from './createServiceTokenResponse';\nexport * from './errorResponse';\nexport * from './exchangeFederatedIdentityRequest';\nexport * from './federatedAuthenticationResultDto';\nexport * from './federatedExchangeResponse';\nexport * from './federatedIdentityListResponse';\nexport * from './federatedIdentityResponse';\nexport * from './federatedIdentityResponseDto';\nexport * from './federatedProviderListResponse';\nexport * from './federatedProviderResponse';\nexport * from './federatedProviderResponseDto';\nexport * from './filtriUtente';\nexport * from './getFiltriResponse';\nexport * from './getFiltriUtenteParams';\nexport * from './getFiltriUtenteResponse';\nexport * from './getGroupsWithMenusParams';\nexport * from './getGroupsWithMenusResponse';\nexport * from './getMenuScopesResponse';\nexport * from './getMenuTypesResponse';\nexport * from './getMenusParams';\nexport * from './getMenusResponse';\nexport * from './getRolesResponse';\nexport * from './getSchemaResponse';\nexport * from './getScopesResponse';\nexport * from './getServiceTokensParams';\nexport * from './getServiceTokensResponse';\nexport * from './getUserByTokenRequest';\nexport * from './getUserByTokenResponse';\nexport * from './getUserRolesAndGrantsParams';\nexport * from './getUsersParams';\nexport * from './getUsersResponse';\nexport * from './getUsersResult';\nexport * from './getUsersResultExtensionFields';\nexport * from './groupWithMenusEntity';\nexport * from './introspectAccessiTokenRequest';\nexport * from './introspectAccessiTokenResponse';\nexport * from './issuedServiceTokenDto';\nexport * from './loginAsRequest';\nexport * from './loginAsResponse';\nexport * from './loginAsResult';\nexport * from './loginRequest';\nexport * from './loginResponse';\nexport * from './loginResult';\nexport * from './loginResultExtensionFields';\nexport * from './loginResultPasswordRequired';\nexport * from './menuEntity';\nexport * from './menuTypeEntity';\nexport * from './passwordExpiredResponse';\nexport * from './permission';\nexport * from './publicRegisterRequest';\nexport * from './refreshTokenRequest';\nexport * from './refreshTokenResponse';\nexport * from './refreshTokenResult';\nexport * from './registerRequest';\nexport * from './registerResponse';\nexport * from './resendTwoFactorRequest';\nexport * from './role';\nexport * from './ruoliMenu';\nexport * from './ruoliMenuTipoAbilitazione';\nexport * from './schemaDdlResult';\nexport * from './schemaDdlSection';\nexport * from './scopeEntity';\nexport * from './sendResetPasswordEmailRequest';\nexport * from './serveResetPasswordPageParams';\nexport * from './serviceTokenDto';\nexport * from './setMenuScopesRequest';\nexport * from './setPasswordLoginPolicyRequest';\nexport * from './setScopeMenusRequest';\nexport * from './setStatoRegistrazioneDto';\nexport * from './setStatoRegistrazioneDtoStatoRegistrazione';\nexport * from './setUserPasswordRequest';\nexport * from './status';\nexport * from './tipoFiltro';\nexport * from './tipoFiltroFlgEnabled';\nexport * from './tokenResult';\nexport * from './tokenResultType';\nexport * from './twoFactorChallengeDto';\nexport * from './twoFactorChallengeDtoMethod';\nexport * from './twoFactorChallengeDtoTwoFactorRequired';\nexport * from './updateEnabledStatusRequest';\nexport * from './updateFederatedIdentityRequest';\nexport * from './updateFederatedProviderRequest';\nexport * from './updateFilterTypeRequest';\nexport * from './updateFilterTypeRequestFlgEnabled';\nexport * from './updateMenuGroupRequest';\nexport * from './updateMenuRequest';\nexport * from './updateMenuTypeRequest';\nexport * from './updateScopeRequest';\nexport * from './userDto';\nexport * from './userDtoStatoRegistrazione';\nexport * from './userGrantsDto';\nexport * from './userGrantsResponse';\nexport * from './verifyTwoFactorRequest';"]}
@@ -23,6 +23,8 @@ export interface LoginResult {
23
23
  filtri?: FiltriUtente[] | null;
24
24
  /** Il primo passo email richiede ora la password. Nessun utente o token viene restituito. */
25
25
  passwordRequired?: LoginResultPasswordRequired;
26
+ /** Refresh token, presente solo se jwtOptions.refreshExpiresIn e configurato. */
27
+ refreshToken?: TokenResult;
26
28
  /** Token, assente durante la verifica del codice. */
27
29
  token?: TokenResult;
28
30
  /** Abilitazioni e ruoli utente */
@@ -1 +1 @@
1
- {"version":3,"file":"loginResult.js","sourceRoot":"","sources":["../../../../../src/accessi-module/Console/generated/model/loginResult.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\nimport type { TwoFactorChallengeDto } from './twoFactorChallengeDto';\nimport type { LoginResultExtensionFields } from './loginResultExtensionFields';\nimport type { FiltriUtente } from './filtriUtente';\nimport type { LoginResultPasswordRequired } from './loginResultPasswordRequired';\nimport type { TokenResult } from './tokenResult';\nimport type { UserGrantsDto } from './userGrantsDto';\nimport type { UserDto } from './userDto';\n\nexport interface LoginResult {\n /** Presente solo quando serve il codice. Profilo, grant e token sono assenti fino alla verifica. */\n challenge?: TwoFactorChallengeDto;\n /** Extension Fields */\n extensionFields?: LoginResultExtensionFields;\n /**\n * Filtri utente\n * @nullable\n */\n filtri?: FiltriUtente[] | null;\n /** Il primo passo email richiede ora la password. Nessun utente o token viene restituito. */\n passwordRequired?: LoginResultPasswordRequired;\n /** Token, assente durante la verifica del codice. */\n token?: TokenResult;\n /** Abilitazioni e ruoli utente */\n userGrants?: UserGrantsDto;\n /** Dati utente, presenti solo al completamento del login. */\n utente?: UserDto;\n}\n"]}
1
+ {"version":3,"file":"loginResult.js","sourceRoot":"","sources":["../../../../../src/accessi-module/Console/generated/model/loginResult.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\nimport type { TwoFactorChallengeDto } from './twoFactorChallengeDto';\nimport type { LoginResultExtensionFields } from './loginResultExtensionFields';\nimport type { FiltriUtente } from './filtriUtente';\nimport type { LoginResultPasswordRequired } from './loginResultPasswordRequired';\nimport type { TokenResult } from './tokenResult';\nimport type { UserGrantsDto } from './userGrantsDto';\nimport type { UserDto } from './userDto';\n\nexport interface LoginResult {\n /** Presente solo quando serve il codice. Profilo, grant e token sono assenti fino alla verifica. */\n challenge?: TwoFactorChallengeDto;\n /** Extension Fields */\n extensionFields?: LoginResultExtensionFields;\n /**\n * Filtri utente\n * @nullable\n */\n filtri?: FiltriUtente[] | null;\n /** Il primo passo email richiede ora la password. Nessun utente o token viene restituito. */\n passwordRequired?: LoginResultPasswordRequired;\n /** Refresh token, presente solo se jwtOptions.refreshExpiresIn e configurato. */\n refreshToken?: TokenResult;\n /** Token, assente durante la verifica del codice. */\n token?: TokenResult;\n /** Abilitazioni e ruoli utente */\n userGrants?: UserGrantsDto;\n /** Dati utente, presenti solo al completamento del login. */\n utente?: UserDto;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Generated by orval v6.31.0 🍺
3
+ * Do not edit manually.
4
+ * Accessi API
5
+ * OpenAPI spec version: 1.0
6
+ */
7
+ export interface RefreshTokenRequest {
8
+ /** Refresh token emesso al login, 2FA o SSO. */
9
+ refreshToken: string;
10
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Generated by orval v6.31.0 🍺
4
+ * Do not edit manually.
5
+ * Accessi API
6
+ * OpenAPI spec version: 1.0
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=refreshTokenRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refreshTokenRequest.js","sourceRoot":"","sources":["../../../../../src/accessi-module/Console/generated/model/refreshTokenRequest.ts"],"names":[],"mappings":";AAAA;;;;;GAKG","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\n\nexport interface RefreshTokenRequest {\n /** Refresh token emesso al login, 2FA o SSO. */\n refreshToken: string;\n}\n"]}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Generated by orval v6.31.0 🍺
3
+ * Do not edit manually.
4
+ * Accessi API
5
+ * OpenAPI spec version: 1.0
6
+ */
7
+ import type { RefreshTokenResult } from './refreshTokenResult';
8
+ import type { Status } from './status';
9
+ export interface RefreshTokenResponse {
10
+ /** Messaggio informativo restituito dalla libreria quando presente. */
11
+ Message?: string;
12
+ Result: RefreshTokenResult;
13
+ Status: Status;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=refreshTokenResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refreshTokenResponse.js","sourceRoot":"","sources":["../../../../../src/accessi-module/Console/generated/model/refreshTokenResponse.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\nimport type { RefreshTokenResult } from './refreshTokenResult';\nimport type { Status } from './status';\n\nexport interface RefreshTokenResponse {\n /** Messaggio informativo restituito dalla libreria quando presente. */\n Message?: string;\n Result: RefreshTokenResult;\n Status: Status;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Generated by orval v6.31.0 🍺
3
+ * Do not edit manually.
4
+ * Accessi API
5
+ * OpenAPI spec version: 1.0
6
+ */
7
+ import type { TokenResult } from './tokenResult';
8
+ export interface RefreshTokenResult {
9
+ /** Nuovo refresh token, se abilitato. */
10
+ refreshToken?: TokenResult;
11
+ /** Nuovo access token. */
12
+ token: TokenResult;
13
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=refreshTokenResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refreshTokenResult.js","sourceRoot":"","sources":["../../../../../src/accessi-module/Console/generated/model/refreshTokenResult.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\nimport type { TokenResult } from './tokenResult';\n\nexport interface RefreshTokenResult {\n /** Nuovo refresh token, se abilitato. */\n refreshToken?: TokenResult;\n /** Nuovo access token. */\n token: TokenResult;\n}\n"]}
@@ -140,6 +140,7 @@ exports.WIKI_SECTIONS = [
140
140
  ['accessi/ui', 'Percorsi degli asset Web Component frameworkless.', 'no'],
141
141
  ]),
142
142
  p(`Topologia consigliata: un solo Accessi Service possiede database, encryptionKey, SMTP, chiavi JWT e console. Gli altri backend usano resource-server e client, senza credenziali del database Accessi.`),
143
+ p(`Per avviare Accessi come servizio autonomo usare startAccessiService: espone /health/live, /health/ready, /health/metrics, valida la configurazione e gestisce SIGTERM/SIGINT.`),
143
144
  good('ts', [
144
145
  "// Backend che ospita Accessi",
145
146
  "import { initializeAccessiModule } from 'emilsoftware-utilities/accessi/server';",
@@ -171,17 +172,23 @@ exports.WIKI_SECTIONS = [
171
172
  ['passwordExpirationDays', 'number', 'no', 'Valore predefinito: 90 giorni.'],
172
173
  ['legacyPasswordMigrationOnStartup', 'boolean', 'no', 'Predefinito true: converte le password legacy.'],
173
174
  ['autoUpdateDatabase', 'boolean', 'no', 'Predefinito true: riconcilia lo schema al boot.'],
174
- ['jwtOptions', '{ secret, expiresIn, algorithm, issuer, audience, privateKey, publicKey, keyId }', 'sì', 'Firma e durata JWT. Default HS256; RS/ES consigliati per resource server multi-servizio.'],
175
+ ['jwtOptions', '{ secret, expiresIn, refreshExpiresIn, algorithm, issuer, audience, privateKey, publicKey, keyId, jwksPath, previousPublicKeys }', 'sì', 'Firma, durata, refresh token e JWKS. Default HS256; RS/ES consigliati per resource server multi-servizio.'],
175
176
  ['emailOptions', 'EmailOptions', 'sì', 'SMTP per reset e codici email.'],
176
- ['publicAuthRateLimit', 'PublicAuthRateLimitOptions', 'no', 'Limiti in-memory sugli endpoint pubblici.'],
177
+ ['publicAuthRateLimit', 'PublicAuthRateLimitOptions', 'no', 'Limiti per endpoint pubblici; store condiviso opzionale (Redis) per il cluster.'],
178
+ ['edgeRateLimit', 'AccessiEdgeRateLimitOptions', 'no', 'Limite grossolano per IP davanti alle rotte Accessi; opzionale, store condiviso supportato.'],
179
+ ['http', '{ cors, trustProxy, securityHeaders }', 'no', 'CORS, IP reali dietro proxy e header di sicurezza del servizio.'],
177
180
  ['publicRegistration', '{ enabled }', 'no', 'Registrazione pubblica: disattivata per impostazione predefinita.'],
178
181
  ['federatedAuthentication', 'FederatedAuthenticationOptions', 'no', `Abilita l'SSO generico.`],
179
182
  ['extensionFieldsOptions', 'ExtensionFieldsOptions[]', 'no', 'Tabelle esterne allegate al profilo.'],
180
- ['serviceTokens', '{ enabled, defaultTtlDays }', 'no', 'Token macchina-a-macchina, abilitati per impostazione predefinita.'],
183
+ ['serviceTokens', '{ enabled, defaultTtlDays, rateLimitStore }', 'no', 'Token macchina-a-macchina, abilitati per impostazione predefinita; rate limit condiviso opzionale.'],
181
184
  ['catalogScripts', '{ enabled, folder, ... }', 'no', 'Catalog migrations SQL eseguite dopo la riconciliazione dello schema.'],
182
185
  ['adminBootstrap', '{ enabled, superUser }', 'no', 'Token casuale a ogni avvio per creare il primo admin dalla console.'],
183
186
  ['publicBaseUrl', 'string', 'no', 'Base URL usata solo per loggare console/OpenAPI/API.'],
187
+ ['consoleApiBaseUrl', 'string', 'no', 'Base URL API per la console quando UI e API sono su domini diversi.'],
184
188
  ['openapi', 'OpenApiSetupOptions', 'no', 'Path, titolo, descrizione e enabled della documentazione OpenAPI. Default invariati.'],
189
+ ['consoleEntry', '{ ttlMs, store }', 'no', 'TTL e store condiviso dei ticket console (Redis per multi-istanza). Default in memoria.'],
190
+ ['sessionRevocation', '{ enabled, store, ttlMs }', 'no', 'Revoca sessioni per utente tramite store memory/Redis; abilita POST /api/accessi/auth/revoke-sessions.'],
191
+ ['refreshTokenRotation', '{ enabled, store }', 'no', 'Refresh token monouso tramite store memory/Redis; consigliato in multi-istanza.'],
185
192
  ['logger', 'LoggerService', 'no', 'Logger Nest del sotto-app; se assente Nest usa il proprio logger.'],
186
193
  ['bufferLogs', 'boolean', 'no', 'Buffer dei log di bootstrap del sotto-app. Default true.'],
187
194
  ]),
@@ -430,6 +437,8 @@ exports.WIKI_SECTIONS = [
430
437
  ]),
431
438
  note('warn', `Fail closed`, `Se introspection e configurata ma non raggiungibile, il resource server risponde 503. Non autorizza la richiesta.`),
432
439
  note('info', `Introspection`, `POST /api/accessi/auth/introspect restituisce active=false per token invalido, scaduto o utente disabilitato. I risultati attivi sono cachati lato resource server per 30 secondi per default.`),
440
+ note('info', `JWKS`, `Con RS256/ES256 Accessi pubblica la JWKS su /accessi/.well-known/jwks.json (configurabile con jwtOptions.jwksPath). Il resource server puo usare jwks.url e ruotare le chiavi con previousPublicKeys.`),
441
+ note('info', `Audit`, `I fallimenti di autenticazione del resource server e i blocchi edge producono eventi strutturati tramite auditAccessi; i token e i segreti vengono redatti dal Logger.`),
433
442
  ],
434
443
  },
435
444
  // -------------------------------------------------------------------------
@@ -616,6 +625,7 @@ exports.WIKI_SECTIONS = [
616
625
  '}',
617
626
  'return res.json({ login: result.login, token: result.token });',
618
627
  ].join('\n'), 'Login SSO'),
628
+ note('info', `Scambio service-to-service`, `Se il backend fratello valida il provider SSO, può scambiare { provider, subject } con POST /api/accessi/federated-auth/exchange usando un service token con scope accessi:federated:exchange. Accessi non riceve il token del provider.`),
619
629
  h(`API amministrative (superutente)`),
620
630
  list([
621
631
  `GET/POST /api/accessi/federated-auth/providers, PATCH/DELETE providers/:provider`,
@@ -640,6 +650,8 @@ exports.WIKI_SECTIONS = [
640
650
  p(`Formato: st_<id>.<segreto> (segreto da 256 bit). Nel database si salva solo lo SHA-256 del segreto; il segreto è mostrato una sola volta. La verifica restituisce { tokenId, label, scopes }: nessun ruolo o grant.`),
641
651
  note('danger', `Non è un superutente`, `Un service token non apre le API Accessi: abilita solo le rotte della tua app che proteggi con ServiceTokenGuard.`),
642
652
  note('info', `Introspection`, `Per un backend fratello creare un service token con scope accessi:introspect e usarlo in POST /api/accessi/auth/introspect. Il resource server lo configura in introspection.serviceToken.`),
653
+ note('warn', `Rate limit condiviso`, `In cluster configurare serviceTokens.rateLimitStore e publicAuthRateLimit.store con createRedisRateLimitStore: i contatori in memoria valgono solo per singola istanza.`),
654
+ note('info', `Edge rate limit`, `Per una soglia grossolana per IP configurare edgeRateLimit: viene applicata davanti alle rotte Accessi. Il gateway/API gateway resta comunque consigliato per bot protection e limiti di connessione.`),
643
655
  good('ts', [
644
656
  "import { ServiceTokenGuard, RequireServiceTokenScopes } from 'emilsoftware-utilities';",
645
657
  '',
@@ -688,6 +700,7 @@ exports.WIKI_SECTIONS = [
688
700
  note('info', `Bootstrap admin`, `Con adminBootstrap.enabled il backend stampa a ogni avvio un token casuale (monouso, valido fino al riavvio). La sezione "Crea utente admin" nella schermata di login compare solo quando adminBootstrap è abilitato (stato esposto da GET /api/accessi/auth/bootstrap-admin/status): incolla il token e crea il primo admin senza email di conferma. La password è opzionale: se assente viene generata e mostrata una sola volta.`),
689
701
  note('ok', `Auto-ingresso dal frontend`, `Se un frontend ha già una sessione Accessi valida e l'utente è abilitato alla console, può aprire la console senza rifare il login: \`POST /api/accessi/console/entry\` con \`Authorization: Bearer <jwt>\` restituisce un ticket monouso; apri poi \`/api/accessi/console#entry=<ticket>\`. Il JWT non finisce mai nell'URL; il ticket dura 60 secondi ed è utilizzabile una sola volta (endpoint di scambio protetto da rate limit).`),
690
702
  note('info', `Console centralizzata`, `In una topologia multi-backend la console va ospitata una sola volta su Accessi Service. Gli altri backend possono linkarla con \`buildAccessiConsoleUrl\` di \`accessi/console\` oppure proxare \`/api/accessi/*\` sullo stesso dominio. Non copiare gli asset della console in ogni applicazione.`),
703
+ note('warn', `Ticket multi-istanza`, `I ticket di ingresso console sono in memoria per default. Con piu istanze configurare \`consoleEntry.store\` con \`createRedisConsoleEntryStore\`: il JWT viene cifrato e il consume e atomico.`),
691
704
  ],
692
705
  },
693
706
  // -------------------------------------------------------------------------