Flusso del token utente-agente ibrido OAuth 2.0 per la gestione delle sessioni Web
Utilizzare il flusso del token utente-agente ibrido OAuth 2.0 per fornire alle app ibride la gestione diretta delle sessioni Web. Quando il server di autorizzazione concede un token di accesso, il server include gli ID sessione (SID) dei domini richiesti nella risposta. Dopo l'autorizzazione, l'app ibrida può impostare i cookie Lightning, Visualforce e di dominio di contenuti e collegare un token di accesso in una sessione Web, offrendo un servizio senza interruzioni.
Versioni (Edition) richieste
| Disponibile in: Salesforce Classic e Lightning Experience |
| Disponibile in: tutte le versioni |
Il flusso del token utente-agente ibrido segue gli stessi passaggi di autorizzazione utilizzati nel flusso utente-agente, con l'eccezione che il flusso del token utente-agente ibrido utilizza hybrid_token come tipo di grant. Ad esempio, si compila un'app ibrida per il reparto vendite per accedere alle informazioni mentre si lavora fuori sede, incluso un cruscotto digitale che tiene traccia dei principali clienti potenziali. L'app implementa il flusso del token utente-agente ibrido, che segue queste fasi.
- Per integrare l'app ibrida con l'API Salesforce, creare un'app client esterna. Abilitare le impostazioni OAuth e assegnare i seguenti ambiti OAuth all'app client esterna:
-
-
lightning -
content -
refresh_token -
visualforce -
web
-
- L'utente finale apre l'app e viene indirizzato a Salesforce per autenticare e autorizzare l'app.
- Dopo che l'utente ha approvato 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. Sono inclusi anche i SID Visualforce, Lightning e del contenuto dei rispettivi domini, oltre ai cookie di sessione che consentono all'app di collegare direttamente una sessione Web.
- L'app imposta i cookie di sessione Lightning, Visualforce e dei domini di contenuti e collega un token di accesso in una sessione Web.
- L'utente può accedere al cruscotto digitale dei principali clienti potenziali senza sessioni interrotte.
Di seguito sono riportate in dettaglio le fasi del flusso dell'app ibrida OAuth 2.0.
- Creare un'app client esterna per l'app ibrida.
- L'app reindirizza gli utenti all'endpoint di autorizzazione.
- L'utente esegue l'autenticazione e viene autorizzato l'accesso.
- Salesforce concede il token di accesso e gli ambiti richiesti.
Nota Il flusso utente-agente ibrido può emettere solo token di accesso opachi. Non supporta i token di accesso basati su JWT. - L'app imposta direttamente i SID nei cookie di sessione dei domini e collega una sessione Web.
Reindirizzamento all'endpoint di autorizzazione
Per ottenere l'autorizzazione di un utente per accedere ai dati Salesforce, l'app reindirizza l'utente all'endpoint di autorizzazione. Di seguito è riportato un esempio di reindirizzamento HTTP.
https://login.salesforce.com/services/oauth2/authorize?response_type=hybrid_token&
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLJbP_pqwoJYyuisjQhr_LLurNDv7AgQvDTZwCoZuDZrXcPCmBv4o.8ds.5iE&
redirect_uri=https%3A%2F%2Flogin.salesforce.com%2Fservices%2Foauth2%2Fsuccess&scope=web%20visualforce%20refresh_token%20lightning%20content
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 client esterne, trovare l'app client esterna e selezionare Modifica impostazioni dall'elenco a discesa. Quindi espandere la sezione Impostazioni OAuth e fare clic su Chiave consumatore e segreto. 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 hybrid_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. Per questo flusso, assegnare l'ambito
|
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 |
L'utente esegue l'autenticazione e viene autorizzato l'accesso
L'utente accede a Salesforce con le proprie credenziali. Poiché l'utente interagisce direttamente con l'endpoint di autorizzazione, 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 e gli ambiti richiesti
Dopo che un utente approva l'accesso all'app, Salesforce reindirizza l'utente all'URL di richiamata. Il reindirizzamento include il token di accesso concesso, i nomi di dominio richiesti, le sessioni di dominio e gli ambiti associati. L'app client esterna estrae il token e i parametri per accedere alle risorse limitate per conto dell'utente finale.
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=yourtokenhere&
refresh_token=yourtokenhere&
instance_url=https://yourInstance.salesforce.com/
id=https://user.internal.salesforce.com/7443%2Fid%2F00Dxx0000006HM7EAM%2F005xx000001X8ErAAK&
issued_at=1604004352722&
signature=DcQ84..
content_domain=MyDomainName.file.force.com&
content_sid=00Dxx0000006Gb…&
lightning_domain=MyDomainName.lightning.force.com&
lightning_sid=00Dxx000000...&
visualforce_domain=MyDomainName.file.force.com&
visualforce_sid=00Dxx000000...&
sidCookieName=sid&
cookie-sid_Client=0000000...&
cookie-clientSrc=10.xxx.xx.xx&
csrf_token=eyJub...&
scope=web+visualforce+refresh_token+lightning+content&
token_type=Bearer
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 del token utente-agente ibrido viene emesso solo se è stata richiesta la
Il token di aggiornamento concesso in questo flusso è totalmente compatibile con il flusso del token di aggiornamento OAuth standard. |
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. |
content_domain
|
Il dominio della sessione di contenuti mappato al SID di contenuti: Questo valore si riceve solo se si assegna l'ambito |
content_sid
|
SID associati al dominio della sessione dei contenuti. Salesforce restituisce un SID univoco impostato dall'app ibrida direttamente nel cookie di sessione del dominio. Questo valore si riceve solo se si assegna l'ambito |
lightning_domain
|
Dominio della sessione Lightning mappato al SID Lightning: Questo valore si riceve solo se si assegna l'ambito |
lightning_sid
|
SID associati al dominio della sessione Lightning. Salesforce restituisce un SID univoco impostato dall'app ibrida direttamente nel cookie di sessione del dominio. Questo valore si riceve solo se si assegna l'ambito |
visualforce_domain
|
Dominio della sessione Visualforce mappato al SID Visualforce: Questo valore si riceve solo se si assegna l'ambito |
visualforce_sid
|
SID associato al dominio della sessione Visualforce. Salesforce restituisce un SID univoco impostato dall'app ibrida direttamente nel cookie di sessione del dominio. Questo valore si riceve solo se si assegna l'ambito |
token_type
|
Tipo di token di Bearer, utilizzato per tutte le risposte che includono un token di accesso. |
csrf_token
|
Token CSRF (Cross-site Request Forgery) per impedire gli attacchi durante le sessioni secondarie. Questo valore si riceve solo se si assegna l'ambito |
sidCookieName
|
Il nome del cookie di sessione utilizzato dall'app ibrida per collegare direttamente una sessione Web. Il valore predefinito è sid. |
cookie-sid_Client
|
Un cookie di sessione che rileva e impedisce la manomissione della sessione. Questo cookie di sessione consente all'app ibrida di collegare direttamente una sessione Web. |
cookie-clientSrc
|
Un cookie di sessione utilizzato per le protezioni della sicurezza. Questo cookie di sessione consente all'app ibrida di collegare direttamente una sessione Web. |
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. |
L'app imposta i SID di dominio e collega una sessione Web
L'app ibrida imposta i SID associati dei domini nei cookie di sessione per collegare direttamente una sessione Web. Per alcuni esempi dei cookie impostati per ciascun dominio, vedere Gestione dei cookie del flusso dell'app ibrida OAuth 2.0.
Per le implementazioni che reimpostano la divisione utente sugli oggetti per l'impostazione Ripristina divisione predefinita all'accesso, l'app ibrida deve collegare una implementazione utilizzando frontdoor.jsp. Per ulteriori informazioni, vedere Utilizzo di Frontdoor.jsp per collegare le sessioni in Salesforce. Per ulteriori informazioni sulle divisioni utente, vedere Organizzazione dei dati con le divisioni.

