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à.
Il contesto è l'informazione rilevante per le decisioni politiche, ma non fa parte dell'identità del responsabile, dell'azione o della risorsa. Le rivendicazioni dei token di accesso sono contestuali. Potresti voler consentire un'azione solo da un insieme di indirizzi IP di origine o solo se l'utente ha effettuato l'accesso con MFA. L'applicazione ha accesso a questi dati contestuali della sessione e deve inserirli nelle richieste di autorizzazione. I dati di contesto in una richiesta di autorizzazione Verified Permissions devono essere in formato JSON in un elemento. contextMap
Gli esempi che illustrano questo contenuto provengono da un esempio di policy store. A seguire, create il policy store DigitalPetStoredi esempio nel vostro ambiente di test.
Il seguente oggetto di contesto dichiara uno di ogni tipo di dati Cedar per un'applicazione basata sul DigitalPetStorepolicy store di esempio.
"context": {
"contextMap": {
"MfaAuthorized": {
"boolean": true
},
"AccountCodes": {
"set": [
{
"long": 111122223333
},
{
"long": 444455556666
},
{
"long": 123456789012
}
]
},
"UserAgent": {
"string": "My UserAgent 1.12"
},
"RequestedOrderCount": {
"long": 4
},
"NetworkInfo": {
"record": {
"IPAddress": {
"string": "192.0.2.178"
},
"Country": {
"string": "United States of America"
},
"SSL": {
"boolean": true
}
}
},
"approvedBy": {
"entityIdentifier": {
"entityId": "Bob",
"entityType": "DigitalPetStore::User"
}
}
}
}
Tipi di dati nel contesto di autorizzazione
- Booleano
-
Un binario
true
o unfalse
valore. Nell'esempio, il valore booleanotrue
forMfaAuthenticated
indica che il cliente ha eseguito l'autenticazione a più fattori prima di richiedere la visualizzazione del proprio ordine. - Imposta
-
Una raccolta di elementi contestuali. I membri del set possono essere tutti dello stesso tipo, come in questo esempio, o di tipi diversi, incluso un set annidato. Nell'esempio, il cliente è associato a 3 account diversi.
- Stringa
-
Una sequenza di lettere, numeri o simboli, racchiusa tra
"
caratteri. Nell'esempio, laUserAgent
stringa rappresenta il browser utilizzato dal cliente per richiedere la visualizzazione dell'ordine. - Long
-
Come un intero, Nell'esempio,
RequestedOrderCount
indica che questa richiesta fa parte di un batch generato dalla richiesta del cliente di visualizzare quattro dei suoi ordini precedenti. - Registra
-
Una raccolta di attributi. È necessario dichiarare questi attributi nel contesto della richiesta. Un archivio di politiche con uno schema deve includere questa entità e gli attributi dell'entità nello schema. Nell'esempio, il
NetworkInfo
record contiene informazioni sull'IP di origine dell'utente, sulla geolocalizzazione di tale IP determinata dal client e sulla crittografia in transito. - EntityIdentifier
-
Un riferimento a un'entità e agli attributi dichiarati nell'
entities
elemento della richiesta. Nell'esempio, l'ordine dell'utente è stato approvato dal dipendenteBob
.
Per testare questo contesto di esempio nell'DigitalPetStoreapp di esempio, è necessario aggiornare la richiestaentities
, lo schema del policy store e la politica statica con la descrizione Customer Role - Get Order.
Modifica DigitalPetStore per accettare il contesto di autorizzazione
Inizialmente, non DigitalPetStoreè un archivio di policy molto complesso. Non include politiche o attributi di contesto preconfigurati per supportare il contesto che abbiamo presentato. Per valutare un esempio di richiesta di autorizzazione con queste informazioni di contesto, apporta le seguenti modifiche al tuo archivio delle politiche e alla tua richiesta di autorizzazione. Per esempi di contesto con informazioni sul token di accesso come contesto, vedereMappatura dei token di accesso.
Applica i seguenti aggiornamenti allo schema del tuo policy store per supportare i nuovi attributi di contesto. GetOrder
Effettua l'aggiornamento actions
come segue.
"GetOrder": {
"memberOf": [],
"appliesTo": {
"resourceTypes": [
"Order"
],
"context": {
"type": "Record",
"attributes": {
"UserAgent": {
"required": true,
"type": "String"
},
"approvedBy": {
"name": "User",
"required": true,
"type": "Entity"
},
"AccountCodes": {
"type": "Set",
"required": true,
"element": {
"type": "Long"
}
},
"RequestedOrderCount": {
"type": "Long",
"required": true
},
"MfaAuthorized": {
"type": "Boolean",
"required": true
}
}
},
"principalTypes": [
"User"
]
}
}
Per fare riferimento al tipo di record
dati indicato NetworkInfo
nel contesto della richiesta, create un costrutto CommonTypecommonType
costrutto è un insieme condiviso di attributi che puoi applicare a diverse entità.
Nota
L'editor visivo dello schema delle autorizzazioni verificate attualmente non supporta commonType
i costrutti. Quando li aggiungi allo schema, non puoi più visualizzarlo in modalità visiva.
"commonTypes": {
"NetworkInfo": {
"attributes": {
"IPAddress": {
"type": "String",
"required": true
},
"SSL": {
"required": true,
"type": "Boolean"
},
"Country": {
"required": true,
"type": "String"
}
},
"type": "Record"
}
}