flowchart TD
A[Extension_1] -->|Operation Request| B(Core)
B --> | Redirect to ServiceAccountManager | C(Core ServiceAccountManager)
C --> | getServiceAccountAuth<accountId> | D(Security Plugin)
D -->| checkServiceAccount<accountId> | E(InternalUsersStorage)
E --> | if !serviceAccountExists<accountId> OR !accountIsEnabled<accountId> | G(Return unauthorized response)
E --> | if serviceAccountExists<accountId> AND accountIsEnabled<accountId> | F(Token Generator)
F --> |Return auth token to core| C
G --> |Return unauthorized response to core| C
C --> | Forward response | B
B --> | Forward response | A
flowchart TD A[Extension_1] -->|Operation Request| B(Core) B --> | Redirect to ServiceAccountManager | C(Core ServiceAccountManager) C --> | getServiceAccountAuth<accountId> | D(Security Plugin) D -->| checkServiceAccount<accountId> | E(InternalUsersStorage) E --> | if !serviceAccountExists<accountId> OR !accountIsEnabled<accountId> | G(Return unauthorized response) E --> | if serviceAccountExists<accountId> AND accountIsEnabled<accountId> | F(Token Generator) F --> |Return auth token to core| C G --> |Return unauthorized response to core| C C --> | Forward response | B B --> | Forward response | AsequenceDiagram title: Extension_1 Authorization Sequence Extension_1 -> Core : Operation Request Core -> Core ServiceAccountManager : Redirect to ServiceAccountManager Core ServiceAccountManager -> Security Plugin : getServiceAccountAuth<accountId> Security Plugin -> InternalUsersStorage : checkServiceAccount<accountId> InternalUsersStorage --> Core : Return unauthorized response InternalUsersStorage -> Token Generator : alt serviceAccountExists<accountId> AND accountIsEnabled<accountId> Token Generator -> Core ServiceAccountManager : Return auth token to core else !serviceAccountExists<accountId> OR !accountIsEnabled<accountId> Token Generator --> Core : Return unauthorized response end Core ServiceAccountManager -> Core : Forward response Core -> Extension_1 : Forward response