Commit Graph

154 Commits

Author SHA1 Message Date
Fredrik Adelöw 2f0519cba3 permission: cache user info and parallelize resolution
The permission backend previously resolved userInfo and minted a plugin
request token sequentially for every authorize request with user
credentials. On high-traffic endpoints this meant two serial internal
HTTP round-trips per request, even when the same user made many
requests in quick succession.

This change:

1. Adds a 5-second TTL cache to DefaultUserInfoService so that repeated
   getUserInfo() calls for the same user return the cached result
   without an HTTP call to the auth backend.

2. Parallelises the getUserInfo() and getPluginRequestToken() calls in
   the permission backend's handleRequest via Promise.all, saving one
   sequential round-trip on cache misses.

Signed-off-by: Fredrik Adelöw <freben@gmail.com>

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-16 17:39:50 +02:00
Gabriel Dugny 49171c9de4 chore: Update all imports to zod/v3
Signed-off-by: Gabriel Dugny <gabriel.dugny@believe.com>
2026-03-17 16:48:42 +01:00
Paul Schultz 161999e837 fix tsc issues
Signed-off-by: Paul Schultz <pschultz@pobox.com>
2025-10-14 08:29:22 -05:00
Fredrik Adelöw 3507fcdf89 Just some more circular dep cleanup
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2025-06-25 11:33:23 +02:00
Vincenzo Scamporlino 7853dac010 permission-backend: accept resourceRef as array
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2025-04-29 12:54:47 +02:00
Vincenzo Scamporlino f2cd66a162 permission: minor tweaks
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2025-04-29 12:54:47 +02:00
Vincenzo Scamporlino 4d4ec58d6b permission: batch apply conditions payload
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2025-04-29 12:54:47 +02:00
Patrik Oldsberg 876f2e1d16 permission-node: deprecate createPermisisonIntegrationRouter + docs fix
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-03-15 16:46:38 +01:00
Eric Peterson 22ace13d10 Remove backend-common from permission-node
Signed-off-by: Eric Peterson <ericpeterson@spotify.com>
2025-03-13 15:04:26 +01:00
Patrik Oldsberg 728e3e157d permission-node: fix type inference of createPermissionRule
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-02-25 13:41:44 +01:00
Patrik Oldsberg d1a4831725 permission-node: doc fixes
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-02-04 15:39:10 +01:00
Patrik Oldsberg 7500c99ecc permission-node: refactor PermissionRuleAccessor to PermissionRuleset
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-01-30 15:38:22 +01:00
Patrik Oldsberg ec07d0a579 permission-node: updated createPermissionRule to improve type inference
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-01-30 10:48:15 +01:00
Patrik Oldsberg 72cddf2971 packages/backend-plugin-api: updated PermissionsRegistryService to use rule accessors and resource refs
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-01-30 10:48:14 +01:00
Patrik Oldsberg b71f634e3b permission-node: added PermissionRuleAccessor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-01-30 10:05:02 +01:00
Patrik Oldsberg a9621deada permission-node: add PermissionResourceRef
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-01-30 10:05:01 +01:00
Patrik Oldsberg 088f289323 permission-node: update error message for missing permission rules
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-01-15 09:57:50 +01:00
Patrik Oldsberg 45e0c1d645 permissions: add support for adding permission rules separately from resource type
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-01-10 10:06:08 +01:00
Patrik Oldsberg 049d5d4676 permission-node: refactor integration router to be mutable
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2025-01-10 10:06:07 +01:00
Fredrik Adelöw d9d62ef90c remove usages of some backend-common helpers
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2024-12-21 20:39:23 +01:00
Vincenzo Scamporlino 0aa3dd7fd3 permission-node: remove permission duplicates in createPermissionIntegrationRouter
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2024-12-05 13:07:08 +01:00
Patrik Oldsberg 1780a67bc5 backend-plugin-api: remove identity and token manager services
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2024-08-21 21:36:43 +02:00
MT Lewis df784fe970 permissions: move MetadataResponse type to permission-common
This was missed when moving
MetadataResponseSerializedRule in
137fa342b4 - seems
useful to keep these two types together.

Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2024-07-31 14:06:48 +01:00
MT Lewis 5cd9878023 permission-node: re-export MetadataResponseSerializedRule from permission-common
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2024-07-28 14:15:50 +01:00
Patrik Oldsberg d6f6a99536 Merge pull request #25537 from adamdmharvey/ah-api-docs
chore: Improve API Reference documentation
2024-07-16 11:04:21 +02:00
Patrik Oldsberg c5ce79a14c Merge pull request #25569 from backstage/nbs10/rename-setup-request-handlers
[NBS 1.0]Rename `setupRequestMockHandlers` to `registerMswTestHooks`
2024-07-16 11:01:29 +02:00
Patrik Oldsberg 6e05fd4efe Merge pull request #25601 from backstage/rugvip/perm
backend-plugin-api: remove deprecated token option from PermissionsService
2024-07-15 20:38:57 +02:00
Patrik Oldsberg ed10fd202c permission-node: update policy handler to work with new auth system
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2024-07-12 14:28:24 +02:00
Patrik Oldsberg 36f91e8956 backend-plugin-api,permission-node: remove deprecated token option from permissions service
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2024-07-12 12:17:39 +02:00
Camila Belo b82aff92aa refactor(test-utils): deprecate the isDockerDisabledForTests function
Signed-off-by: Camila Belo <camilaibs@gmail.com>
2024-07-10 17:06:00 +02:00
Camila Belo 95a3a0b91c refactor(test-utils): rename setupRequestMockHandlers to setupMswHandler
Signed-off-by: Camila Belo <camilaibs@gmail.com>
2024-07-10 15:45:49 +02:00
Adam Harvey c3837fb3fc chore: Fix invalid API docs cross-reference
Signed-off-by: Adam Harvey <33203301+adamdmharvey@users.noreply.github.com>
2024-07-05 23:34:33 -04:00
Vincenzo Scamporlino 06051768bc permission-node: remove references from backend-common
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2024-05-24 13:53:27 +02:00
Fredrik Adelöw 0639b07aa1 refactor the client a bit
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2024-05-22 16:14:52 +02:00
Fredrik Adelöw b155d854bc skip the plugin id for permissions client
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2024-05-22 16:14:26 +02:00
Fredrik Adelöw 9e63318311 Implement the scope feature of external access service tokens, as per BEP-0007
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2024-05-22 16:14:24 +02:00
Camila Belo 737f3ae5ef Merge branch 'master' into camilaibs/nbs10-deprecate-legacy-system-commons
Signed-off-by: Camila Belo <camilaibs@gmail.com>
2024-05-21 15:12:02 +02:00
Camila Belo 3bd04bb3ac reafactor: deprecate legacy handlers and context
Signed-off-by: Camila Belo <camilaibs@gmail.com>
2024-05-21 08:28:17 +02:00
Camila Belo eb34b87d5a refactor: stop using getVoidLogger in tests
Signed-off-by: Camila Belo <camilaibs@gmail.com>
2024-05-16 09:21:54 +02:00
Vincenzo Scamporlino 3c3fafb5cb permission-node: fix target plugin id
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2024-04-10 11:50:07 +02:00
Fredrik Adelöw f3e2e86c33 fix permissions being overwritten by the unprocessed entities module
Co-authored-by: Vincenzo Scamporlino <vincenzos@spotify.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2024-03-22 11:41:57 +01:00
Patrik Oldsberg 5c3720a228 permission-node: assert user credentials forwarding in ServerPermissionClient
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2024-02-23 15:22:46 +01:00
Patrik Oldsberg 16b23eddd3 permission-node: added tests for ServerPermissionClient with credentials
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2024-02-23 15:12:18 +01:00
Patrik Oldsberg 6c06f99ba6 permission-node: refactor to true private fields for ServerPermissionClient
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2024-02-23 15:11:40 +01:00
Patrik Oldsberg 0502d826a5 permissions: migrate to new auth system and accept credentials
Co-authored-by: Fredrik Adelöw <freben@gmail.com>
Co-authored-by: Carl-Erik Bergström <cbergstrom@spotify.com>
Co-authored-by: blam <ben@blam.sh>
Co-authored-by: Camila Belo <camilaibs@gmail.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2024-02-23 10:15:02 +01:00
Patrik Oldsberg 16685cf8a2 Merge pull request #17077 from backstage/permission-router-options-array
createPermissionIntegrationRouter: accept an array of options
2023-04-25 10:37:18 +02:00
Vincenzo Scamporlino 7996d8900b permission-node: improve naming
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2023-04-13 21:02:40 +02:00
Vincenzo Scamporlino 4dd6bbe59e permission-node: add support for extra permissions
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2023-04-12 17:13:52 +02:00
Vincenzo Scamporlino 2c837e99a3 permission-node: add example to changeset
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2023-04-12 11:51:14 +02:00
Vincenzo Scamporlino b947f4230d permission-node: improve typings
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
2023-04-12 11:39:08 +02:00