V1 - AVVIKLET - STS, System til System
MERK! Alle API klienter må så raskt som mulig, og senest inne 1. juli 2023 går over til V2 av dette endepunktet.
Løsningskomponenter og informasjonsflyt
Sekvensen er som følger:
Når systemet trenger å benytte et API på Helsenorge eller i PVK, gjør systemet et kall mot Helsenorge Sikkerhetstjeneste.
Helsenorge Sikkerhetstjeneste autentiserer systemet/klienten.
Helsenorge Sikkerhetstjeneste sjekker hvilke autorisasjoner det aktuelle system/klient har og gir ut et AcsessToken som representerer disse rettighetene.
Systemet kaller et Helsenorge API-endepunkt og ber om tilgang til ressurs, AcsessToken er med i requesten
Helsenorge API-tjeneste kontrollerer at de rettigheter som trengs er representert av AcsessTokenet.
API-kall utføres og resultat returneres til systemet.
Teknologi og forutsetninger
Helsenorge sikkerhetstjeneste er eksponert i et endepunkt der den representerer en STS - Secure Token Service
Det eksterne systemet autentiserer seg ved å benytte såkalt "Client Credentials Grant" slik dette er spesifisert i Kapittel 4.4 i Oauth2 spesifikasjonen
Det kreves at klienten er "Confidential client", dvs. at den kan beskytte en hemmelighet
Hvordan benytte Helsenorge Sikkerhetstjeneste
URL’er til Helsenorge sikkerhetstjeneste
Hvert miljø har sin egen STS og tokenet som returneres fra denne gir kun tilgang til API kall mot samme miljø.
https://[BaseURL]/sts/Token
Base URL til endepunktene i de forskjellige miljøene finner du her: Testmiljøer og endepunkter
Kall til Helsenorge sikkerhetstjeneste
HTTP verb: POST
Man kan velge om body (med tilhørende angivelse i header) skal være:
application/x-www-form-urlencoded
application/json
Request
Headers
Key | Value |
---|---|
Content-Type | application/x-www-form-urlencoded eller application/json |
Body
Key | Value | Kommentar |
---|---|---|
grant_type | client_credentials | |
client_id | En GUID som identifiserer klienten | Utstedes av NHN |
client_secret | Tilhørende passord til klienten | Utstedes av NHN |
Response
Vellykket response
Parameter | Verdi | Kommentar |
---|---|---|
access_token | Generert referanse JWT | Er av type JWT med claims for klient id og referanse token. Benyttes videre for kall til andre API'er til Helsenorge. |
expires_in | 30 minutter i sekunder | |
token_type | bearer |
Feil response
Parameter | Verdi |
---|---|
code | Tallkode for referanse til type feil internt i Helsenorge |
message | Eventuell beskrivelse relatert til feilen |
errorCategory | Feilkategori |
statusCode | Samsvarer med HttpStatusCode til responsen |
korrelasjonsId | En GUID for referanse til logger internt i Helsenorge |
Eksempel
Følgende CURL kommandoer kan benyttes for å teste integrasjonen. Erstatt <tekst> med reelle verdier.
Request
Form urlencoded
curl -X POST \
-H 'Content-Type=application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials&client_id=<Client Id (GUID)>&client_secret=<Client Secret>' \
<URL> (Test eller produksjon, se over)
JSON
curl -X POST \
-H "Content-Type: application/json" \
-d '{"grant_type": "client_credentials", "client_id": "<Client Id (GUID)>", "client_secret": "<Client Secret>' \
<URL> (Test eller produksjon, se over)
Response
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsInZlciI6MSwidHlwXzIiOiJyZWYifQ.eyJqdGkiOiJlNjJmNGExYS1hYmZiLTQ3OGYtYjUwOS0xMzZlM
zhkYTVhYzIiLCJjbGllbnRfaWQiOiI1ZDRmNzlhNS00NTliLTQyOWEtOTcwYS03ZWRjMjQzMjk2MGMiLCJjbGllbnRfbmFtZSI6IkVrc3Rlcm4gdGVzd
GtsaWVudCIsInJlZl90b2tlbiI6IlZhNEhId2xjc1l6aTlZN1k3bEp5akw1V2dZbXVQaHVZakNDblp5bUdGRm8iLCJyZWZfdG9rZW5fdHlwZSI6IkZ1b
GwiLCJ6b25lIjoiZWtzdGVybl9pbnRlcm5ldHQiLCJuYmYiOjE1NTQxMDE4NTMsImV4cCI6MTU1NDEwMzY1MywiaWF0IjoxNTU0MTAxODUzLCJpc3MiO
iJzaWtrZXJoZXQuaGVsc2Vub3JnZS5ubyJ9.hZvCrBx2yNiMzP3_dx0tYBxCookFFQ8EDWtPp3PfUCQ",
"expires_in": 1800,
"token_type": "bearer"
}