Tokenflöden för uppdatering av OAuth 2.0-hybridapp
Använd uppdateringstokenflödet för OAuth 2.0-hybridappar för att göra det möjligt för hybridappar att direkthantera webbsessioner när en inledande session löper ut. När autoriseringsservern validerar ett nytt åtkomsttoken med hjälp av beviljandetypen hybrid_refresh inkluderas sessions-ID (SID) för de begärda domänerna i svaret. Hybridappen kan ange domäncookies för Lightning, Visualforce och innehåll och använda frontdoor.jsp för att brygga åtkomsttoken till en webbsession utan att tjänsten avbryts. Hybridapp-uppdateringstokenflödet förnyar åtkomsttokens som utfärdats av OAuth 2.0-flödet för webbservrar, användaragenter och hybridapptoken.
Versioner som krävs
| Tillgängliga i: både Salesforce Classic (inte tillgängligt i alla organisationer) och Lightning Experience |
| Tillgängliga i: Alla versioner |
Mer information finns i Nya anslutna appar kan inte längre skapas i utgåvan Spring '26.
Efter att en hybridapp – via en ansluten app – får en åtkomsttoken kan den använda en uppdateringstoken för att få en ny session när den aktuella sessionen löper ut. Den anslutna appens värde för sessionstimeout avgör när en åtkomsttoken inte längre är giltig och när en ny ska ansökas med en uppdateringstoken.
För bättre säkerhet, aktivera uppdateringstokenrotation för din anslutna app eller externa klientapp när du konfigurerar dess OAuth-inställningar. Med denna inställning aktiverad utfärdar den anslutna appen en ny uppdateringstoken tillsammans med åtkomsttoken varje gång flödet åberopas. Den tidigare uppdateringstoken ogiltigförklaras automatiskt. Rotation av uppdateringstoken säkerställer att varje uppdateringstoken endast används en gång per användare, så att uppdateringstokens inte kan användas för att få nya åtkomsttokens. Om någon försöker använda en uppdateringstoken som har roterats ut ogiltigförklarar Salesforce den aktuella uppdateringstoken och alla associerade åtkomsttokens. För att få en ny uppdateringstoken måste klienten slutföra ett nytt flöde.
invalid_grant när du försöker begära en token.Uppdateringstokenflödet för hybridappen innefattar dessa steg.
- Appen använder den befintliga uppdateringstoken för att begära en ny åtkomsttoken.
- Efter att ha bekräftat begäran beviljar Salesforce en ny åtkomsttoken till appen.
- Appen anger omedelbart SID:er i domänernas sessionscookies och bryggar en webbsession.
Begära en ny åtkomsttoken
Appen kan använda uppdateringstoken för att få en ny åtkomsttoken genom att skicka en POST-begäran för uppdateringstoken till Salesforces tokenslutpunkt.
Den anslutna appen kan skicka client_id och client_secret i brödtexten i POST-begäran för uppdateringstoken, enligt vad som visas här.
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com/
grant_type=hybrid_refresh&
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&
client_secret=1955279925675241571&
refresh_token=your token here
Istället för att skicka klientuppgifter som parametrar i brödtexten i POST-begäran för uppdateringstoken kan du använda autentiseringsschemat HTTP Basic. Detta schemas format kräver client_id och client_secret i inläggets auktoriseringssidhuvud: Authorization: Basic64Encode(client_id:secret).
client_id och client_secret avgränsas med ett kolon (:). Mer information finns i OAuth 2.0-autentiseringsramverk.
Detta exempel visar en POST-begäran för en uppdateringstoken för hybridappar som använder autentiseringsschemat HTTP Basic istället för att skicka klientuppgifter i POST-begärans brödtext.
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Authorization: Basic
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&
client_secret=1955279925675241571
grant_type=hybrid_refresh&
refresh_token=your token here
client_id och client_secret skickas i POST:s brödtext ignoreras auktoriseringssidhuvudet.Inkludera dessa parametrar oavsett vilket format som används för POST-begäran för uppdateringstoken.
| Parameter | Beskrivning |
|---|---|
client_id
|
Konsumentnyckel för den anslutna appen. För att komma till konsumentnyckeln, från Apphanteraren, hitta den anslutna appen och välj Visa från rullmenyn. Klicka sedan på Hantera konsumentdetaljer. Ibland ombes du bekräfta din identitet innan du kan se konsumentnyckeln. |
client_secret
|
Konsumenthemligheten för den anslutna appen. För att komma till konsumenthemligheten, gå till Apphanteraren och hitta den anslutna appen, och välj Visa från rullmenyn. Klicka sedan på Hantera konsumentdetaljer. Ibland ombes du bekräfta din identitet innan du kan se konsumenthemligheten. |
grant_type
|
Den OAuth 2.0 grant type som den anslutna appen begär. Värdet måste vara hybrid_refresh för detta flöde. |
refresh_token
|
Token som fåtts från webbservern, användaragenten eller hybridappens tokenflöde. Detta värde är en hemlighet. Vidta lämpliga åtgärder för att skydda det. Denna parameter returneras endast om din anslutna app har konfigurerats med ett refresh_token. |
client_assertion
|
Istället för att skicka ett client_secret kan du tillhandahålla en client_assertion och client_assertion_type. Om ingen client_secret anges söker Salesforce efter client_assertion och client_assertion_type. Se Använd client_assertion istället för client_secret. |
client_assertion_type
|
Ange detta värde när du använder parametern Värdet för |
format
|
Om det inte inkluderas i begärans sidhuvud kan du specificera det förväntade returformatet. Parametern
|
Salesforce beviljar en ny åtkomsttoken
Efter att ha bekräftat begäran skickar Salesforce ett svar med en ny åtkomsttoken till appen. Här är ett exempel på ett JSON-svar från Salesforce.
{ "id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
"issued_at":"1278448384422",
"instance_url":"https://yourInstance.salesforce.com/",
"signature":"SSSbLO/gBhmmyNUvN18ODBDFYHzakxOMgqYtu+hDPsc=",
"access_token":"00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7TrqoDjoNIWQ2ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4",
"token_type":"Bearer",
"scope":"web visualforce refresh_token lightning content",
"cookie-clientSrc":"10.xxx.xx.xx",
"sidCookieName":"sid",
"cookie-sid_Client":"0000000...",
"content_domain":"MyDomainName.file.force.com",
"content_sid":"00Dxx0000006Gb…",
"lightning_domain":"MyDomainName.lightning.force.com",
"lightning_sid”:”00Dxx000000…",
"csrf_token":"ABCD…",
"visualforce_domain":"MyDomainName.vf.force.com",
"visualforce_sid":"00Dxx000000…"}
Och här är ett exempel på ett XML-svar.
<Oauth>
<access_token>00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNB...</access_token>
<token_type>Bearer</token_type>
<scope>web visualforce refresh_token lightning content</scope>
<cookie-clientSrc>10.xxx.xx.xx</cookie-clientSrc>
<sidCookieName>sid</sidCookieName>
<cookie-sid_Client>0000000...</cookie-sid_Client>
<content_domain>MyDomainName.file.force.com</content_domain>
<content_sid>00Dxx0000006Gb…</content_sid>
<lightning_domain>MyDomainName.lightning.force.com</lightning_domain>
<lightning_sid>00Dxx000000…</lighning_sid>
<csrf_token>ABCD…</csrf_token>
<visualforce_domain>MyDomainName.vf.force.com</visualforce_domain>
<visualforce_sid>00Dxx000000…</visualforce_sid>
<instance_url>https://yourInstance.salesforce.com/</instance_url>
<id>https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P</id>
<issued_at>1278448101416</issued_at>
<signature>CMJ4l+CCaPQiKjoOEwEig9H4wqhpuLSk4J2urAe+fVg=</signature>
</Oauth>
Detta exempel visar ett URL-kodat svar.
access_token=00Dx0000000BV7z%21AR8AQP0jITN80ESEsj5E...&
token_type=Bearer&
instance_url=https%3A%2F%2FyourInstance.salesforce.com&
id=https://login.salesforce.com%2Fid%2F00Dx0000000BV7z%2F005x00000012Q9P&
issued_at=1278448101416&
signature=CMJ4l%2BCCaPQiKjoOEwEig9H4wqhpuLSk4J2...
cookie-clientSrc=10.xxx.xx.xx&
content_domain=MyDomainName.file.force.com&
content_sid=00Dxx0000006Gb...&
lightning_domain=MyDomainName.lightning.force.com&
lightning_sid=00Dxx000000...&
csrf_token=ABCD...&
visualforce_domain=MyDomainName.vf.force.com&
visualforce_sid=00Dxx000000...&
scope=web+visualforce+refresh_token+lightning+content&
sidCookieName=sid&
cookie-sid_Client=0000000...&
Följande parametrar kan inkluderas i huvuddelen av svaret.
| Parameter | Beskrivning |
|---|---|
access_token
|
OAuth-token som en ansluten app använder för att begära åtkomst till en skyddad resurs åt klientprogrammet. Ytterligare behörigheter i form av omfattningar kan medfölja åtkomsttoken. |
token_type
|
En Bearer som används för alla svar som inkluderar en åtkomsttoken. |
instance_url
|
En URL som anger instansen för användarens organisation. Exempel: https://yourInstance.salesforce.com/. |
id
|
En identitets-URL som kan användas både för att identifiera användaren och som en sökfråga för mer information om användaren. Se Identitets-URL:er. |
issued_at
|
Tidsstämpel då signaturen skapades i millisekunder. |
signature
|
Base64-kodad HMAC-SHA256-signatur signerad med client_secret. Signaturen kan innehålla det sammanlänkade ID:t och issued_at value, som du kan använda för att bekräfta att identitets-URL:en inte har ändrats sedan servern skickade den. |
sfdc_site_url
|
Om användaren är medlem av en Experience Cloud-webbplats anges webbplatsens URL. |
sfdc_site_id
|
Om användaren är medlem av en Experience Cloud-webbplats anges användarens webbplats-ID. |
content_domain
|
Domänen för innehållssessionen, som mappar till innehållets SID: Du får endast detta värde om du tilldelar omfattningen |
content_sid
|
SID som associeras med domänen för innehållssessionen. Salesforce returnerar ett unikt SID som hybridappen omedelbart anger i domänens sessionscookie. Du får endast detta värde om du tilldelar omfattningen |
lightning_domain
|
Domänen för Lightning-sessionen, som mappar till Lightnings SID: Du får endast detta värde om du tilldelar omfattningen |
lightning_sid
|
SID som associeras med domänen för Lightning-sessionen. Salesforce returnerar ett unikt SID som hybridappen omedelbart anger i domänens sessionscookie. Du får endast detta värde om du tilldelar omfattningen |
visualforce_domain
|
Domänen för Visualforce-sessionen, som mappar till Visualforces SID: Du får endast detta värde om du tilldelar omfattningen |
visualforce_sid
|
SID som associeras med domänen för Visualforce-sessionen. Salesforce returnerar ett unikt SID som hybridappen omedelbart anger i domänens sessionscookie. Du får endast detta värde om du tilldelar omfattningen |
csrf_token
|
Cross-Site Request Forgery-token (CSRF) för att förhindra attacker under underordnade sessioner. Du får endast detta värde om du tilldelar omfattningen |
scope
|
De omfattningar som är associerade med åtkomsttoken. Omfattningar definierar ytterligare vilken typ av skyddade resurser som klienten kan komma åt. Du tilldelar omfattningar till en ansluten app när du bygger den, och de inkluderas med OAuth-tokens under auktoriseringsflödet. För giltiga parametrar, se OAuth-omfång. |
sidCookieName
|
Namnet på den sessionscookie som hybridappen använder för att direkt överbrygga en webbsession. Standardvärdet är sid. |
cookie-sid_Client
|
En sessionscookies som upptäcker och förhindrar sessionsövertagande. Denna sessionscookie låter hybridappen direkt överbrygga en webbsession. |
cookie-clientSrc
|
En sessionscookie som används för säkerhetsskydd. Denna sessionscookie låter hybridappen direkt överbrygga en webbsession. |
parent_sid
|
Ett SID som är associerat med användarens överordnade användargränssnittsession. |
Appen anger domän-SDI:er och bryggar en webbsession
Hybridappen anger domänens associerade SID:er i dess sessionscookies för att direkt överbrygga en webbsession.
För implementeringar som återställer användaravdelning för objekt i inställningen Återställ till standardavdelning vid inloggning måste hybridappen överbrygga en webbsession med frontdoor.jsp. Mer information finns i Använda Frontdoor.jsp för att brygga sessioner till Salesforce. Mer information om användaravdelningar finns i Organisera data med avdelningar.
