È possibile automatizzare l'accesso delle applicazioni di terze parti a VMware Cloud Director utilizzando gli account di servizio.
Condivisione
A partire da VMware Cloud Director 10.4.1, se si desidera limitare le informazioni sull'account di servizio che gli utenti possono visualizzare, è possibile concedere a determinati ruoli solo il diritto Visualizzazione account di servizio limitata. Quando un utente con il diritto Visualizzazione account di servizio limitata effettua una richiesta GET per l'account di servizio, softwareId
, softwareVersion
, uri
e status
dell'account di servizio vengono visualizzati come null
nella risposta.
Implementazione
Per fornire l'accesso automatico a VMware Cloud Director, gli account di servizio utilizzano i token API. Gli account di servizio vengono utilizzati solo per l'accesso basato su API. Quando si concede l'accesso a un account di servizio, l'applicazione client autenticata riceve il token API, ovvero un token di aggiornamento OAuth, e un token di accesso, che rappresenta la prima sessione di VMware Cloud Director, per l'uso immediato. Le applicazioni richiedono i token API per l'autenticazione con VMware Cloud Director. I token di accesso sono token di sessione di VMware Cloud Director (token JWT), che le applicazioni utilizzano per creare richieste API tramite l'account di servizio. Gli account di servizio per le applicazioni utilizzano i token API e hanno quindi le stesse limitazioni dei token API dell'utente in VMware Cloud Director.
Agli account di servizio viene concesso l'accesso utilizzando "Richiedi autorizzazione dell'account di servizio". Ciò garantisce che solo l'applicazione che deve utilizzare il token abbia l'accesso esclusivo al token e possa usarlo. Nessun altro utente può accedere al token. Un amministratore può gestire l'accesso all'account di servizio. Tuttavia, anche gli amministratori non possono accedere al token effettivo che concede l'accesso. VMware Cloud Director fornisce il token solo all'account di servizio. A tale scopo, VMware Cloud Director utilizza uno standard noto. Per assicurarsi di essere sincronizzati con l'applicazione a cui si concede il token tramite la concessione e la trasmissione del token, è possibile avviare il processo di concessione del token API solo conoscendo il codice utente per l'applicazione.
A differenza dei token API dell'utente, i token API concessi agli account di servizio vengono ruotati a ogni utilizzo, in base a RFC 6749 sezione 6. I token API dell'account di servizio inutilizzati non scadono mai a meno che non vengano revocati.
Gli account di servizio possono avere un solo ruolo. Nelle API conformi a OAuth, il ruolo viene comunicato tramite il campo dell'ambito come URN (Uniform Resource Name) con codifica URL con il nome del ruolo. Il formato URN è urn:vcloud:role:[roleName]
. Vedere RFC 8141 che descrive la codifica URN.
Stato | Descrizione |
---|---|
Creato | L'account si trova nello stato iniziale dopo la creazione. |
Richiesto | Sono presenti una o più richieste di accesso in sospeso avviate da un richiedente tramite una richiesta di autorizzazione del dispositivo. |
Concesso | Un amministratore ha concesso una richiesta in sospeso ed è in attesa del polling e del recupero del token API dell'account di servizio. |
Attivo | L'account di servizio ha recuperato il token API e può accedere a VMware Cloud Director utilizzando il token. |
Limitazioni
Poiché l'utilizzo degli account di servizio è riservato alle applicazioni di terze parti, gli account di servizio hanno alcune limitazioni.
- Eseguire attività di gestione degli utenti
- Creazione di token API
- Gestione di altri account di servizio
- Utente
- Gruppo
- Ruoli
- Ruoli globali
- Bundle di diritti
- Token: Gestisci
- Token: Gestisci tutto
Multisito
A partire da VMware Cloud Director 10.4.1, gli account di servizio possono gestire e monitorare più installazioni o gruppi di server di VMware Cloud Director distribuiti geograficamente e le relative organizzazioni come singole entità utilizzando la funzionalità multisito. Per ulteriori informazioni, vedere Configurazione e gestione di distribuzioni multisito. Se un account di servizio effettua una richiesta a un'organizzazione diversa da quella in cui è autenticato, verificare che l'account di servizio esista nell'organizzazione associata e che disponga dello stesso nome e ID software. È inoltre necessario includere un'intestazione X-VMWARE-VCLOUD-AUTH-CONTEXT che specifichi il nome dell'organizzazione che deve soddisfare la richiesta. Vedere le informazioni per la configurazione e la gestione delle distribuzioni multisito in Guida alla programmazione dell'API di VMware Cloud Director.
Creazione di un account di servizio tramite il VMware Cloud Director Service Provider Admin Portal
È possibile creare un account per l'accesso automatico a VMware Cloud Director utilizzando il Service Provider Admin Portal.
Procedura
risultati
Created
.
Esempio
È possibile creare un account di servizio anche utilizzando l'API di VMware Cloud Director. La richiesta API utilizza lo stesso endpoint API della creazione di un token API dell'utente ma la presenza del campo software_id
indica lo scopo di creare un account di servizio.
POST /oauth/provider/register Accept:application/json Content-Type:application/json Authorization:Bearer eyJhbGciOiJSUzI...7g7rA Body: { "client_name": "exampleServiceAccount", "software_id": "bc2528fd-35c4-44e5-a55d-62e5c4bd9c99", "scope": "urn:vcloud:role:System%20Administrator", "client_uri": "https://www.companyname.com", "software_version": "1.0" }
{ "client_name": "exampleServiceAccount", "client_id": "734e3845-1573-4f07-9b6c-b493c9042187", "grant_types": [ "urn:ietf:params:oauth:grant-type:device_code" ], "token_endpoint_auth_method": "none", "client_uri": "https://www.company_name.com", "software_id": "bc2528fd-35c4-44e5-a55d-62e5c4bd9c99", "software_version": "1.0", "scope": "urn:vcloud:role:System%20Administrator" }
Operazioni successive
Concessione dell'accesso a un account di servizio tramite il VMware Cloud Director Service Provider Admin Portal
Dopo aver creato un account di servizio, quando l'applicazione richiede l'autorizzazione a ricevere un token di accesso, è possibile concedere il token tramite VMware Cloud Director Service Provider Admin Portal.
Created
ed è necessario avviare di nuovo la procedura.
Prerequisiti
- Copiare l'ID client dai dettagli dell'account di servizio in Service Provider Admin Portal.
- Verificare che l'applicazione che richiede l'account crei una richiesta di concessione dell'autorizzazione del dispositivo OAuth 2.0 conforme a RFC all'endpoint dell'API https://site.cloud.example.com/oauth/provider/device_authorization. Per ulteriori informazioni sulle richieste di autorizzazione dei dispositivi, vedere RFC 8628 sezione 3.1.
Chiave Valore client_ID
Generated_Client_ID
Quando l'applicazione richiede l'accesso, lo stato dell'account di servizio in Service Provider Admin Portal diventa
Requested
. L'applicazione riceve il codice dispositivo, il codice utente e alcune informazioni aggiuntive.Richiesta di esempio:POST /oauth/provider/device_authorization Accept:application/json Content-Type: application/x-www-form-urlencoded Body: client_id=734e3845-1573-4f07-9b6c-b493c9042187
Risposta di esempio:{ "device_code": "tkhZ0uoUMy5xgjJqRJblIq3-g44xy2Ms6TEpv3Z_fKw", "user_code": "3VL8-SQVJ", "verification_uri": "https://[VCD]/provider/administration/access-control/service-accounts", "expires_in": 3600, "interval": 60 }
Il dispositivo deve eseguire il polling alla frequenza specificata nella risposta precedente (in secondi)
/oauth/provider/token
in base alla RFC. Il dispositivo deve utilizzare il codice del dispositivo finché non riceve i token da VMware Cloud Director o finché non si verifica il timeout della richiesta.Richiesta di esempio:POST: /oauth/provider/token Accept:application/json Content-Type: application/x-www-form-urlencoded Body: client_id= 734e3845-1573-4f07-9b6c-b493c9042187&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code&device_code=tkhZ0uoUMy5xgjJqRJblIq3-g44xy2Ms6TEpv3Z_fKw
Risposta di esempio prima della concessione:{ "error": "authorization_pending", "error_description": "Device authorization request pending", "error_uri": null, "minorErrorCode": "authorization_pending", "message": "Device authorization request pending", "stackTrace": null }
Risposta di esempio dopo la concessione:{ "access_token": "eyJhbGciOiJSU…HqJaDud1sVA", "token_type": "Bearer", "expires_in": 2592000, "refresh_token": "SsybukUed8SBP2p1AaFiGJhrntQNWZVX" }
Se non si conferma o si nega una richiesta di accesso, si verifica il timeout del codice utente. Il periodo di timeout viene visualizzato nella risposta alla richiesta di autorizzazione del dispositivo.
VMware Cloud Director concede all'applicazione un token API primario solo se l'applicazione e l'amministratore utilizzano il codice dispositivo e il codice utente corrispondenti tra loro.
- Recuperare il codice utente dall'applicazione. È necessario immettere il codice nel passaggio 4.
Procedura
risultati
Lo stato della richiesta di servizio diventa Granted
. VMware Cloud Director concede all'applicazione collegata all'account di servizio il token API primario sotto forma di token API. Come richiesto dalla RFC, nella risposta è incluso un token di accesso OAuth che rappresenta una sessione utente per l'uso immediato da parte dell'account di servizio. Se l'applicazione non utilizza immediatamente il token di accesso OAuth, si verifica il timeout della sessione in base al timeout di sessione inattiva configurato. L'account di servizio potrebbe anche disconnettersi esplicitamente, operazione consigliata non solo per motivi di sicurezza, ma anche perché offre l'esecuzione di un test ottimale per l'account di servizio per effettuare una chiamata API a VMware Cloud Director. Quando l'applicazione recupera il token API, lo stato diventa Active
.
Operazioni successive
- Per modificare l'ID software, la versione del software, l'URI client, le limitazioni di quota o il ruolo dell'account di servizio assegnato, selezionare un account di servizio e fare clic su Modifica account di servizio. Le modifiche diventano effettive al successivo aggiornamento del token.
- Per revocare l'accesso all'account di servizio in modo che il token API concesso diventi non valido, fare clic su Revoca. VMware Cloud Director termina tutte le sessioni attive. La revoca di un token API non comporta l'eliminazione dell'account di servizio, ma lo stato dell'account diventa
Created
. Se l'applicazione ha già richiesto nuovamente l'accesso, lo stato dell'account di servizio diventaRequested
. È necessario eseguire di nuovo la procedura per concedere l'accesso all'account di servizio affinché l'account diventiActive
.