Loading
Identifiera dina användare och hantera åtkomst
OAuth 2.0-webbserverflöde för integrering av webbapp

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
Anteckning
Anteckning Skapande av anslutna appar är begränsat från och med utgåvan Spring ‘26. Du kan fortsätta använda befintliga anslutna appar under och efter Spring ‘26. Vi rekommenderar dock att använda externa klientappar istället. Om du måste fortsätta skapa anslutna appar, kontakta Salesforces support.

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

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

Inkludera 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 false. Om du ställer in denna parameter till true inträffar ett av dessa scenarion.

  • Om användaren är inloggad och tidigare har godkänt klientens åtkomst hoppar Salesforce över godkännandesteget.
  • Om användaren inte är inloggad eller inte tidigare har godkänt klientens åtkomst avslutas Salesforce omedelbart med immediate_unsuccessful.

Alternativet immediate är inte tillgängligt för Experience Cloud-webbplatser.

code_challenge

Anger SHA256-hashvärdet för code_verifier i tokenbegäran. Ange denna parameter för att hjälpa till att förhindra attacker med avlyssning av auktoriseringskoden. Värdet måste vara base64url-kodat enligt vad som definieras i https://tools.ietf.org/html/rfc4648#section-5.

Denna parameter krävs om en code_verifier specificeras i tokenbegäran.

  • Om code_challenge anges i auktoriseringsbegäran och ett code_verifier anges i tokenbegäran jämför Salesforce code_challenge med code_verifier. Om code_challenge är ogiltig eller inte matchar misslyckas inloggningen med invalid_request.
  • Om code_challenge anges i auktoriseringsbegäran men inget code_verifier anges i tokenbegäran misslyckas inloggningen med invalid_grant.
display

Ändrar visningstypen för sidorna för inloggning och auktorisering. Salesforce har stöd för dessa värden.

  • page—Helsides auktoriseringsskärm (standard).
  • popup—Kompakt dialog optimerad för moderna webbläsares popup-fönster.
  • touch—Mobiloptimerad dialog utformad för moderna mobila enheter, som Android och iPhone.
  • mobile—Mobiloptimerad dialog utformad för mindre kapabla enheter, som till exempel operativsystemet BlackBerry 5.
login_hint

Anger ett giltigt användarnamnvärde för att fylla i inloggningssidan med användarnamnet, till exempel login_hint=username@company.com. Om en användare redan har en aktiv session i webbläsaren gör login_hint ingenting och den aktiva användarsessionen fortsätter.

För att skicka login_hint för Experience Cloud-webbplatser, skicka även prompt=login. Tillsammans omdirigerar dessa parametrar användaren till inloggningssidan med rätt inloggningstips.

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.

  • login—Auktoriseringsservern måste be användaren om återautentisering, vilket tvingar användaren att logga in igen.
  • consent—Auktoriseringsservern måste be användaren om återgodkännande innan information returneras till klienten.
  • select_account—Om det visas, utför en av dessa åtgärder.
    • Om noll eller en ledtråd finns och användaren är inloggad, visa godkännandesidan utan att be om inloggning.
    • Om noll eller en ledtråd finns och användaren inte är inloggad, be om inloggning.
    • Om fler än en ledtråd finns, visa kontoväljaren.

Du kan skicka värden för login och consent separerade med ett blanksteg för att kräva att användaren loggar in och autentiserar igen. Exempel: ?prompt=login%20consent

Uvid-Hint sidhuvud

