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.

Nota: L'autenticazione basata su OAuth 2.0 non è abilitata per impostazione predefinita sulle sottoscrizioni cloud. Se desiderate utilizzarlo, inviate una richiesta attraverso il portale di supporto IBM Il link esterno apre una nuova finestra o scheda.

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 Il link esterno apre una nuova finestra o scheda. 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.

Per utilizzare l'autenticazione OAuth 2.0 nell'applicazione client, l'applicazione deve includere le interazioni riportate di seguito.
Importante: le seguenti chiamate potrebbero restituire un comando Set - Cookie per i cookie PD - S - SESSION - ID e PD - ID come parte della risposta. Non utilizzare questi cookie nelle chiamate successive.
  1. 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:
    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
    
    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.
    {"access_token":"CJ7yDymDAfSRz03W7zdX","refresh_token":"fGAv2qzuLnM030Brs8KFaIuY1Kd2P87sLFXI85lH","scope":"","token_type":"bearer","expires_in":1799}*
    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 BAD_REQUEST (400).
  2. 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:
    curl -k -v -H "Authorization: Bearer CJ7yDymDAfSRz03W7zdX" https://<tenantHost>/baw/dev/rest/bpm/wle/v1/user/current
    Se il token di accesso non è valido o è scaduto, la chiamata restituisce il codice di risposta HTTP 302.
  3. Aggiorna il token di accesso utilizzando un token di aggiornamento.
    Utilizzare l'endpoint OAuth 2.0 /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 una nuova serie di token.
    {"access_token":"DkhN7gg7mk2gsBjGi8ay","refresh_token":"ToY13V2yfoYaeVbBjTwFLhzwX7GiKd7Y801VfjGC","scope":"","token_type":"bearer","expires_in":1799}
    La chiamata restituisce il codice di risposta HTTP 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.
  4. 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:
    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/revoke
    
    La chiamata restituisce sempre un codice di risposta HTTP di successo, per esempio 200.
    Attenzione: 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 .