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

  1. dersom du eig eit API og vil teste validering av gyldige og ugyldige tokens
  2. 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 eller expirationTimeInDays)
{
  "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 er DontSetHtuClaimValue, DontSetHtmClaimValue, SetIatValueInThePast, SetIatValueInTheFuture, DontSetAthClaimValue, DontSetAlgHeader, DontSetJwkHeader, DontSetJtiClaim, SetAlgHeaderToASymmetricAlgorithm, SetPrivateKeyInJwkHeader, SetInvalidTypHeaderValue, og SetAnInvalidSignature)
{
  "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": "..."}
  ]
}