Utilizzo dell'autenticazione basata su OAuth 2.0 per applicazioni client
OAuth (Open Authorization) 2.0 descrive diversi modi in cui il proprietario di una risorsa può concedere l'accesso alle sue risorse protette. IBM® Cloud Pak for Business Automation as a Service supporta solo il tipo di concessione ROPC (resource owner password credentials) per l'autenticazione dell'accesso delle applicazioni client all'ambiente cloud.
Tipo di concessione ROPC
In termini di OAuth 2.0 , le applicazioni client Cloud Pak for Business Automation as a Service sono client riservati. Per il tipo di concessione ROPC, richiedono una serie di credenziali client (costituite da un ID client e un segreto client) e un nome utente e password del proprietario della risorsa. Per ottenere credenziali client, utilizzare l'API Credentials per generarle. Per nome utente e password, accedi al portale cloud come amministratore dell'account, genera una serie di credenziali del servizio, quindi assegna loro le autorizzazioni richieste dall'applicazione client. Le autorizzazioni sono utilizzate per controllare l'accesso basato su token OAuth 2.0 agli ambienti cloud.
Per ulteriori informazioni su OAuth e sul tipo di sovvenzione ROPC, consultare il framework di autorizzazione OAuth 2.0
. Per informazioni sul Credentials API, vedere Esempio: Credenziali API REST per l'autenticazione basata su OAuth 2.0 e per ottenere le credenziali del servizio, vedere Creazione e gestione degli account di servizio.
Gestione delle credenziali client OAuth 2.0
I client OAuth 2.0 devono fornire le credenziali del client per identificare il contesto client chiamante. Si decide quante serie di credenziali sono necessarie. Ad esempio, è possibile utilizzare una serie per tutti i clienti OAuth 2.0 o disporre di una serie separata di credenziali per ogni client.
- Ottieni un token di accesso OAuth 2.0 .Utilizza l'endpoint OAuth 2.0 /token per acquisire un token di accesso che include il client (ID client e segreto client) e credenziali del servizio (nome utente e password). Ad esempio:
La chiamata restituisce il token di accesso da utilizzare nelle successive chiamate API delle operazioni cloud, un token di aggiornamento per aggiornare il token di accesso e una durata di scadenza per il token di accesso. Tieni presente che i token di accesso sono di solito validi per minuti o ore, mentre i token di aggiornamento possono essere validi per giorni. L'ambito non è supportato.curl -k -v -X POST -H 'content-type: application/x-www-form-urlencoded' -d grant_type=password -d client_id=<clientId> -d client_secret=<clientSecret> -d username=<serviceCredId> -d password=<svcCredSecret> https://www.bpm.ibmcloud.com/mga/sps/oauth/oauth20/token
Se la chiamata ha esito positivo, viene restituito il codice di risposta HTTP 201. Se le credenziali del client o del servizio non sono valide, la chiamata restituisce il codice di risposta HTTP{"access_token":"CJ7yDymDAfSRz03W7zdX","refresh_token":"fGAv2qzuLnM030Brs8KFaIuY1Kd2P87sLFXI85lH","scope":"","token_type":"bearer","expires_in":1799}*BAD_REQUEST (400). - Utilizzare il token per accedere alle API delle operazioni cloud.Includi il token di accesso restituito dal passo precedente nell'intestazione di autorizzazione della chiamata API delle operazioni cloud. Ad esempio:
Se il token di accesso non è valido o è scaduto, la chiamata restituisce il codice di risposta HTTP 302.curl -k -v -H "Authorization: Bearer CJ7yDymDAfSRz03W7zdX" https://<tenantHost>/baw/dev/rest/bpm/wle/v1/user/current - Aggiorna il token di accesso utilizzando un token di aggiornamento.Utilizzare l'endpoint OAuth 2.0 /token .
La chiamata restituisce una nuova serie di token.curl -k -v -X POST -H 'content-type: application/x-www-form-urlencoded' -d grant_type=refresh_token -d refresh_token=fGU3UjAHG0XKTdnInU8ihqTLf48XJIzQtRUjNFVo -d client_id=<clientId> -d client_secret=<clientSecret> https://www.bpm.ibmcloud.com/mga/sps/oauth/oauth20/token
La chiamata restituisce il codice di risposta HTTP{"access_token":"DkhN7gg7mk2gsBjGi8ay","refresh_token":"ToY13V2yfoYaeVbBjTwFLhzwX7GiKd7Y801VfjGC","scope":"","token_type":"bearer","expires_in":1799}BAD_REQUEST (400)se il token di aggiornamento non è valido o è già stato utilizzato, oppure se le credenziali del client non sono valide, ad esempio perché sono state cancellate. - Revoca token di aggiornamento e accesso alla fine dell'elaborazione dell'applicazione client
Quando l'elaborazione dell'applicazione client è terminata, si consiglia di revocare entrambi i token utilizzando l'endpoint OAuth 2.0 /revoke . Revocare il token di aggiornamento prima di revocare il token di accesso.
Ad esempio, utilizzare la seguente chiamata per revocare il token di aggiornamento:
La chiamata restituisce sempre un codice di risposta HTTP di successo, per esempio 200.curl -k -v -X POST -H 'content-type: application/x-www-form-urlencoded' -d client_id=<clientId> -d client_secret=<clientSecret> -d token=ToY13V2yfoYaeVbBjTwFLhzwX7GiKd7Y801VfjGC https://www.bpm.ibmcloud.com/mga/sps/oauth/oauth20/revokeAttenzione: dopo aver eseguito l'accesso a un'API, il token di accesso rimane valido fino alla scadenza.
Limitazioni
Esiste un limite giornaliero definito dal sistema di diverse centinaia di concessioni valide simultanee (coppie di token di accesso e di aggiornamento). Le concessioni vengono tracciate dall'applicazione client e dal nome utente del proprietario della risorsa. Si prevede che il limite di sovvenzione non sarà mai raggiunto. Tuttavia, se viene visualizzato un messaggio che indica che è stato raggiunto il limite di concessione, controllare la progettazione della creazione della concessione nelle applicazioni client o contattare il supporto IBM .