OAuth 2.0-klientuppgifter för server-till-server-integrering
Ibland vill du direkt dela information mellan två program utan att behöva påverka en användare. För dessa scenarion kan du använda inloggningsflödet för OAuth 2.0-klient. I detta flöde byter klientappens inloggningsuppgifter som definieras i den externa klientappen – dess konsumentnyckel och konsumenthemlighet – mot en åtkomsttoken. Detta flöde eliminerar behovet av uttrycklig användarinteraktion, men kräver att du specificerar en integreringsanvändare för att köra integreringen. Du kan använda detta flöde som ett mer säkert alternativ till OAuth 2.0 användarnamn-lösenord-flödet.
Versioner som krävs
| Tillgängliga i: både Salesforce Classic och Lightning Experience |
| Tillgängliga i: Alla versioner |
För att använda klientuppgifterflödet måste du skapa en extern klientapp och konfigurera dess OAuth-inställningar och åtkomstpolicyer.
Du kan till exempel bygga en egen app för att köra automatiserade rapporter från Salesforce. Du vill att appen ska köra rapporter varje natt. För att integrera din egna app med Salesforce konfigurerar du en extern klientapp. För att sedan konfigurera din externa klientapp för klientinloggningsuppgifterflödet aktiverar du flödet och tilldelar en integreringsanvändare. När den nattliga rapporttjänsten startar kommer din egna app åt Salesforce-data med hjälp av dessa steg på hög nivå.
- Den externa klientappen skickar sina klientuppgifter till Salesforce OAuth-tokenslutpunkten via en POST-begäran.
- Salesforce validerar klientuppgifterna och autentiserar appen.
- Salesforce returnerar en åtkomsttoken åt den integreringsanvändare du tilldelat.
- Den externa klientappen använder åtkomsttoken för att anropa en Salesforce API, till exempel REST API.
- API svarar med de begärda data för rapporten.
Begär en åtkomsttoken
Låt oss dela upp processen för att få en åtkomsttoken med klientinloggningsflödet.
För att inleda flödet publicerar den externa klientappen sina klientuppgifter till Salesforce-tokenslutpunkten. Du kan inkludera klientuppgifterna som parametrar i brödtexten av begäran. Eller, för extra säkerhet, placera dina klientuppgifter i ett grundläggande auktoriseringssidhuvud.
Här är ett exempel på en POST-begäran med klientuppgifterna i begärans brödtext.
POST /services/oauth2/token HTTP/1.1
Host: MyDomainName.my.salesforce.com
grant_type=client_credentials&
client_id=*******************&
client_secret=*******************För detta flöde stöds inte begäranden till https://login.salesforce.com och https://test.salesforce.com. Använd din Min domän-URL istället. För att hitta din URL för Min domän: i Inställningar, i rutan Snabbsökning, skriv Min domän och välj sedan Min domän.
Dessa parametrar måste inkluderas i begäran.
| Parameter | Beskrivning |
|---|---|
client_id |
Konsumentnyckeln för den externa klientappen. För att komma till konsumentnyckeln, hitta den externa klientappen från Hanteraren för externa klienter och välj Redigera inställningar från rullmenyn. Expandera sedan sektionen OAuth-inställningar och klicka på Konsumentnyckel och hemlighet. Ibland ombes du bekräfta din identitet innan du kan se konsumentnyckeln. |
client_secret |
Konsumenthemligheten för den externa klientappen. För att komma till konsumenthemligheten, hitta den externa klientappen från Hanteraren för externa klienter och välj Redigera inställningar från rullmenyn. Expandera sedan sektionen OAuth-inställningar och klicka på Konsumentnyckel och hemlighet. Ibland ombes du bekräfta din identitet innan du kan se konsumenthemligheten. |
grant_type |
OAuth 2.0-beviljandetypen som den externa klientappen begär. För klientuppgifterflödet måste detta värde vara inställt till För en detaljerad förklaring av beviljandetypen för klientuppgifter, se avsnittet 4,4 Beviljande av klientuppgifter i OAuth 2.0-auktoriseringsramverket från Internet Engineering Task Force. |
Här är ett exempel med klientuppgifterna i ett huvud för grundläggande auktorisering. Med detta format läggs client_id till i client_secret i formatet client_id:client_secret och det resulterande värdet är Base64-kodat.
POST /services/oauth2/token HTTP/1.1
Host: MyDomainName.my.salesforce.com
Header: Authorization: Basic
TXlDbGllbnRJRDpNeUNsaWVudFNlY3JldA==
grant_type=client_credentialsOm du använder detta format är grant_type den enda obligatoriska parametern i begärans brödtext. grant_type måste vara satt till client_credentials.
Salesforce beviljar en åtkomsttoken
Efter att ha validerat klientuppgifterna returnerar Salesforce ett svar som innehåller en åtkomsttoken och begärda omfattningar. Appen kan använda åtkomsttoken för att komma åt skyddade data i Salesforce.
Här är ett exempel på ett svar för åtkomsttoken i JSON-format.
{
"access_token": "*******************",
"instance_url": "https://yourInstance.salesforce.com",
"id": "https://login.salesforce.com/id/XXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXX",
"token_type": "Bearer",
"scope": "id api",
"issued_at": "1657741493799",
"signature": "c2lnbmF0dXJl"
}Dessa parametrar inkluderas i svaret.
| Parameter | Beskrivning |
|---|---|
access_token
|
OAuth-token som en extern klientapp 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. |
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 för att identifiera organisationen och integreringsanvändaren. Formatet för URL:en är https://login.salesforce.com/id/orgID/userID. |
token_type
|
En Bearer som används för alla svar som innehåller en åtkomsttoken.
|
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 extern klientapp när du bygger den, och de inkluderas med OAuth-tokens under auktoriseringsflödet. Eftersom klientuppgifterflödet inte har stöd för användargränssnittsessioner och inte utfärdar en uppdateringstoken, filtrerar Salesforce automatiskt bort dessa omfattningar.
Mer information finns i OAuth-token och -omfång. |
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, som du kan använda för att bekräfta att identitets-URL:en inte har ändrats sedan servern skickade den. |

