Skip to main content

Advanced Testing

azuma mimoto provides advanced testing capabilities for the gematik IDP, including:

  • User selection
  • Scope selection (essentially allowing to test scope decline cases)
  • Health-ID override
  • ...

Advanced testing capabilities are currently available on the TU and RU environments for the Web-Flow and can be used via API.

Web-Flow: Enable advanced testing

To enabled advanced testing, the following query parameter needs to be included in the initial auth call: gematik_show_testing_ui=true

The auth URL should look like this:

https://mimoto-test.pie.azuma-health.tech/connect/auth
?client_id=*your application id*
&redirect_uri=*your redirect url*
&response_type=code
&scope=*your requested scopes*
&state=*your state*
&code_challenge=*your code challenge*
&code_challenge_method=S256
&response_mode=query
&gematik_show_testing_ui=true
Hint

You can navigate to https://mimoto-react-examples.azuma-health.tech/oidc-live and use the button: Login in (With testing UI).

Web-Flow: Advanced testing UI

Once enabled, the idp selection page will include the following block:

Parameters

  • Login User: The user, which should be logged in, can be selected here. The list contains pre-defined users that are available in the gematik IDP.
  • Selected Scopes: Scopes, that should be declined, can be deselected here. E.g.: if email should not be returned in the ID token, the scope urn:telematik:email should be deselected.
  • Scope Decline Mode:
    • Remove claims (RemoveClaims): Claims, that belong to declined scopes, will be completely removed from ID token.
    • Add empty claims (AddEmptyClaims): Claims, that belong to declined scopes, will be added with empty value to ID token.
  • Granted Scope Mode: Specifies, how the scope claim of the Access Token is populated
    • Include all requested scopes (IncludeAllRequested): All the initially requested scopes are added to the scope claim
    • Only include selected scopes (IncludeOnlySelected): Only the scopes selected above are included in the scope claim
  • Override Health-ID: This can be used to override the health ID to the provided value.

Using the API

In testing scenarios, it might be reasonable to start the auth call via API while providing certain test parameters. The mentioned testing parameters above can be provided in the auth call as follows:

  • Login User (once): gematik_login_user
  • Selected Scopes (per selected scope): gematik_selected_scopes
  • Scope Decline Mode (once): gematik_scope_decline_mode with values RemoveClaims or AddEmptyClaims
  • Override Health-ID (once): gematik_override_health_id

The overall request should look like this:

https://mimoto-test.pie.azuma-health.tech/connect/auth
?client_id=*your application id*
&redirect_uri=*your redirect url*
&response_type=code
&scope=*your requested scopes*
&state=*your state*
&code_challenge=*your code challenge*
&code_challenge_method=S256
&response_mode=query
&gematik_enable_testing=true
&provider=https://gsi.dev.gematik.solutions
&gematik_login_user=*value*
&gematik_selected_scopes=*value*
&gematik_selected_scopes=*value*
&gematik_scope_decline_mode=*value*
&gematik_override_health_id=*value*
&gematik_granted_scope_mode=*value*

Example 1

Login User 'C420797644' and accept only scope urn:telematik:email while requesting all available scopes. This would remove claims from all other scopes from the ID token.

https://mimoto-test.pie.azuma-health.tech/connect/auth
?client_id=*your application id*
&redirect_uri=*your redirect url*
&response_type=code
&scope=urn:telematik:alter urn:telematik:display_name urn:telematik:email urn:telematik:geschlecht urn:telematik:geburtsdatum urn:telematik:given_name urn:telematik:versicherter openid
&state=*your state*
&code_challenge=*your code challenge*
&code_challenge_method=S256
&response_mode=query
&gematik_enable_testing=true
&provider=https://gsi.dev.gematik.solutions
&gematik_enable_testing=true
&gematik_login_user=C420797644
&gematik_scope_decline_mode=RemoveClaims
&gematik_selected_scopes=openid
&gematik_selected_scopes=urn:telematik:email

Example 2

Login User 'C420797644' and accept only scope urn:telematik:versicherter while requesting all available scopes. This would add claims from all other scopes with empty value in ID token.

https://mimoto-test.pie.azuma-health.tech/connect/auth
?client_id=*your application id*
&redirect_uri=*your redirect url*
&response_type=code
&scope=urn:telematik:alter urn:telematik:display_name urn:telematik:email urn:telematik:geschlecht urn:telematik:geburtsdatum urn:telematik:given_name urn:telematik:versicherter openid
&state=*your state*
&code_challenge=*your code challenge*
&code_challenge_method=S256
&response_mode=query
&gematik_enable_testing=true
&provider=https://gsi.dev.gematik.solutions
&gematik_enable_testing=true
&gematik_login_user=C420797644
&gematik_scope_decline_mode=AddEmptyClaims
&gematik_selected_scopes=openid
&gematik_selected_scopes=urn:telematik:versicherter

Example 3

Login User 'C420797644' and accept scopes urn:telematik:email and urn:telematik:versicherter while requesting all available scopes. Override Health-ID with value "ABC-Test-1".

