Pil höger Pil vänster Pil ned Pil up Kaldender Stäng Ladda ned Redigera Fel Notifikation RSS Sök Stjärna Ladda upp Skriva Blixt Stopp Soptunna Vind Vågor Gran Löv Sol Stuga Vattendroppe Eld Fiskben Position Karta Statistik Glödlampa Naturlig försurning Gift Begränsad miljöpåverkan Stäng Meny Minus Plus Minus med cirkel Plus med cirkel
Hoppa till innehåll

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:

  1. En statisk accessnyckel för APIer med informationssäkerhetsnivå 0 (Öppna APIer)
  2. 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:

  1. Den statiska accessnyckeln fås efter kontakt med ägaren av APIet, distribuerad via en säker digital kanal (krypterad e-post t ex)
  2. 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:

  1. 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.
  2. 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.)
  3. 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

Klientkod – bibliotek

Se https://oauth.net/code/

Sidansvarig
Per Persson