Loading
Identificazione degli utenti e gestione degli accessi
Flusso utente-agente OAuth 2.0 per l'integrazione di applicazioni desktop o mobili

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
Importante
Importante per una maggiore sicurezza, al posto del flusso utente-agente si consiglia di utilizzare il flusso server Web OAuth 2.0 con Proof Key for Code Exchange (PKCE). Abbiamo anche reso possibile il blocco delle app client esterne che utilizzano il flusso utente-agente. Molte app mobili, incluse le app mobili Salesforce, utilizzano il flusso utente-agente e, bloccando il flusso utente-agente, tali app vengono interrotte. Per istruzioni su come utilizzare il flusso server Web, vedere Flusso server Web OAuth 2.0 per l'integrazione delle app Web. Per istruzioni su come bloccare il flusso utente-agente, vedere Blocco dei flussi di autorizzazione per migliorare la sicurezza.

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.

Avvertenza
Avvertenza poiché il token di accesso è codificato nell'URL di reindirizzamento, può essere esposto alle applicazioni dell'utente e ad altre applicazioni presenti nel dispositivo.

Se si utilizza JavaScript per l'autenticazione, chiamare window.location.replace(); per rimuovere la richiamata dalla cronologia del browser.

Nota
Nota Le app client esterne per questi tipi di client possono proteggere i segreti per utente. Tuttavia, il segreto client è accessibile e utilizzabile poiché gli eseguibili del client risiedono nel dispositivo dell'utente. Per questo motivo, il flusso utente-agente non utilizza il segreto client. L'autorizzazione si basa sulla policy della stessa origine dell'utente-agente. Inoltre, il flusso utente-agente non supporta i post out of band.

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.

  1. L'utente apre l'applicazione mobile.
  2. L'app client esterna indirizza l'utente a Salesforce per l'autenticazione e l'autorizzazione dell'app mobile.
  3. L'utente approva l'accesso per questo flusso di autorizzazione.
  4. L'app client esterna riceve la richiamata da Salesforce all'URL di reindirizzamento, che estrae i token di accesso e aggiornamento.
  5. 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=mystate

Includere 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.

  • page: schermata di autorizzazione a pagina intera (impostazione predefinita).
  • popup: finestra di dialogo compatta ottimizzata per i moderni popup del browser Web.
  • touch: dialogo ottimizzato per dispositivi mobili progettato per i moderni dispositivi mobili, ad esempio Android e iPhone.
  • mobile: dialogo ottimizzato per dispositivi mobili progettato per i dispositivi meno potenti, ad esempio il sistema operativo BlackBerry 5.
login_hint

Fornisce un valore di nome utente valido per precompilare la pagina di accesso con il nome utente, ad esempio login_hint=username@company.com. Se un utente ha già una sessione attiva nel browser, il parametro login_hint non esegue alcuna operazione e la sessione utente attiva continua.

Per passare il parametro login_hint per i siti Experience Cloud, passare anche il parametro prompt=login. Questi parametri reindirizzano l'utente alla pagina di accesso con il suggerimento per l'accesso corretto.

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.

  • login — Il server di autorizzazione deve richiedere all'utente una nuova autenticazione, costringendolo ad accedere nuovamente.
  • consent: il server di autorizzazione deve richiedere all'utente la riapprovazione prima di restituire le informazioni al client.
  • select_account—Se presente, eseguire una di queste azioni.
    • Se 0 o 1 suggerimento è disponibile e l'utente ha effettuato l'accesso, mostra la pagina di approvazione senza richiedere l'accesso.
    • Se 0 o 1 suggerimento è disponibile e l'utente non ha effettuato l'accesso, richiede l'accesso.
    • Se è disponibile più di 1 suggerimento, mostra il selettore di account.

È possibile passare i valori login e consent, separati da uno spazio, per richiedere all'utente di accedere e autenticarsi nuovamente. Ad esempio: ?prompt=login%20consent

prompt

Specifica in che modo il server di autorizzazione richiede la riautenticazione e la riapprovazione all'utente. Salesforce supporta i seguenti valori.

  • login — Il server di autorizzazione deve richiedere all'utente una nuova autenticazione, costringendolo ad accedere nuovamente.
  • consent: il server di autorizzazione deve richiedere all'utente la riapprovazione prima di restituire le informazioni al client.
  • select_account—Se presente, eseguire una di queste azioni.
    • Se 0 o 1 suggerimento è disponibile e l'utente ha effettuato l'accesso, mostra la pagina di approvazione senza richiedere l'accesso.
    • Se 0 o 1 suggerimento è disponibile e l'utente non ha effettuato l'accesso, richiede l'accesso.
    • Se è disponibile più di 1 suggerimento, mostra il selettore di account.

È possibile passare i valori login e consent, separati da uno spazio, per richiedere all'utente di accedere e autenticarsi nuovamente. Ad esempio: ?prompt=login%20consent

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.

Pagina di accesso all'organizzazione Salesforce

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=mystate

La 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 scope=refresh_token e si verifica uno dei seguenti scenari.

  • L'URL di reindirizzamento utilizza un protocollo personalizzato.
  • L'host dell'URL di reindirizzamento corrisponde alla richiesta host e include il servlet services/oauth2/success. Ad esempio:
    • https://login.salesforce.com/services/oauth2/success
    • https://test.salesforce.com/services/oauth2/success
    • https://domain.my.salesforce.com/services/oauth2/success
    • https://site_url/services/oauth2/success
  • L'URL di reindirizzamento è https://mobileauth.salesforce.com/oauth/done
  • L'URL di reindirizzamento è https://mobileauth.salesforce.com/analytics/oauth/done
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 openid.

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.
 
Caricamento
Salesforce Help | Article