Konfigurera och använda organisationens anpassade OAuth 2-program med PKCE-flöde
PKCE är ett säkert auktoriseringsflöde som fungerar bra med dynamiskt uppdaterade program som mobilappar, men som är värdefullt för alla OAuth2-klienter. I stället för en statisk klienthemlighet använder PKCE en dynamiskt genererad sträng, vilket eliminerar risken för en läckt klienthemlighet.
PKCE - översikt
Ett PKCE-flöde har följande steg. Stegen i det här avsnittet visas endast i informationssyfte. Om du vill utföra dessa procedurer läser du i andra avsnitt i den här artikeln.
-
Klienten skapar
code_challengegenom att omformacode_verifiermed hjälp avS256-kryptering. -
Klienten dirigerar webbläsaren till inloggningssidan för OAuth2, tillsammans med den genererade
code_challenge. Du måste registrera din app (Client) så att OAuth2 kan godkänna auktoriseringsbegäran. Efter registreringen kan din app dirigera om webbläsaren till OAuth2. -
Auktoriseringsservern OAuth2 dirigerar om autentiseringsfrågan till användaren.
-
Användaren autentiserar med ett av de konfigurerade inloggningsalternativen och kan se en sida med godkännande där de behörigheter som OAuth2 ger till programmet listas.
-
OAuth2 dirigerar tillbaka till ditt program med en
authorization code. -
Programmet skickar den här koden tillsammans med
code_verifiertill OAuth2. -
OAuth2 Authorization Server transformerar
code_verifiermedcode_challenge_methodfrån den ursprungliga auktoriseringsbegäran och kontrollerar resultatet motcode_challenge. Om värdet för båda strängarna matchar har servern verifierat att förfrågningarna kom från samma klient och kommer att utfärda enaccess token. -
OAuth2 returnerar
access tokenoch eventuellt enrefresh token. -
Programmet kan nu använda dessa token för att anropa resursservern, till exempel ett API för användarens räkning.
-
Resursservern validerar token innan den svarar på begäran.
Konfigurera programmet
Innan du kan implementera auktorisering måste du registrera din app i OAuth2 genom att skapa en appintegrering från Workfront.
Instruktioner om hur du skapar OAuth2-programmet finns i Skapa ett OAuth2-webbprogram med en sida med PKCE i Skapa OAuth2-program för Workfront-integreringar
Skapa korrekturnyckeln för kodutbyte
På samma sätt som standardflödet för auktoriseringskoder börjar din app med att dirigera om användarens webbläsare till /authorize-slutpunkten för auktoriseringsservern. I det här fallet måste du dock även skicka en kodutmaning.
Det första steget är att generera en kodverifierare och en utmaning.
Du måste lägga till kod i klientappen för att skapa kodverifieraren och kodutmaningen.
PKCE-generatorkoden skapar utdata som liknar följande:
| code language-none |
|---|
|
Din app sparar code_verifier senare och skickar code_challenge tillsammans med auktoriseringsbegäran till auktoriseringsserverns /authorize-URL.
Begär en auktoriseringskod
Om du använder standardservern för anpassad auktorisering ser din begärande-URL ut ungefär så här:
| code language-none |
|---|
|
Observera de parametrar som skickas:
-
client_idmatchar klient-ID:t för OAuth2-programmet som du skapade i när du konfigurerade programmet.Instruktioner finns i Skapa ett ensidigt OAuth2-webbprogram med PKCE i Skapa OAuth2-program för Workfront-integreringar.
-
response_typeärcodeeftersom programmet använder behörighetstypen Auktoriseringskod. -
redirect_uriär återanropsplatsen som användaragenten dirigeras till tillsammans medcode. Detta måste matcha en av de omdirigerings-URL:er som du angav när du skapade OAuth2-programmet. -
code_challenge_methodär den hash-metod som används för att generera utmaningen, som alltid ärS256för Workfront Oauth2-program som använder PKCE. -
code_challengeär den kodutmaning som används för PKCE.
Byta ut koden för tokens
Om du vill ändra auktoriseringskoden för en åtkomsttoken skickar du den till auktoriseringsserverns /token-slutpunkt tillsammans med code_verifier.
| code language-none |
|---|
|
Observera de parametrar som skickas:
-
grant_typeärauthorization_codeeftersom appen använder behörighetstypen Auktoriseringskod. -
redirect_urimåste matcha den URI som användes för att hämta auktoriseringskoden. -
codeär auktoriseringskoden som du fick från slutpunkten /authorized. -
code_verifierär PKCE-kodverifieraren som din app genererade i Skapa korrekturnyckeln för kodutbyte. -
client_ididentifierar klienten och måste matcha värdet som är förregistrerat i OAuth2.
Om koden fortfarande är giltig och kodverifieraren matchar, får ditt program en åtkomsttoken.
| code language-none |
|---|
|
Validera åtkomsttoken
När programmet skickar en begäran med en åtkomsttoken måste resursservern validera den.
Du kan validera din åtkomsttoken med ett API-anrop som liknar följande:
| code language-none |
|---|
|
Begär en uppdateringstoken
Om du vill begära en uppdateringstoken kan du göra ett POST-anrop till API:t som liknar följande:
| code language-none |
|---|
|