Flusso utente-agente OAuth 2.0 per l'integrazione di applicazioni desktop o mobili
Con il flusso utente-agente OAuth 2.0, gli utenti autorizzano un'applicazione desktop o mobile ad accedere ai dati utilizzando un browser esterno o incorporato. Possono usare questo flusso anche le applicazioni client eseguite in un browser che utilizza un linguaggio di script, ad esempio JavaScript. Questo flusso utilizza il tipo di grant implicito OAuth 2.0.
Versioni (Edition) richieste
| Disponibile in: Salesforce Classic e Lightning Experience |
| Disponibile in: tutte le versioni |
Con il flusso utente-agente, l'app client esterna, che integra l'applicazione client con l'API Salesforce, riceve il token di accesso come reindirizzamento HTTP. L'app client esterna richiede che il server di autorizzazione reindirizza l'utente-agente a un server Web o a una risorsa locale accessibile. Il server Web può estrarre il token di accesso dalla risposta e trasmetterlo all'app client esterna. Per motivi di sicurezza, la risposta del token viene fornita sotto forma di frammento di hashtag (#) nell'URL. Questo formato impedisce la trasmissione del token al server o a qualsiasi altro server nelle intestazioni del referral.
Se si utilizza JavaScript per l'autenticazione, chiamare window.location.replace(); per rimuovere la richiamata dalla cronologia del browser.
Si supponga ad esempio di utilizzare Salesforce Mobile SDK per compilare un'applicazione mobile che cerchi le informazioni di contatto dei clienti disponibili nell'organizzazione Salesforce. Mobile SDK implementa il flusso utente-agente OAuth 2.0 per l'app client esterna, integrando l'app mobile con l'API Salesforce e concedendole l'accesso autorizzato ai dati definiti. Il flusso segue questi passaggi.
- L'utente apre l'applicazione mobile.
- L'app client esterna indirizza l'utente a Salesforce per l'autenticazione e l'autorizzazione dell'app mobile.
- L'utente approva l'accesso per questo flusso di autorizzazione.
- L'app client esterna riceve la richiamata da Salesforce all'URL di reindirizzamento, che estrae i token di accesso e aggiornamento.
- L'app client esterna utilizza il token di accesso per accedere ai dati per conto dell'utente.
Reindirizzamento all'endpoint di autorizzazione
Per ottenere l'autorizzazione di un utente ad accedere ai dati Salesforce, l'app client esterna reindirizza l'utente all'endpoint di autorizzazione. Di seguito è riportato un esempio di reindirizzamento HTTP.
https://login.salesforce.com/services/oauth2/authorize?response_type=token&
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLJbP_pqwoJYyuisjQhr_LLurNDv7AgQvDTZwCoZuDZrXcPCmBv4o.8ds.5iE&
redirect_uri=https://www.customercontactinfo.com/user_callback.jspk&
state=mystateIncludere i seguenti parametri nell'URL.
| Parametro | Descrizione |
|---|---|
| Endpoint di autorizzazione OAuth 2.0 | Endpoint di autorizzazione OAuth 2.0 dell'istanza di Salesforce. Le app client esterne inviano le richieste di autorizzazione OAuth a questo endpoint. |
client_id
|
Chiave consumatore dell'app client esterna. Per accedere alla chiave consumatore, dal Gestore app trovare l'app client esterna e selezionare Visualizza dall'elenco a discesa. Quindi fare clic su Gestisci dettagli consumatore. Talvolta viene richiesto di verificare la propria identità prima di poter visualizzare la chiave consumatore. |
redirect_uri
|
URL a cui vengono reindirizzati gli utenti quando l'autenticazione ha esito positivo. L'URI di reindirizzamento deve corrispondere a uno dei valori del campo URL di richiamata dell'app client esterna. In caso contrario, l'approvazione non riesce. L'URI di reindirizzamento è disponibile nella pagina Impostazioni OAuth dell'app client esterna. Questo valore deve essere codificato nell'URL. |
response_type
|
Utilizzare il valore token. È anche possibile utilizzare il valore token id_token, con l'ambito openid e un parametro nonce. Se si specifica token
id_token, Salesforce restituisce un token ID nella risposta. Per maggiori informazioni, vedere Token e ambiti OAuth. |
Questi parametri sono facoltativi.
| Parametro | Descrizione |
|---|---|
scope
|
Autorizzazioni che definiscono il tipo di risorse protette a cui può accedere un'app client esterna. Gli ambiti vengono assegnati a un'app client esterna quando viene creata e vengono inclusi con i token OAuth durante il flusso di autorizzazione. Se non si include questo parametro, vengono richiesti tutti gli ambiti assegnati all'app client esterna. Gli ambiti passati in questo parametro devono essere un sottoinsieme degli ambiti registrati. Per i parametri validi, vedere Ambiti OAuth. |
state
|
Qualsiasi stato di cui il servizio Web esterno richiede l'invio all'URL di richiamata. Questo valore deve essere codificato nell'URL. |
display
|
Modifica il tipo di visualizzazione delle pagine di accesso e autorizzazione. Salesforce supporta i seguenti valori.
|
login_hint
|
Fornisce un valore di nome utente valido per precompilare la pagina di accesso con il nome utente, ad esempio Per passare il parametro |
nonce
|
Utilizzare con l'ambito openid per richiedere un token ID utente. Il token ID utente viene restituito nella risposta. Questo parametro è facoltativo ma consente di rilevare gli attacchi replay.
|
prompt
|
Specifica in che modo il server di autorizzazione richiede la riautenticazione e la riapprovazione all'utente. Salesforce supporta i seguenti valori.
È possibile passare i valori |
prompt
|
Specifica in che modo il server di autorizzazione richiede la riautenticazione e la riapprovazione all'utente. Salesforce supporta i seguenti valori.
È possibile passare i valori |
sso_provider
|
Il nome sviluppatore di un provider di identità Single Sign-On (SSO) configurato con un URL di accesso di Dominio personale o un URL di sito Experience Cloud. È possibile utilizzare questo parametro per creare un'esperienza SSO che risulti come se l'app fosse integrata con il provider SSO. Ad esempio, è possibile utilizzare questo parametro per offrire SSO in un'implementazione Headless Identity. Per ulteriori informazioni, vedere Creazione di un'esperienza Single Sign-On nativa nell'app. |
L'utente autentica e autorizza l'accesso
L'utente accede a Salesforce con le proprie credenziali. L'utente interagisce direttamente con l'endpoint di autorizzazione, quindi l'applicazione non vede mai le credenziali dell'utente.
Eseguito l'accesso, Salesforce reindirizza gli utenti alla pagina di approvazione per concedere l'accesso all'applicazione.
Salesforce concede il token di accesso
Quando un utente approva l'accesso a un'app client esterna, Salesforce lo reindirizza all'URL di richiamata. Il reindirizzamento include il token di accesso concesso, che l'app client esterna può estrarre e utilizzare per accedere ai dati per conto dell'utente.
Di seguito è riportato un esempio di richiamata dal server. La risposta segue un segno di hashtag (#) e non è sotto forma di parametri di query HTTP.
https://www.customercontactinfo.com/user_callback.jsp#
access_token=00Dx0000000BV7z%21AR8AQBM8J_xr9kLqmZIRyQxZgLcM4HVi41aGtW0qW3JCzf5xd
TGGGSoVim8FfJkZEqxbjaFbberKGk8v8AnYrvChG4qJbQo8&
refresh_token=5Aep8614iLM.Dq661ePDmPEgaAW9Oh_L3JKkDpB4xReb54_pZfVti1dPEk8aimw4Hr9ne7VXXVSIQ%3D%3D&
instance_url=https://yourInstance.salesforce.com&
id=https://login.salesforce.com%2Fid%2F00Dx0000000BV7z%2F005x00000012Q9P&
issued_at=1278448101416&
signature=miQQ1J4sdMPiduBsvyRYPCDozqhe43KRc1i9LmZHR70%3D&
scope=id+api+refresh_token&
token_type=Bearer&
state=mystateLa risposta dell'esempio contiene i parametri riportati di seguito, specificati dopo l'hashtag (#). L'URL di richiamata dell'app client esterna precede l'hashtag (#).
| Parametro | Descrizione |
|---|---|
access_token
|
Token OAuth utilizzato da un'applicazione client esterna per richiedere l'accesso a una risorsa protetta per conto dell'applicazione client. Al token di accesso possono essere abbinate altre autorizzazioni sotto forma di ambiti. |
refresh_token
|
Token ottenuto dal flusso del token del server Web, utente-agente o dell'app ibrida. Questo valore è segreto. Adottare le misure appropriate per proteggerlo. Il token di aggiornamento per il flusso utente-agente viene emesso solo se è stata richiesta la
|
instance_url
|
URL che indica l'istanza dell'organizzazione dell'utente. Ad esempio: https://yourInstance.salesforce.com/. |
id
|
URL identità che può essere utilizzato per identificare l'utente e per chiedere più informazioni sull'utente. Vedere URL identità. |
issued_at
|
Indicazione oraria in millisecondi del momento in cui la firma è stata creata. |
signature
|
Firma HMAC-SHA256 con codifica Base64 firmata con il client_secret. La firma può includere l'ID concatenato e il issued_at value, che è possibile utilizzare per verificare che l'URL identità non sia cambiato da quando il server lo ha inviato. |
scope
|
Ambiti associati al token di accesso. Gli ambiti definiscono ulteriormente i tipi di risorse protette a cui può accedere il client. Gli ambiti vengono assegnati a un'app client esterna quando viene creata e vengono inclusi con i token OAuth durante il flusso di autorizzazione. Per i parametri validi, vedere Ambiti OAuth. |
token_type
|
Tipo di token di Bearer, utilizzato per tutte le risposte che includono un token di accesso. |
state
|
Lo stato richiesto dal client. Questo valore è incluso solo se il parametro state è incluso nella stringa di query originale. |
La risposta può anche contenere questi parametri.
| Parametro | Descrizione |
|---|---|
id_token
|
Struttura di dati firmata che contiene gli attributi dell'utente autenticato, fra cui un identificativo univoco per l'utente e l'indicazione della data e dell'ora di emissione del token. Il token ID identifica inoltre l'app client richiedente. Vedere le specifiche di OpenID Connect. Questo parametro viene restituito se il parametro scope include |
sfdc_site_url
|
Se l'utente è membro di un sito Experience Cloud, viene fornito l'URL del sito. |
sfdc_site_id
|
Se l'utente è membro di un sito Experience Cloud, viene fornito l'ID sito dell'utente. |
