Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Integrazione di Express con le autorizzazioni verificate di Amazon
L'integrazione Verified Permissions Express fornisce un approccio basato sul middleware per l'implementazione dell'autorizzazione nelle applicazioni Express.js. Con questa integrazione, puoi proteggere gli endpoint delle API utilizzando politiche di autorizzazione granulari senza modificare i gestori di route esistenti. L'integrazione gestisce automaticamente i controlli di autorizzazione intercettando le richieste, valutandole rispetto alle policy definite e garantendo che solo gli utenti autorizzati possano accedere alle risorse protette.
Questo argomento illustra la configurazione dell'integrazione Express, dalla creazione di un archivio di politiche all'implementazione e al test del middleware di autorizzazione. Seguendo questi passaggi, è possibile aggiungere solidi controlli di autorizzazione all'applicazione Express con modifiche minime al codice.
In questo argomento GitHub si fa riferimento ai seguenti repository:
-
cedar-policy/ authorization-for-expressjs
- Il middleware di autorizzazione Cedar per Express.js -
verifiedpermissions/ - I client di autorizzazione Verified Permissions authorization-clients-js
per JavaScript
Prerequisiti
Prima di implementare l'integrazione con Express, assicurati di avere:
-
Un AWS account con accesso alle autorizzazioni verificate
-
Un'applicazione Express.js
-
Un provider di identità OpenID Connect (OIDC) (come Amazon Cognito)
-
AWS CLIconfigurato con le autorizzazioni appropriate
Configurazione dell'integrazione
Fase 1: Creare un archivio delle politiche
Creare un archivio delle politiche utilizzando AWS CLI:
aws verifiedpermissions create-policy-store --validation-settings "mode=STRICT"
Nota
Salva l'ID dell'archivio delle politiche restituito nella risposta per utilizzarlo nei passaggi successivi.
Fase 2: Installare le dipendenze
Installa i pacchetti richiesti nella tua applicazione Express:
npm i --save @verifiedpermissions/authorization-clients-js npm i --save @cedar-policy/authorization-for-expressjs
Configurazione dell'autorizzazione
Passaggio 1: generare e caricare lo schema Cedar
Uno schema definisce il modello di autorizzazione per un'applicazione, inclusi i tipi di entità nell'applicazione e le azioni che gli utenti possono intraprendere. Si consiglia di definire uno spazio dei nomi per loYourNamespace
. Alleghi lo schema agli archivi dei criteri di autorizzazione verificata e, quando i criteri vengono aggiunti o modificati, il servizio li convalida automaticamente rispetto allo schema.
Il @cedar-policy/authorization-for-expressjs
pacchetto può analizzare le specifiche OpenAPI
Se non disponi di una specifica OpenAPI, puoi seguire le istruzioni rapide del express-openapi-generator
Genera uno schema dalla tua specifica OpenAPI:
npx @cedar-policy/authorization-for-expressjs generate-schema --api-spec schemas/openapi.json --namespace
YourNamespace
--mapping-type SimpleRest
Quindi, formatta lo schema Cedar da utilizzare con. AWS CLI Per ulteriori informazioni sul formato specifico richiesto, vedereSchema di archiviazione delle politiche di Amazon Verified Permissions. Se hai bisogno di aiuto per formattare lo schema, c'è uno script chiamato prepare-cedar-schema.sh
nel repository GitHubverifiedpermissions/examplesv2.cedarschema.forAVP.json
./scripts/prepare-cedar-schema.sh v2.cedarschema.json v2.cedarschema.forAVP.json
Carica lo schema formattato nel tuo policy store, sostituendolo policy-store-id
con il tuo ID del policy store:
aws verifiedpermissions put-schema \ --definition file://v2.cedarschema.forAVP.json \ --policy-store-id
policy-store-id
Fase 2: Creare politiche di autorizzazione
Se non è configurata alcuna politica, Cedar nega tutte le richieste di autorizzazione. L'integrazione del framework Express aiuta ad avviare questo processo generando politiche di esempio basate sullo schema generato in precedenza.
Quando si utilizza questa integrazione nelle applicazioni di produzione, si consiglia di creare nuove politiche utilizzando gli strumenti Infrastructure as a code (IaaC). Per ulteriori informazioni, consulta Creazione di risorse Amazon Verified Permissions con AWS CloudFormation.
Genera esempi di policy Cedar:
npx @cedar-policy/authorization-for-expressjs generate-policies --schema v2.cedarschema.json
Questo genererà politiche di esempio nella /policies
directory. È quindi possibile personalizzare queste politiche in base ai casi d'uso. Per esempio:
// Defines permitted administrator user group actions permit ( principal in YourNamespace::UserGroup::"<userPoolId>|administrator", action, resource ); // Defines permitted employee user group actions permit ( principal in YourNamespace::UserGroup::"<userPoolId>|employee", action in [YourNamespace::Action::"GET /resources", YourNamespace::Action::"POST /resources", YourNamespace::Action::"GET /resources/{resourceId}", YourNamespace::Action::"PUT /resources/{resourceId}"], resource );
Formatta le politiche da utilizzare con AWS CLI. Per ulteriori informazioni sul formato richiesto, consulta create-policy nel AWS CLI riferimento. Se hai bisogno di aiuto per formattare le politiche, c'è uno script chiamato convert_cedar_policies.sh
nel repository verifiedpermissions/examples.
./scripts/convert_cedar_policies.sh
Carica le politiche formattate in Autorizzazioni verificate, sostituendole policy_1.json
con il percorso e il nome del file delle politiche e policy-store-id
con l'ID del tuo archivio delle politiche:
aws verifiedpermissions create-policy \ --definition file://
policies/json/policy_1.json
\ --policy-store-idpolicy-store-id
Fase 3: Connect a un provider di identità
Per impostazione predefinita, il middleware Verified Permissions Authorizer legge un JSON Web Token (JWT) fornito nell'intestazione di autorizzazione della richiesta API per ottenere informazioni sull'utente. Le autorizzazioni verificate possono convalidare il token oltre a eseguire la valutazione della politica di autorizzazione.
Crea un file di configurazione dell'origine dell'identità denominato identity-source-configuration.txt
come segue con il tuo userPoolArn
e: clientId
{ "cognitoUserPoolConfiguration": { "userPoolArn": "
arn:aws:cognito-idp:region:account:userpool/pool-id
", "clientIds": ["client-id
"], "groupConfiguration": { "groupEntityType": "YourNamespace::UserGroup" } } }
Crea l'origine dell'identità eseguendo il AWS CLI comando seguente, sostituendolo policy-store-id
con il tuo Policy Store ID:
aws verifiedpermissions create-identity-source \ --configuration file://identity-source-configuration.txt \ --policy-store-id
policy-store-id
\ --principal-entity-type YourNamespace::User
Implementazione del middleware di autorizzazione
Aggiorna l'applicazione Express per includere il middleware di autorizzazione. In questo esempio utilizziamo token di identità, ma puoi anche utilizzare token di accesso. Per ulteriori informazioni, vedere authorization-for-expressjs
const { ExpressAuthorizationMiddleware } = require('@cedar-policy/authorization-for-expressjs'); const { AVPAuthorizationEngine } = require('@verifiedpermissions/authorization-clients'); const avpAuthorizationEngine = new AVPAuthorizationEngine({ policyStoreId: '
policy-store-id
', callType: 'identityToken' }); const expressAuthorization = new ExpressAuthorizationMiddleware({ schema: { type: 'jsonString', schema: fs.readFileSync(path.join(__dirname, '../v4.cedarschema.json'), 'utf8'), }, authorizationEngine: avpAuthorizationEngine, principalConfiguration: { type: 'identityToken' }, skippedEndpoints: [], logger: { debug: (s) => console.log(s), log: (s) => console.log(s), } }); // Add the middleware to your Express application app.use(expressAuthorization.middleware);
Test dell'integrazione
Puoi testare l'implementazione dell'autorizzazione effettuando richieste agli endpoint API con diversi token utente. Il middleware di autorizzazione valuterà automaticamente ogni richiesta rispetto alle politiche definite.
Ad esempio, se hai impostato diversi gruppi di utenti con autorizzazioni diverse:
-
Amministratori: accesso completo a tutte le risorse e le funzioni di gestione
-
Dipendenti: possono visualizzare, creare e aggiornare le risorse
-
Clienti: possono solo visualizzare le risorse
È possibile verificare che le politiche di autorizzazione funzionino come previsto accedendo con utenti diversi e tentando varie operazioni. Nel terminale dell'applicazione Express, è possibile visualizzare l'output del registro che fornisce ulteriori dettagli sulle decisioni di autorizzazione.
Risoluzione dei problemi
- In caso di errori di autorizzazione, prova quanto segue:
-
-
Verifica che il tuo Policy Store ID sia corretto
-
Assicurati che la tua fonte di identità sia configurata correttamente
-
Verifica che le tue politiche siano formattate correttamente
-
Verifica che i tuoi token JWT siano validi
-
Passaggi successivi
Dopo aver implementato l'integrazione di base, considera:
-
Implementazione di mappatori personalizzati per scenari di autorizzazione specifici
-
Configurazione del monitoraggio e della registrazione per le decisioni di autorizzazione
-
Creazione di politiche aggiuntive per diversi ruoli utente