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_challenge
genom att omformacode_verifier
med 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_verifier
till OAuth2. -
OAuth2 Authorization Server transformerar
code_verifier
medcode_challenge_method
frå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 token
och 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_id
matchar 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
ärcode
eftersom 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 ärS256
fö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_code
eftersom appen använder behörighetstypen Auktoriseringskod. -
redirect_uri
må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_id
identifierar 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 på ungefär följande sätt:
code language-none |
---|
|