https://mimoto-test.pie.azuma-health.tech/connect/auth
?client_id=*your application id*
&redirect_uri=*your redirect url*
&response_type=code
&scope=urn:telematik:alter urn:telematik:display_name urn:telematik:email urn:telematik:geschlecht urn:telematik:geburtsdatum urn:telematik:given_name urn:telematik:versicherter openid
&state=*your state*
&code_challenge=*your code challenge*
&code_challenge_method=S256
&response_mode=query
&gematik_enable_testing=true
&provider=https://gsi.dev.gematik.solutions
&gematik_login_user=C420797644
&gematik_selected_scopes=openid
&gematik_selected_scopes=urn:telematik:email
&gematik_selected_scopes=urn:telematik:versicherter
&gematik_scope_decline_mode=RemoveClaims
&gematik_override_health_id=ABC-Test-1

Example 4

Login User 'C420797644' and accept scopes urn:telematik:email and urn:telematik:versicherter while requesting all available scopes. Also define that the scopes in Access Token should be adjusted to only include the requested scopes.

https://mimoto-test.pie.azuma-health.tech/connect/auth
?client_id=*your application id*
&redirect_uri=*your redirect url*
&response_type=code
&scope=urn:telematik:alter urn:telematik:display_name urn:telematik:email urn:telematik:geschlecht urn:telematik:geburtsdatum urn:telematik:given_name urn:telematik:versicherter openid
&state=*your state*
&code_challenge=*your code challenge*
&code_challenge_method=S256
&response_mode=query
&gematik_enable_testing=true
&provider=https://gsi.dev.gematik.solutions
&gematik_login_user=C420797644
&gematik_selected_scopes=openid
&gematik_selected_scopes=urn:telematik:email
&gematik_selected_scopes=urn:telematik:versicherter
&gematik_scope_decline_mode=RemoveClaims
&gematik_override_health_id=ABC-Test-1
&gematik_granted_scope_mode=IncludeOnlySelected

Available Users

Source: https://github.com/gematik/app-gemSekIdpAuth/blob/main/shared/src/commonMain/kotlin/de/gematik/gsia/InsuredPeople.kt

NameHealth ID
Addi GürschnerC420797644
Adelajda FedelV505397572
Alanis Bárbara BlübaumH981445495
Annalise BaeyerY279331465
Anniko LorchE486966747
Antje DürrwächterC281555914
Anton WinchW767484198
Axel Wilhelm Raimund UhlenbergO556653626
Beat BourbonT647210096
Benedict WansingS453483601
Berchtold Görtz-WrisbergJ671009960
Bertrand von dem BuscheA100194532
Burim GeizkoflerV681583552
Carola StendelX243401984
Celestyn SchickingerM651641450
Cerstin von BrandensteinV011369855
Charlotta LattuadaI467763424
Claudius HöttlN040297356
Damaris R. LabbadiaB682829226
Darius Michael Brian Ubbo Graf von BödefeldX110411675
Dieprand EdwardsI717558212
Dietmar-Maria BudařY587922237
Ditte WeitzenböckP179293935
Dorine ErnerB055779705
Edmund MoningG443503373
Eileen DettmersI000685456
Eniola OpocenskyT957299849
Eren KrückelsY562679679
Ernie EickelbergV543033396
Eugenius ReuthF775922314
Farah AndingL102540839
Ferdinande CastanV201219304
Filomena ObermöllerV251504960
Fiorina FriedericiU449298563
Flockina KlüwerR393432004
Fridtjof SchraderH898891259
Gunna TatgeL338249596
Göran KreppelF173976800
Hannah-Lene GottschlagH697855490
Hildur FürsichO018753329
Hiếu BreitschuhW425928742
Imagina HandtD162565246
Iradj von HattsteinE970401241
James EschebachH326802335
Jan KaempferL066580827
Janina BlaumF635889268
Jenni van der BergeD700912919
Joe ScharfenorthE713244682
Johann Peter AbramowitschV641677631
Joris EidamsP465620101
Juan Sebastián KijewskiE989497319
Jules SeecktG839948921
Karl-August OehmenW215342166
Karyn FriderichR302790016
Kay KaltN450568028
Kerstin DincerY878467646
Kim HölderV093547110
Kreszentia TrampW407506186
Kristina HohoffC638490876
Kübra BrockdorffO354567460
Laurence FurkelH398359331
Lipót WehrenbergI787698582
Liva LubitschG049950594
Loraine JaksZ082897408
Magda CainF553092323
Margarita SchwentkeD511048530
Margriet HitzingZ129727266
Marguerite AmbacherQ952468482
Marielle RaffingtonI669655261
Massimiliano WessinghageK162056938
Metin UrferS382572116
Mimi ZählerU775088890
Mohammed DominéQ166734172
Nanette BerkemeierO384255999
Nick MrossT760585825
Nola SklenarQ540409950
Olcay Kilian MazinguV302252880
Paul-Werner Aslan BörnerY581099432
Peter-Heinz MatthaeiP902003565
Phylicia RoedelheimI840077700
Pál KokeT592799570
Ricki BraunbeckZ176485411
Roswitha FeldmüllerB607260519
S. Neda EdmondK415576841
Sandeep KeuningJ023079864
Scarlet Monika FauthB622820700
Szymon HollwitzE148859906
Sébastien ZinnerJ828745426
Tanya ZadeX109219665
Thankmar NiggelohR750102860
Thorn SchetelichY140780380
Toussaint WieluchK426342988
Trajan JammalQ182922837
Ulrike Eliane RansbachV244746635
Valer KlaschkaP815185267
Vitalis ErdleP013510749
Vitaly ZeitlhoferP262640443
Yannick MederowZ991878026
Yaroslav PassyH253024330
Zofia GeersJ817104093
İlkay Paul-Henri SteinhaeusserQ667805971