/par
I tidligere OAuth2/OpenId Connect standarder så ble alle parameterne sendt inn til Authorize-endepunktet. Ved bruk av Pushed Authorization Request (PAR) så gjøres det i steden først et HTTP-kall mot et PAR-endepunkt, hvor alle parameterne sendes inn. Man mottar da en kode, som så sendes inn til /authorize-endepunktet som åpnes i en nettleser. Bruk av PAR er påkrevdfor public-clients da man beskytter parameterverdiene som sendes inn samtidig som det også muliggjør å ha rikere parameterverdier.
Spesifikasjoner
The OAuth 2.0 Authorization Framework - Authorization Request
JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants (benyttes kun for confidential clients)
Request
URL og verb: POST https://{miljø}/sts/oidcprov/v1/par
Content-type: application/x-www-form-urlencoded
Mutual TLS er frivillig for Confidential Clients, men obligatorisk for mobil-apper.
Plassering | Navn | Type | Påkrevd | Beskrivelse |
---|---|---|---|---|
Body (application/x-www-form-urlencoded) | client_id | string | Ja | Client ID verdien |
redirect_uri | string | Ja | Redirect URL. Må være en URL som helsenorge har forhåndsregistrert på klienten. | |
response_type | string | Ja | Skal ha verdien "code" | |
response_mode | string | Ja | Må være “form_post” eller “query”. “form_post” skal benyttes i alle tilfeller bortsett fra hvis det er en mobilapp. | |
state | string (min 10 - max 1000 tegn) | Ja | Tilfeldig kryptografisk verdi som genereres av klienten og som returneres ved redirect tilbake til klienten etter fullført autentisering | |
nonce | string (min 10 - max 1000 tegn) | Ja | Tilfeldig kryptografisk verdi som genereres av klienten og som returneres som en del av ID-tokenet | |
ui_locales | string | Ja | Språk som brukergrensesnittet skal ha, må ha verdien "nb" | |
scope | string | Ja | Må inneholde "openid" og evnt. "offline_access" i tillegg dersom klienten skal kunne få utstedt “refresh-token”. (Øvrige tilganger klienten får styres av konfigurasjonen av klienten på Helsenorge). | |
code_challenge | string | Ja | PKCE, generer først en code_verifier som er en kryptografisk tilfeldig streng mellom 43-128 tegn, gjør deretter følgende for å få code_challenge verdien: BASE64URL-ENCODE(SHA256(ASCII(code_verifier))) | |
code_challenge_method | string | Ja | PKCE, skal ha verdien "S256" | |
client_assertion_type | string | Kun for confidential client, benyttes ikke for mobil-apper. | Hvis confidential client så skal verdien være “urn:ietf:params:oauth:client-assertion-type:jwt-bearer” | |
client_assertion | string | Kun for confidential client, benyttes ikke for mobil-app’er. | Hvis confidential client så skal verdien inneholde et JWT |
Response - Vellykket
HTTP/1.1 201 Created
Content-Type: application/json
Plassering | Navn | Type | Beskrivelse |
---|---|---|---|
Body | request_uri | string | Verdi, generert av Helenorge, returneres og klient skal sende denne inn til authorize endepunktet. |
expires_in | int | Levetid på request_uri i sekunder, er default 30 minutter. |
Response - Feilet
Plassering | Navn | Verdi |
---|---|---|
Body | error | |
error_description |
Mulige feilkoder
HTTP statuskode | Feilkode | Beskrivelse |
---|---|---|
400 | invalid_request | The request is missing a required parameter, includes an |
400 | unauthorized_client | The client is not authorized to request an authorization |
400 | access_denied | The resource owner or authorization server denied the |
400 | unsupported_response_type | The authorization server does not support obtaining an |
400 | invalid_scope | The requested scope is invalid, unknown, or malformed. |
400 | server_error | The authorization server encountered an unexpected |
503 | The authorization server is currently unable to handle |