Guida rapida all'autenticazione Shell
Introduzione
L'API di autenticazione Shell consente alle applicazioni dei partner di autenticarsi con l'API Gateway utilizzando il flusso delle credenziali client OAuth 2.0. Questa API fornisce token di accesso a durata limitata che autorizzano le richieste alle API di Shell, garantendo una comunicazione sicura tra l’applicazione dell’utente e i servizi di Shell.
| Vantaggi | Descrizione |
|---|---|
| Accesso sicuro | Standard OAuth 2.0 con token a durata limitata |
| Integrazione semplice | Endpoint unico per la generazione dei token |
| Ambienti flessibili | Supporto sia per gli ambienti di test che per quelli di produzione |
Autenticazione
Nota sulla migrazione
Questa API fornisce sia la versione v1 che la v2 dell’endpoint del token OAuth. La versione 1 è deprecata e verrà rimossa in una delle prossime finestre di aggiornamento. Le nuove integrazioni dovrebbero utilizzare la v2, mentre gli utenti esistenti dovrebbero migrare alla v2 il prima possibile. Le differenze principali riguardano il formato della risposta: la v2 utilizza nomi di campo OAuth standard (expires_in invece di expires_in(seconds) e Bearer invece di BearerToken).
Flusso di autorizzazione
- Richiesta di ID cliente e segreto
Contatta il team dell’API Shell per richiedere l’accesso all’autenticazione OAuth. Il team dell’API Shell fornirà un ID cliente e un segreto.
- Richiedere il token Bearer
Una volta ottenute le credenziali, inviare una richiesta all’endpoint del token OAuth dell’API di autenticazione Shell utilizzando le proprie credenziali.
Esempio di richiesta:
curl --location --request POST 'https://api-test.shell.com/v2/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=**************' \
--data-urlencode 'client_secret=**************' \
--data-urlencode 'grant_type=client_credentials'Nella risposta riceverai un token Bearer:
{
"access_token": "**************",
"expires_in": "899",
"token_type": "Bearer"
}Nota: il tempo di scadenza del token Bearer è indicato in secondi.
- Autorizza le richieste API
Quando chiami le API di Shell, includi quanto segue nell’intestazione della richiesta.
Authorization: Bearer access_tokenURL di base
| Ambiente | URL |
|---|---|
| Test | https://api-test.shell.com |
| Produzione | https://api.shell.com |
Integrazione di base
1. Genera token OAuth
Descrizione: Richiedi un token di accesso OAuth utilizzando le credenziali del tuo client. L’API restituisce un token Bearer a durata limitata che deve essere incluso nell’intestazione Authorization di tutte le successive richieste API. Per motivi di sicurezza, viene utilizzato il metodo POST anziché GET per impedire la memorizzazione nella cache.
Percorso: POST /v2/oauth/token
Richiesta di esempio
curl --location --request POST 'https://api-test.shell.com/v2/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=twuwywTYUHAH6AHHJ' \
--data-urlencode 'client_secret=yuahaYThdvdowoUUU7wjsjMM' \
--data-urlencode 'grant_type=client_credentials'Parametri della richiesta
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| client_id | stringa | Sì | ID cliente fornito da Shell |
| client_secret | stringa | Sì | Segreto cliente fornito da Shell |
| grant_type | stringa | Sì | Valore del tipo di autorizzazione per l’accesso (utilizzare "client_credentials") |
Risposta di esempio
{
"access_token": "NiE3gzPNVFpwYYMyyWu6mGFYtKN5",
"expires_in": "899",
"token_type": "Bearer"
}Parametri della risposta
| Parametro | Tipo | Descrizione |
|---|---|---|
| access_token | stringa | Token di accesso generato da utilizzare nelle richieste API |
| expires_in | stringa | Durata di validità in secondi |
| token_type | stringa | Tipo di token (Bearer) |
Gestione degli errori
L’API utilizza i codici di stato HTTP standard. In caso di errore, ulteriori dettagli saranno forniti nel corpo della risposta.
| Codice di errore | Descrizione | Soluzione |
|---|---|---|
| 400 | Richiesta non valida - La richiesta presenta una sintassi errata o non può essere evasa | Verificare che tutti i parametri richiesti siano inclusi e formattati correttamente |
| 401 | ID client non valido - Manca l’intestazione di autorizzazione o le credenziali non sono valide | Verifica che il tuo client_id e il client_secret siano corretti e codificati correttamente |
| 403 | Accesso negato - Il client non dispone dei diritti di accesso | Contatta il team Shell API per verificare le tue autorizzazioni di accesso |
| 404 | Non trovato - Impossibile identificare il proxy per l’URL richiesto | Verifica che l’URL dell’endpoint sia corretto per il tuo ambiente |
| 405 | Metodo non consentito - Il metodo HTTP non è supportato per questa risorsa | Assicurati di utilizzare il metodo POST per l’endpoint del token |
| 500 | Errore interno del server - Esecuzione non riuscita sul server | Riprovare la richiesta; contattare l’assistenza Shell se il problema persiste |
