OAuth 2.0-webbserverflöde för integrering av webbapp
För att integrera en extern webbapp med Salesforce API, använd OAuth 2.0-webbserverflödet, som implementerar beviljandetypen OAuth 2.0-auktoriseringskod. Med detta flöde måste servern som är värd för webbappen kunna skydda den anslutna appens identitet, definierad av klient-ID:t och klienthemligheten.
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.
Vi rekommenderar att du använder webbserverflödet med Proof Key for Code for Exchange (PKCE, pronunciat pixy) istället för användar-agent-flödet eller användarnamn-lösenord-flödet för specialscenarion. Använd parametrarna code_challenge och code_verifier för att implementera PKCE med webbserverflödet. Mer information om PKCE finns i Internet Engineering Task Force (IETF). Vi rekommenderar även att du blockerar alla anslutna appar från att använda användar-agent-flödet eller användarnamn-lösenord-flödet. För steg, se Blockera auktoriseringsflöden för att förbättra säkerhet.
Här är ett exempel på en användningsfall för att implementera webbserverflödet. Du har nyligen utvecklat en webbtjänst som ger säker åtkomst till kunders orderstatus. Dina orderstatusdata lagras säkert på din Salesforce CRM-plattform. För att auktorisera Help Desk-användare att se en kunds orderstatus utvecklar du appen Orderstatus och konfigurerar den som en ansluten app med webbserverflödet.
- En Help Desk-användare klickar på webbappen Orderstatus.
- Den anslutna appen publicerar en begäran om auktoriseringskod till Salesforce-auktoriseringslutpunkten.
- Användaren omdirigeras till Salesforces inloggningssida. Efter framgångsrik inloggning ombes användaren godkänna appens åtkomst till orderstatusdata.
- Efter att användaren har godkänt att appen Orderstatus får åtkomst till datan skickar Salesforce en callback till appen Orderstatus med en auktoriseringskod.
- Appen Orderstatus skickar auktoriseringskoden till Salesforce-tokenslutpunkten och begär en åtkomsttoken.
- Salesforce validerar auktoriseringskoden och skickar tillbaka en åtkomsttoken som inkluderar associerade behörigheter i form av omfattningar.
- Appen Orderstatus skickar en begäran tillbaka till Salesforce för att komma åt orderstatusdatan. Begäran innehåller åtkomsttoken med associerade omfattningar.
- Salesforce validerar åtkomsttoken och associerade omfattningar.
- Appen Orderstatus kan komma åt den skyddade datan och kundens orderstatus visas i appen.
Anteckning Om åtkomsttoken blir ogiltig kan den anslutna appen använda en uppdateringstoken för att få en ny åtkomsttoken.
Låt oss ta en närmare titt på varje steg i detta auktoriseringsflöde.
- Begär en auktoriseringskod
- Användare autentiserar och auktoriserar åtkomst
- Salesforce beviljar auktoriseringskod
- Begär en åtkomsttoken
- Salesforce beviljar en åtkomsttoken
Begär en auktoriseringskod
För att inleda OAuth 2.0-webbserverflödet publicerar den externa webbtjänsten—via den anslutna appen—en begäran om en auktoriseringskod med beviljandetypen Auktoriseringskod till Salesforce-auktoriseringsslutpunkten. Med en auktoriseringskod kan den anslutna appen bevisa att den har auktoriserats som en säker besökare på webbplatsen och att den har behörighet att begära en åtkomsttoken.
Auktoriseringskoden är i form av en HTTP-omdirigering.
https://MyDomainName.my.salesforce.com/services/oauth2/authorize?
client_id=3MVG9IHf89I1t8hrvswazsWedXWY0i1qK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback&
response_type=codeInkludera dessa parametrar i en begäran om en auktoriseringskod.
| Parameter | Beskrivning |
|---|---|
Request Header
|
Salesforce OAuth 2.0-auktoriseringsslutpunkten. Anslutna appar skickar begäranden om OAuth-auktorisering till denna slutpunkt. |
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. |
redirect_uri
|
Den URL dit användare omdirigeras efter en framgångsrik autentisering. Omdirigerings-URI måste matcha ett av värdena i den anslutna appens fält Callback-URL. Annars misslyckas godkännandet. Du hittar omdirigerings-URI på den anslutna appens sida Hantera anslutna appar eller från den anslutna appens definition. Detta värde måste vara URL-kodat. |
response_type
|
Den OAuth 2.0 grant type som den anslutna appen begär. Värdet för detta flöde måste vara code för att indikera att den anslutna appen begär en auktoriseringskod. |
Du kan även inkludera dessa parametrar i en begäran om en auktoriseringskod.
| Parameter | Beskrivning |
|---|---|
scope
|
Behörigheter som definierar vilken typ av skyddade resurser en ansluten app kan komma åt. Du tilldelar omfattningar till en ansluten app när du bygger den, och de inkluderas med OAuth-tokens under auktoriseringsflödet. Om du inte inkluderar denna parameter begärs alla omfattningar som är tilldelade till den anslutna appen. Omfattningen som skickas i denna parameter måste vara en underuppsättning av de registrerade omfången. |
sso_provider
|
Utvecklarnamnet på en identitetsleverantör med enkel inloggning (SSO) konfigurerad med en inloggnings-URL för Min domän eller Experience Cloud-webbplats-URL. Du kan använda denna parameter för att skapa en SSO-upplevelse som känns som att din app är integrerad med SSO-leverantören. Du kan till exempel använda denna parameter för att erbjuda SSO i en implementering av Sidhuvudlös identitet. |
state
|
Ett läge som den externa webbtjänsten begär ska skickas till callback-URL:en. Detta värde måste vara URL-kodat. |
immediate
|
Ett booleskt värde som avgör om användaren uppmanas logga in och godkänna. Standardvärdet är
Alternativet |
code_challenge
|
Anger SHA256-hashvärdet för Denna parameter krävs om en
|
display
|
Ändrar visningstypen för sidorna för inloggning och auktorisering. Salesforce har stöd för dessa värden.
|
login_hint
|
Anger ett giltigt användarnamnvärde för att fylla i inloggningssidan med användarnamnet, till exempel För att skicka |
nonce
|
Använd med omfattningen openid för att begära en användar-ID-token. Användarens ID-token returneras i svaret. Denna parameter är valfri, men hjälper till att upptäcka reprisattacker.
|
prompt
|
Specificerar hur autentiseringsservern frågar användaren om återautentisering och återgodkännande. Salesforce har stöd för dessa värden.
Du kan skicka värden för |
Uvid-Hint sidhuvud |
Om du vill ansluta detta flöde till det sidhuvudlösa gästflödet kan du inkludera ett Om du implementerar gästanvändarflödet i din app kan du om du vill använda detta sidhuvud för att skicka in en JSON Web Token-baserad åtkomsttoken (JWT) som innehåller ett unikt besökar-ID (UVID) knutet till en gästanvändares identitet. Genom att skicka UVID till ett namngivet användarflöde kan du överföra sammanhangsinformation från en gästanvändarsession, som användarens cookie-inställningar, till en namngiven användarsession. |
uvid_hint body-parameter |
Ett vanligt Istället för att skicka UVID i begärans brödtext kan du även skicka den i en JWT-baserad token med en UVID via |
Användare autentiserar och auktoriserar åtkomst
Innan Salesforce tillhandahåller auktoriseringskoder till anslutna appar ombes de autentiserande användarna logga in i Salesforce.
Efter framgångsrik inloggning omdirigerar Salesforce användare till godkännandesidan för att bevilja åtkomst åt appen.
Om användare tidigare har godkänt åtkomst behöver du inte godkänna åtkomst igen.
Salesforce beviljar auktoriseringskod
Efter att användare godkänner åtkomst till en ansluten app omdirigerar Salesforce användare till callback-URL:en, där de kan visa callbacken med en auktoriseringskod.
https://www.mycustomerorderstatus.com/oauth2/callback?
code=aPrx4sgoM2Nd1zWeFVlOWveD0HhYmiDiLmlLnXEBgX01tpVOQMWVSUuafFPHu3kCSjzk4CUTZg==- Den första delen av callbacken är den anslutna appens callback-URL:
https://www.mycustomerorderstatus.com/oauth2/callback. - Den andra delen är den auktoriseringskod som den anslutna appen använder för att få en åtkomsttoken:
code=aPrx4sgoM2Nd1zWeFVlOWveD0HhYmiDiLmlLnXEBgX01tpVOQMWVSUuafFPHu3kCSjzk4CUTZg==. Auktoriseringskoden går ut efter 15 minuter.
Om parametern state inkluderas i den ursprungliga sökfrågesträngen skickas det specificerade läget till godkännandesteget.
Begär en åtkomsttoken
För att begära en åtkomsttoken skickar den anslutna appen auktoriseringskoden till Salesforce-tokenslutpunkten som ett HTTP POST.
POST /services/oauth2/token HTTP/1.1
Host: mycompany.my.salesforce.com
Content-length: 307
Content-type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=aPrxhgZ2MIpkSy0aOdn07LjKFvsFOis6RGcWXz7p8JQCjcqfed5NQLe7sxWwMY_JQFuLwHRaRA==&
client_id=3MVG9IHf89I1t8hrvswazsWedXWY0iqK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
client_secret=*******************&
redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback
POST i exemplet innehåller dessa parametrar.
| Parameter | Beskrivning |
|---|---|
Request Header
|
Begäranderubriken kan innehålla dessa parametrar.
Begäransidhuvudet har även stöd för dessa parametrar.
Parametern |
grant_type
|
Den typ av validering som den anslutna appen kan tillhandahålla för att bevisa att den är en säker besökare. För webbserverflödet måste värdet vara authorization_code. |
code
|
En tillfällig auktoriseringskod som fås från auktoriseringsservern. Den anslutna appen använder denna kod i utbyte mot en åtkomsttoken. Denna typ av OAuth 2.0-flöde är ett säkert sätt att skicka åtkomsttoken tillbaka till programmet. |
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, 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 konsumenthemligheten. Denna parameter krävs om inte den anslutna appen inte har Kräv hemlighet för webbserverflöde aktiverat. Om ingen |
redirect_uri
|
Den URL dit användare omdirigeras efter en framgångsrik autentisering. Omdirigerings-URI måste matcha ett av värdena i den anslutna appens fält Callback-URL. Annars misslyckas godkännandet. Du hittar omdirigerings-URI på den anslutna appens sida Hantera anslutna appar eller från den anslutna appens definition. Detta värde måste vara URL-kodat. |
Du kan även inkludera dessa parametrar.
| Parameter | Beskrivning |
|---|---|
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.
|
client_assertion_type
|
Ange detta värde när du använder parametern Värdet för |
code_verifier
|
Krävs endast om en code_challenge-parameter specificerades i auktoriseringsbegäran. Specificerar 128 bytes slumpmässiga data med hög entropi för att göra det svårt att gissa
|
format
|
Om det inte inkluderas i begärans sidhuvud kan du specificera det förväntade returformatet. Parametern
|
client_assertion istället för client_secret.Om du anger en client_assertion istället för en client_secret måste värdet på client_assertion inkludera dessa parametrar.
iss—client_idfrån definitionen av den anslutna appen.sub—client_idfrån definitionen av den anslutna appen.aud—Tokenservlet-URL: https://hostname/services/oauth2/token.exp—Förfallotiden för kontrollen inom 5 minuter, uttryckt som antalet sekunder från 1970-01-01T0:0:0Z mätt i UTC.
client_assertion måste även signeras med den privata nyckel som är associerad med OAuth-konsumentens uppladdade certifikat. Endast algoritmen RS256 stöds. För autentiseringsmetoden för private_key_jwt, se OpenID Connect-specifikationerna.
Istället för att skicka klientuppgifter som parametrar i brödtexten i POST har Salesforce stöd för autentiseringsschemat HTTP Basic. Detta schemas format kräver client_id och client_secret i inläggets auktoriseringssidhuvud enligt följande:
Authorization: Basic64Encode(client_id:secret)
client_id och client_secret avgränsas med ett kolon (:). Mer information finns i dokumentet OAuth 2.0-autentiseringsramverk.
Detta exempel visar en POST-begäran för en åtkomsttoken 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: mycompany.my.salesforce.com
Authorization: Basic client_id=3MVG9IHf89I1t8hrvswazsWedXWY0iqK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
client_secret=*******************&
grant_type=authorization_code&code=aPrxsmIEeqM9PiQroGEWx1UiMQd95_5JUZ
VEhsOFhS8EVvbfYBBJli2W5fn3zbo.8hojaNW_1g%3D%3D&
redirect_uri=https%3A%2F%2Fwww.mysite.com%2Fcode_callback.jspclient_id och client_secret skickas i POST:s brödtext ignoreras auktoriseringssidhuvudet.Salesforce beviljar en åtkomsttoken
Efter att Salesforce har validerat den anslutna appens uppgifter returnerar den ett svar med åtkomsttoken. I detta exempel är svaret i ett JSON-format.
{
"access_token": "00DB0000000TfcR!AQQAQFhoK8vTMg_rKA.esrJ2bCs.OOIjJgl.9Cx6O7KqjZmHMLOyVb.U61BU9tm4xRusf7d3fD1P9oefzqS6i9sJMPWj48IK",
"signature": "d/SxeYBxH0GSVko0HMgcUxuZy0PA2cDDz1u7g7JtDHw=",
"scope": "web openid",
"id_token": "eyJraWQiOiIyMjAiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdF9oYXNoIjoiSVBRNkJOTjlvUnUyazdaYnYwbkZrUSIsInN1YiI6Imh0dHBzOi8vbG9...",
"instance_url": "https://mycompany.my.salesforce.com",
"id": "https://login.salesforce.com/id/00DB0000000TfcRMAS/005B0000005Bk90IAC",
"token_type": "Bearer",
"issued_at": "1558553873237"
}
Svaret inkluderar dessa parametrar.
| 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. |
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. |
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. |
id_token
|
En signerad datastruktur som innehåller autentiserade användarattribut, inklusive en unik identifierare för användaren och en tidsstämpel som anger när token utfärdades. Den identifierar även den begärande klientappen. Se Specifikationer för OpenID Connect. Denna parameter returneras om scopeparametern inkluderar |
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. |
token_type
|
En Bearer som används för alla svar som innehåller en åtkomsttoken.
|
issued_at
|
Tidsstämpel då signaturen skapades i millisekunder. |
Svaret kan även innehålla dessa parametrar.
