Test-token-tjenesten
Test-token-tjenesten (heretter kalla TTT) er eit API som er meint for å forenkle bruk av token til testformål. Med dette API-et kan ein hente ut token som er signert med den same signeringsnøkkelen som «ekte» Access- og ID-token frå HelseID sitt testmiljø.
Bruksmønster
TTT gir deg to ulike bruksmønster
- dersom du eig eit API og vil teste validering av gyldige og ugyldige tokens
- dersom du er ein systemleverandør og vil teste tilgang til eit eller fleire API som krev brukarinnlogging
Korleis tar du i bruk TTT
For å ta API-et i bruk, må du hente ein API-nøkkel i HelseID Selvbetjening. Denne nøkkelen må settast i headeren X-Auth-Key
i kallet til TTT.
Eksempel på bruk
Nedanfor finn du eksempel på korleis parametrane kan justerast i TTT. Oversikta viser korleis JSON-objektet som blir sendt inn til endepunkt i API-et vil sjå ut. For å få ut eit test-token, må du bruke endepunktet /v2/create-test-token-with-key
med ein POST-førespurnad.
For eit kodeeksempel på bruk av TTT, sjekk ut TestTokenTool på GitHub.
Du vil bruke TTT til å hente ut
- eit generisk token
{
"audience": "nhn:mittferskeapi"
}
Merk at du alltid må bruka "audience" som eit parameter
- eit token med berre obligatoriske claim
{
"audience": "nhn:mittferskeapi",
"withoutDefaultClientClaims": true,
"withoutDefaultUserClaims": true
}
- eit ugyldig token for å teste eit API (du bør sette berrre ein av dei mulige parametrane under)
{
"audience": "nhn:mittferskeapi",
"signJwtWithInvalidSigningKey": true,
"setInvalidIssuer": true
}
- eit utgått token for å teste eit API (sett enten
expirationTimeInSeconds
ellerexpirationTimeInDays
)
{
"audience": "nhn:mittferskeapi",
"expirationParameters": {
"setExpirationTimeAsExpired": true,
"expirationTimeInSeconds": 300,
"expirationTimeInDays": 1
}
}
- eit token med ein spesifikk header
{
"audience": "nhn:mittferskeapi",
"headerParameters": {
"typ": "at+jwt"
}
}
- eit token med spesifikke klient-claims (sett berre dei som er relevante)
{
"audience": "nhn:mittferskeapi",
"withoutDefaultClientClaims": true,
"withoutDefaultUserClaims": true,
"clientClaimsParameters": {
"scope": [
"openid",
"profile",
"read",
"mitt:supre:api/scope"
],
"clientId": "eeb808a2-6e6f-42ae-849a-505432cf128f",
"sfmJournalId": "ed30a6a5-4834-40be-a32b-1e4f5217e378",
"orgnrParent": "883974832",
"orgnrSupplier": "994598759",
"clientTenancy": true,
"clientAuthenticationMethodsReferences": "private_key_jwt",
"clientName": "Mitt Klientnavn",
"jti": "F4F832F0C68E24F0011F773B71CC6739"
}
}
Merk at du må sette "withoutDefaultClientClaims": true
for å kunne sette spesifikke klient-claims.
- eit token med spesifikke brukar-claims (sett berre dei som er relevante)
{
"audience": "nhn:mittferskeapi",
"withoutDefaultUserClaims": true,
"userClaimsParameters": {
"pid": "06828399789",
"pidPseudonym": "PGzVzvP2JvlXV\u002B\u002BOJSJAQG5d99BH8QsikmxpdIAKSZk=",
"hprNumber": "565505933",
"name": "KVART GREVLING",
"givenName": "KVART",
"middleName": "",
"familyName": "GREVLING",
"identityProvider": "idporten-oidc",
"securityLevel": "4",
"assuranceLevel": "high",
"network": "internett",
"amr": "pwd",
"subject": "PGzVzvP2JvlXV\u002B\u002BOJSJAQG5d99BH8QsikmxpdIAKSZk=",
"sid": "0970F0ED60C552597BFC254150FA406D"
}
}
Merk at du må sette "withoutDefaultUserClaims": true
for å kunne sette spesifikke brukar-claims.
- eit token der personen har blitt tatt frå Persontjenesten
{
"audience": "nhn:mittferskeapi",
"withoutDefaultUserClaims": true,
"userClaimsParameters": {
"pid": "06670157480"
},
"getPersonFromPersontjenesten": true,
"onlySetNameForPerson": true,
"getHprNumberFromHprregisteret": true,
"setSubject": true
}
- legg til eit DPoP-bevis til tokenet:
{
"audience": "nhn:mittferskeapi",
"createDPoPTokenWithDPoPProof": true,
"dPoPProofParameters": {
"htmClaimValue": "POST",
"htuClaimValue": "https://mitt.ferske.api.no"
}
}
- eit DPoP-bevis med endra DPoP-parametrar (mogelege verdiar for
invalidDPoPProofParameters
erDontSetHtuClaimValue
,DontSetHtmClaimValue
,SetIatValueInThePast
,SetIatValueInTheFuture
,DontSetAthClaimValue
,DontSetAlgHeader
,DontSetJwkHeader
,DontSetJtiClaim
,SetAlgHeaderToASymmetricAlgorithm
,SetPrivateKeyInJwkHeader
,SetInvalidTypHeaderValue
, ogSetAnInvalidSignature
)
{
"audience": "nhn:mittferskeapi",
"createDPoPTokenWithDPoPProof": true,
"dPoPProofParameters": {
"invalidDPoPProofParameters": "DontSetAthClaimValue",
"htmClaimValue": "POST",
"htuClaimValue": "https://mitt.ferske.api.no"
}
}
- eit token som brukar tillitsrammeverket
{
"audience": "nhn:mittferskeapi",
"createTillitsrammeverkClaims": true,
"withoutDefaultUserClaims": true,
"userClaimsParameters": {
"pid": "06828399789",
"hprNumber": "565505933",
"name": "KVART GREVLING"
}
}
- eit token med endra parametrar for tillitsrammeverket (sett berre dei som er relevante)
{
"audience": "nhn:mittferskeapi",
"createTillitsrammeverkClaims": true,
"tillitsrammeverkClaimsParameters": {
"practitionerAuthorizationCode": "AA",
"practitionerAuthorizationText": "",
"practitionerLegalEntityId": "946469045",
"practitionerLegalEntityName": "Helse Først",
"practitionerPointOfCareId": "983658776",
"practitionerPointOfCareName": "Sjukehus AS",
"practitionerDepartmentId": "4206043",
"practitionerDepartmentName": "Avdeling 4",
"careRelationshipHealthcareServiceCode": "210",
"careRelationshipHealthcareServiceText": "Anestesiologi",
"careRelationshipPurposeOfUseCode": "TREAT",
"careRelationshipPurposeOfUseText": "Behandling",
"careRelationshipPurposeOfUseDetailsCode": "28",
"careRelationshipPurposeOfUseDetailsText": "Digitalt tilsyn",
"careRelationshipTracingRefId": "30F4AB40-DBC2-41A7-8AC4-181AD3FDC25B",
"patientsPointOfCareId": "983658776",
"patientsPointOfCareName": "Sjukehus AS",
"patientsDepartmentId": "4206043",
"patientsDepartmentName": "Avdeling 4"
},
"withoutDefaultUserClaims": true,
"userClaimsParameters": {
"pid": "06828399789",
"hprNumber": "565505933",
"name": "KVART GREVLING"
}
}
- eit token med eit eller fleire API-spesifikke claims
{
"audience": "nhn:mittferskeapi",
"apiSpecificClaims": [
{"type": "e-helse:sfm.api/client/claims/sfm-id", "value": "e37233c0-e649-4b70-92bd-7f1e12eac897"},
{"type": "...", "value": "..."}
]
}