Om du vill ansluta detta flöde till det sidhuvudlösa gästflödet kan du inkludera ett Uvid-Hint med en JWT-baserad åtkomsttoken som innehåller ett UVID-värde, vilket är en universellt unik identifierare (UUID) av version 4 som din app skapar och hanterar. För att få en åtkomsttoken med en UVID måste du aktivera din anslutna app för att utfärda JWT-baserade åtkomsttokens och implementera det sidhuvudlösa gästflödet i din app.

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 UVID, vilket är ett UUID av version 4 som din app skapar och hanterar. För att få en UVID måste du aktivera din anslutna app för att utfärda JWT-baserade åtkomsttokens och implementera det sidhuvudlösa gästflödet i din app. Du kan om du vill använda denna parameter för att skicka in ett UVID-värde som är knutet till en gästanvändares identitet och föra in sammanhangsinformation från en gästanvändarsession i en namngiven användarsession.

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 UVID-Hint.

Användare autentiserar och auktoriserar åtkomst

Innan Salesforce tillhandahåller auktoriseringskoder till anslutna appar ombes de autentiserande användarna logga in i Salesforce.

Inloggningssida i Salesforce-org

Efter framgångsrik inloggning omdirigerar Salesforce användare till godkännandesidan för att bevilja åtkomst åt appen.

Godkännandesida för att bevilja åtkomst åt den anslutna 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.

Viktig
Viktig När du utvecklar OAuth-integreringar, skicka alltid känslig information i brödtexten i en POST-begäran eller i ett begärandesidhuvud. Använd inte GET-parametrar i URL-frågesträngen för att skicka känslig information. Känslig information inkluderar men är inte begränsad till användarnamn, lösenord, OAuth-tokens, klienthemligheter och all personligt identifierande information. Mer information om rekommenderade metoder för säkerhet finns i Lagra känsliga data i Säker kodningsguide.
Parameter Beskrivning
Request Header

Begäranderubriken kan innehålla dessa parametrar.

  • Salesforce OAuth 2.0-slutpunkten. Anslutna appar skickar OAuth-tokenbegäranden till denna slutpunkt.
  • URL för värdtjänsten.
  • Längden på begärans innehåll.
  • Det begärda formatet för det returnerade svaret. Dessa format stöds.
    • Accept: application/json
    • Accept: application/xml
    • Accept: application/x-www-form-urlencoded

Begäransidhuvudet har även stöd för dessa parametrar.

  • Jokertecknet */* accepteras och returnerar JSON.
  • En lista över värden som kontrolleras vänster-till-höger. Exempel: application/xml,application/json,application/html,*/* returnerar XML.

Parametern format har företräde framför sidhuvudet för åtkomstbegäran.

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 client_secret krävs och den anslutna appen skickar den i auktoriseringsbegäran försöker Salesforce validera den ändå.

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

Värdet för client_assertion_type måste vara urn:ietf:params:oauth:client-assertion-type:jwt-bearer.

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 code. Ange denna parameter för att hjälpa till att förhindra attacker med avlyssning av auktoriseringskoden. Värdet måste vara base64url-kodat enligt vad som definieras i https://tools.ietf.org/html/rfc4648#section-5.

  • Om code_verifier-värdet anges i tokenbegäran och ettcode_challenge-värde finns i autentiseringsbegäran jämför Salesforce code_verifier med code_challenge. Om code_verifier är ogiltig eller inte matchar misslyckas inloggningen med invalid_grant.
  • Om värdet code_verifier anges i tokenbegäran men inget värde code_challenge anges i auktoriseringsbegäran misslyckas inloggningen med invalid_grant.
format

Om det inte inkluderas i begärans sidhuvud kan du specificera det förväntade returformatet. Parametern format har företräde framför begärans sidhuvud. Dessa format stöds.

  • urlencoded
  • json (standard)
  • xml

Använd 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.

  • issclient_id från definitionen av den anslutna appen.
  • subclient_id frå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.

Autentiseringsschemat HTTP Basic

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.jsp
Anteckning
Anteckning Om client_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 openid.

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.

Parameter Beskrivning
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.

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.
state Det läge som begärs av klienten. Detta värde inkluderas endast om parametern state inkluderas i den ursprungliga sökfrågesträngen.
 
Laddar
Salesforce Help | Article