Hur fungerar OAuth2 för mig som klient?
För mer information om OAuth2, se https://oauth.net/2/.
API Gateway kommer att hantera autentisering på två sätt:
- En statisk accessnyckel för APIer med informationssäkerhetsnivå 0 (Öppna APIer)
- Accessnyckel med begränsad giltighetstid för övriga APIer
Klientapplikationslogik – statisk accessnyckel
Nedan följer en kort summering av den logik som klienter till Sundsvalls kommuns APIer behöver implementera för att kunna anropa APIer med statiska accessnycklar:
- Den statiska accessnyckeln fås efter kontakt med ägaren av APIet, distribuerad via en säker digital kanal (krypterad e-post t ex)
- Denna nyckel skall skickas med i header i anropet till de REST-APIer vi exponerar i API Gateway. Accessnyckeln måste lagras hos klienten (databas, fil etc.)
Exempel (curl)
Consumer Key:dummyAUHGGJ2244
Consumer Secret: dummyD6jjd9887
Base64 encoded Consumer Key: Consumer Secret =
NmQxTmNLaVRJU2JWRW00ascXT3lJTmE5X2RrYTo5R1JkMURnQ0lDc1l1SHJnTUJYZGJqUHlkZ1Fh
Använd accessnyckel (för ett Hello World-API)
Accessnyckeln skall skickas med i header i anropet till APIet.
curl -X GET –header ”Accept: application/json” –header ”Authorization: Bearer 54f3013afe55022d75e711ec2b3a6ae6” https://api-manager-url/helloWorld/1.0.0/?
{ ”answer”: ”Hello World”}
Klientapplikationslogik – tidsbegränsad accessnyckel
Nedan följer en kort summering av den logik som klienter till Sundsvalls kommuns APIer behöver implementera för att kunna anropa APIer med tidsbegränsade accessnycklar:
- Klientapplikationen hämtar en accessnyckel genom att anropa API Managers token-API (https://api-manager-url/token). Klienten skall autentisera sig med en API-nyckel (Consumer Key: Consumer Secret) vid anrop mot token-APIet. API-nyckeln skall vara Base64-kodad.
- Klienten får en accessnyckel i svar på anropet till token-APIet. Denna nyckel skall skickas med i header i anropet till de REST-APIer vi exponerar i API Gateway. Accessnyckeln måste lagras hos klienten, i minnet eller på annat sätt (databas, fil etc.)
- När en accessnyckel inte längre är giltig kommer klienten att få http 401 i svar på ett API-anrop. När så sker måste klienten hämta en ny nyckel som i steg 1 ovan och göra om sitt API-anrop
Exempel (curl)
Consumer Key:dummyAUHGGJ2244
Consumer Secret: dummyD6jjd9887
Base64 encoded Consumer Key: Consumer Secret =
NmQxTmNLaVRJU2JWRW00ascXT3lJTmE5X2RrYTo5R1JkMURnQ0lDc1l1SHJnTUJYZGJqUHlkZ1Fh
Hämta accessnyckel
Steg ett är att hämta accessnykeln via token-APIet.
curl -k -d ”grant_type=client_credentials” -H ”Authorization: Basic
NmQxTmNLaVRJU2JWRW00ascXT3lJTmE5X2RrYTo5R1JkMURnQ0lDc1l1SHJnTUJYZGJqUHlkZ1Fh ” https://api-manager-url/token
{”access_token”:”54f3013afe55022d75e711ec2b3a6ae6″,”scope”:”am_application_scope default”,”token_type”:”Bearer”,”expires_in”:9223372036854775}
Använd accessnyckel (för ett Hello World-API)
Accessnyckeln som hämtades i steg ett skall skickas med i header i anropet till APIet.
curl -X GET –header ”Accept: application/json” –header ”Authorization: Bearer 54f3013afe55022d75e711ec2b3a6ae6” https://api-manager-url/helloWorld/1.0.0/?
{ ”answer”: ”Hello World”}
När accessnyckeln har gått ut
En accessnyckel har en konfigurerar giltighetstid. När giltighetstiden har gått ut returnerar API Gateway http 401 not authorized. Klienten skall då hämta en ny accessnyckel i enlighet med beskrivningen under ”Hämta accessnyckel” ovan.
curl -X GET –header ”Accept: application/json” –header ”Authorization: Bearer 54f3013afe55022d75e711ec2b3a6ae6” https://api-manager-url/helloWorld/1.0.0/?
http 401
Access failure for API: /helloWorld/1.0.0, version: 1.0.0. Make sure your have given the correct access token