Tipo di concessione credenziali password proprietario risorsa
Utilizzare questo tipo di privilegio quando il proprietario della risorsa ha una relazione di attendibilità con il client, ad esempio un sistema operativo del computer o un'applicazione con privilegi elevati, poiché il client deve eliminare la password dopo averla utilizzata per ottenere il token di accesso.
Nel diagramma riportato di seguito viene visualizzato il flusso Tipo di concessione credenziali password proprietario risorsa.
In questo flusso OAuth:
-
L'utente fa clic su un collegamento nell'applicazione client che richiede l'accesso alle risorse protette.
-
L'applicazione client richiede il nome utente e la password del proprietario della risorsa.
-
L'utente accede con il nome utente e la password.
-
L'applicazione client scambia tali credenziali per un token di accesso, e spesso un token di aggiornamento, dal server di autorizzazione.
-
Il server di autorizzazione restituisce il token di accesso all'applicazione client.
-
L'applicazione client utilizza il token di accesso in una chiamata API per ottenere dati protetti, ad esempio un elenco di utenti.
| Funzione | Disponibile |
|---|---|
| Richiede autenticazione client | N |
| Richiede che il client sia a conoscenza delle credenziali utente | Sì |
| Interazione utente finale basata sul browser | N |
| Può utilizzare un provider di identità esterno per l'autenticazione | N |
| Il token di aggiornamento è consentito | Sì |
| Il token di accesso si trova nel contesto dell'utente finale | Sì |
Vedere un esempio di esempio di flusso di autorizzazione del tipo di autorizzazione delle credenziali password del proprietario della risorsa.
Credenziali password proprietario risorsa - Tipo autorizzazione - Flusso di autorizzazione - Esempio
Questo esempio di flusso di autorizzazione consente di ottenere un token di accesso utilizzando le credenziali (utente) del proprietario della risorsa.
Quando si crea un'applicazione utilizzando il tipo di privilegio Proprietario risorsa nella console del dominio di Identity, effettuare le operazioni riportate di seguito.
-
Specificare Applicazione sicura come tipo di applicazione.
-
Selezionare Proprietario risorsa come tipo di privilegio.
-
Specificare l'URI di reindirizzamento, dove vengono inviate le risposte alle richieste di autenticazione.
Per ulteriori informazioni sul tipo di concessione Credenziali password proprietario risorsa e su un diagramma di flusso di autorizzazione, vedere Tipo di autorizzazione Credenziali password proprietario risorsa.
Flusso autorizzazione
-
Un utente fa clic su un collegamento nell'applicazione client del server Web, richiedendo l'accesso a risorse protette da un'applicazione server Web di terze parti.
-
L'applicazione client raccoglie il nome utente e la password dell'utente e richiede un token di accesso dal server di autorizzazione OAuth (AS).
L'URL della richiesta contiene parametri di query che indicano il tipo di accesso richiesto:
Richiesta di esempio mediante l'intestazione di autorizzazione
curl -i -H 'Authorization: Basic <base64Encoded clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&scope=<scope value>'Richiesta di esempio che utilizza l'intestazione di autorizzazione che include il token di aggiornamento nella richiesta
curl -i -H 'Authorization: Basic <base64Encoded clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&scope=<Resource Server Scope>%20offline_access'Richiesta di esempio mediante un'asserzione client JWT
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&client_id=<client-id>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=<client-assertion>&scope=<scope value>'Richiesta di esempio che utilizza un'asserzione client JWT che include il token di aggiornamento nella richiesta
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<example-password>&client_id=<client-id>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=<client-assertion>&scope=<Resource Server Scope>%20offline_access'Richiesta di esempio con mTLS
Per informazioni su come ottenere
secureDomainURL, vedere Tipi di privilegio di accesso.curl -v \ --cert cert.crt \ --key key.key \ --cacert ca.crt \ --location '<secureDomainURL>/oauth2/v1/token' \ --header 'Authorization: Basic <base64Encoded clientid:secret>' --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'client_id=<client-id>' \ --data-urlencode 'scope=urn:opc:idm:_myscopes_' -
Il server di autorizzazione OAuth restituisce il token di accesso. Il token di accesso contiene tutti gli ambiti applicabili in base ai privilegi rappresentati dai ruoli applicazione del dominio di Identity concessi all'applicazione client richiedente e all'utente specificato dalla richiesta del client (se presente).
Nota
Se è stata effettuata una richiesta per un ambito non valido, viene restituito un errore anziché il token di accesso. -
Il sito richiedente utilizza il token di accesso in una chiamata API per ottenere dati protetti.