From 77e6a41cfee1d2e64326d8d1d08aafe04b5c34b6 Mon Sep 17 00:00:00 2001 From: Gematik Date: Wed, 26 Jun 2024 10:52:15 +0200 Subject: [PATCH] v28.0.2 --- README.md | 2 +- ReleaseNotes.md | 4 + doc/tokenFlowEgk.html | 679 ++++++------ doc/tokenFlowPs.html | 661 ++++++------ doc/tokenFlowSso.html | 987 +++++++++--------- idp-client/pom.xml | 11 +- .../idp/client/AuthenticatorClient.java | 18 +- .../gematik/idp/client/BiometrieClient.java | 6 +- .../java/de/gematik/idp/client/IdpClient.java | 8 +- idp-commons/pom.xml | 15 +- .../idp/token/TokenClaimExtraction.java | 2 +- .../AuthenticationChallengeVerifierTest.java | 3 +- .../idp/data/FederationPubKeyTest.java | 3 +- idp-crypto/pom.xml | 4 +- idp-report/pom.xml | 2 +- idp-sektoral/pom.xml | 9 +- idp-server/pom.xml | 13 +- .../idp/server/controllers/IdpController.java | 6 +- .../de/gematik/idp/server/AppListTest.java | 6 +- .../idp/server/AuthenticationCallTest.java | 4 +- .../server/ClientSystemValidationTest.java | 4 +- .../idp/server/DiscoveryDocumentTest.java | 6 +- .../FederationIdpListControllerTest.java | 6 +- .../IdpControllerExceptionHandlerTest.java | 8 +- .../IdpControllerParameterValidationTest.java | 12 +- .../gematik/idp/server/KeyRetrievalTest.java | 8 +- .../server/PairingControllerAccessTest.java | 8 +- .../de/gematik/idp/server/PkceServerTest.java | 4 +- .../idp/server/TokenRetrievalTest.java | 9 +- .../ServerVersionInterceptorTest.java | 2 +- idp-test/pom.xml | 4 +- idp-testsuite/pom.xml | 62 +- .../de/gematik/idp/test/steps/StepsGlue.java | 1 + .../test/steps/model/DiscoveryDocument.java | 8 +- pom.xml | 23 +- 35 files changed, 1279 insertions(+), 1329 deletions(-) diff --git a/README.md b/README.md index 23f763a..e13a6b6 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ or use docker compose: ```console $ mvn clean install -pl idp-server -am -Dskip.unittests -Dskip.inttests -$ export appVersion=28.0.1 +$ export appVersion=28.0.2 $ export serverLoglevel=info (default) $ docker-compose --project-name myidp -f docker-compose-ref.yml up -d ``` diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 2765add..b7d8217 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,3 +1,7 @@ +# Release 28.0.2 + +- update dependencies (unirest-java -> unirest-java-core) + # Release 28.0.1 - remove parent pom from testsuite to avoid dependency conflicts diff --git a/doc/tokenFlowEgk.html b/doc/tokenFlowEgk.html index 1da4dcd..d852856 100644 --- a/doc/tokenFlowEgk.html +++ b/doc/tokenFlowEgk.html @@ -453,51 +453,56 @@ .has-text-info { color: #0fc5d9!important; } -
Gerendert mit https://github.com/gematik/app-RbelLogger
Created Wed, 5 Jun 2024 15:46:22 +0200

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Content-Length
3118
Date
Wed, 26 Jun 2024 08:26:52 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/jwt;charset=UTF-8

RES Body

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_disc_sig",
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
"x5c" : [ "MIICsTCCAligAwIBAgIHAbssqQhqOzAKBggqhkjOPQQDAjCBhDELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxMjAwBgNVBAsMKUtvbXBvbmVudGVuLUNBIGRlciBUZWxlbWF0aWtpbmZyYXN0cnVrdHVyMSAwHgYDVQQDDBdHRU0uS09NUC1DQTEwIFRFU1QtT05MWTAeFw0yMTAxMTUwMDAwMDBaFw0yNjAxMTUyMzU5NTlaMEkxCzAJBgNVBAYTAkRFMSYwJAYDVQQKDB1nZW1hdGlrIFRFU1QtT05MWSAtIE5PVC1WQUxJRDESMBAGA1UEAwwJSURQIFNpZyAzMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABIYZnwiGAn5QYOx43Z8MwaZLD3r/bz6BTcQO5pbeum6qQzYD5dDCcriw/VNPPZCQzXQPg4StWyy5OOq9TogBEmOjge0wgeowDgYDVR0PAQH/BAQDAgeAMC0GBSskCAMDBCQwIjAgMB4wHDAaMAwMCklEUC1EaWVuc3QwCgYIKoIUAEwEggQwIQYDVR0gBBowGDAKBggqghQATASBSzAKBggqghQATASBIzAfBgNVHSMEGDAWgBQo8Pjmqch3zENF25qu1zqDrA4PqDA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUHMAGGHGh0dHA6Ly9laGNhLmdlbWF0aWsuZGUvb2NzcC8wHQYDVR0OBBYEFC94M9LgW44lNgoAbkPaomnLjS8/MAwGA1UdEwEB/wQCMAAwCgYIKoZIzj0EAwIDRwAwRAIgCg4yZDWmyBirgxzawz/S8DJnRFKtYU/YGNlRc7+kBHcCIBuzba3GspqSmoP1VwMeNNKNaLsgV8vMbDJb30aqaiX1"
Enthält das verwendete Signer-Zertifikat als Base64 ASN.1 DER-Encoding. Hier kommt ausnahmsweise NICHT URL-safes Base64-Encoding zum Einsatz!
] -}

body.header.x5c.0.content

X509 Certificate

Subject: C=DE,O=gematik TEST-ONLY - NOT-VALID,CN=IDP Sig 3

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Komponenten-CA der Telematikinfrastruktur,CN=GEM.KOMP-CA10 TEST-ONLY

Serialnumber: 487275465566779

Valid From: 2021-01-15T00:00Z[UTC]

Valid Until: 2026-01-15T23:59:59Z[UTC]


Body

{
-  "authorization_endpoint" : "http://localhost:46199/sign_response",
URL des Authorization Endpunkts.
- "auth_pair_endpoint" : "http://localhost:46199/alt_response",
URL des Biometrie-Authorization Endpunkts.
- "sso_endpoint" : "http://localhost:46199/sso_response",
URL des SSO-Authorization Endpunkts.
- "uri_pair" : "http://localhost:46199/pairings",
URL des Pairing-Endpunkts
- "token_endpoint" : "http://localhost:46199/token",
URL des Authorization Endpunkts.
- "third_party_authorization_endpoint" : "http://localhost:46199/extauth", +}

body.header.x5c.0.content

X509 Certificate

Subject: C=DE,O=gematik TEST-ONLY - NOT-VALID,CN=IDP Sig 3

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Komponenten-CA der Telematikinfrastruktur,CN=GEM.KOMP-CA10 TEST-ONLY

Serialnumber: 487275465566779

Valid From: 2021-01-15T00:00Z[UTC]

Valid Until: 2026-01-15T23:59:59Z[UTC]


Body

{
+  "authorization_endpoint" : "http://localhost:43371/sign_response",
URL des Authorization Endpunkts.
+ "auth_pair_endpoint" : "http://localhost:43371/alt_response",
URL des Biometrie-Authorization Endpunkts.
+ "sso_endpoint" : "http://localhost:43371/sso_response",
URL des SSO-Authorization Endpunkts.
+ "uri_pair" : "http://localhost:43371/pairings",
URL des Pairing-Endpunkts
+ "token_endpoint" : "http://localhost:43371/token",
URL des Authorization Endpunkts.
+ "third_party_authorization_endpoint" : "http://localhost:43371/extauth", "federation_authorization_endpoint" : "https://idpfadi.dev.gematik.solutions/auth", - "uri_disc" : "http://localhost:46199/.well-known/openid-configuration",
URL des Discovery-Dokuments
+ "uri_disc" : "http://localhost:43371/.well-known/openid-configuration",
URL des Discovery-Dokuments
"issuer" : "https://idp.dev.gematik.solutions", - "jwks_uri" : "http://localhost:46199/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
- "exp" : 1717681558,
Gültigkeit des Tokens
- "iat" : 1717595158,
Zeitpunkt der Ausstellung des Tokens
- "uri_puk_idp_enc" : "http://localhost:46199/idpEnc/jwk.json", - "uri_puk_idp_sig" : "http://localhost:46199/idpSig/jwk.json", + "jwks_uri" : "http://localhost:43371/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
+ "exp" : 1719476812,
Gültigkeit des Tokens
+ "iat" : 1719390412,
Zeitpunkt der Ausstellung des Tokens
+ "uri_puk_idp_enc" : "http://localhost:43371/idpEnc/jwk.json", + "uri_puk_idp_sig" : "http://localhost:43371/idpSig/jwk.json", "subject_types_supported" : [ "pairwise" ], "id_token_signing_alg_values_supported" : [ "BP256R1" ], "response_types_supported" : [ "code" ], @@ -507,27 +512,23 @@ "acr_values_supported" : [ "gematik-ehealth-loa-high" ], "token_endpoint_auth_methods_supported" : [ "none" ], "code_challenge_methods_supported" : [ "S256" ], - "kk_app_list_uri" : "http://localhost:46199/directory/kk_apps", - "fed_idp_list_uri" : "http://localhost:46199/fed_idp_list" -}

Signature

Was verified using Key puk_disc_sig

Signature

Was verified using Key puk_disc_sig

3 GET http://localhost:46199/idpSig/jwk.json127.0.0.1:-1localhost:35847

REQ Headers

User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Host
localhost:35847
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

3 GET http://localhost:43371/idpSig/jwk.json127.0.0.1:-1localhost:33497

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client
Empty body

4200localhost:35847127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.1
Date
Wed, 05 Jun 2024 13:46:06 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+{"x5c":["MIICsTCCAligAwIBAgIHA61I5ACUjTAKBggqhkjOPQQDAjCBhDELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxMjAwBgNVBAsMKUtvbXBvbmVudGVuLUNBIGRlciBUZWxlbWF0aWtpbmZyYXN0cnVrdHVyMSAwHgYDVQQDDBdHRU0uS09NUC1DQTEwIFRFU1QtT05MWTAeFw0yMDA4MDQwMDAwMDBaFw0yNTA4MDQyMzU5NTlaMEkxCzAJBgNVBAYTAkRFMSYwJAYDVQQKDB1nZW1hdGlrIFRFU1QtT05MWSAtIE5PVC1WQUxJRDESMBAGA1UEAwwJSURQIFNpZyAxMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABJZQrG1NWxIB3kz/6Z2zojlkJqN3vJXZ3EZnJ6JXTXw5ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcajge0wgeowHQYDVR0OBBYEFJ8DVLAZWT+BlojTD4MT/Na+ES8YMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL2VoY2EuZ2VtYXRpay5kZS9vY3NwLzAMBgNVHRMBAf8EAjAAMCEGA1UdIAQaMBgwCgYIKoIUAEwEgUswCgYIKoIUAEwEgSMwHwYDVR0jBBgwFoAUKPD45qnId8xDRduartc6g6wOD6gwLQYFKyQIAwMEJDAiMCAwHjAcMBowDAwKSURQLURpZW5zdDAKBggqghQATASCBDAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDRwAwRAIgVBPhAwyX8HAVH0O0b3+VazpBAWkQNjkEVRkv+EYX1e8CIFdn4O+nivM+XVi9xiKK4dW1R7MD334OpOPTFjeEhIVV"],"use":"sig","kid":"puk_idp_sig","kty":"EC","crv":"BP-256","x":"llCsbU1bEgHeTP_pnbOiOWQmo3e8ldncRmcnoldNfDk","y":"ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcY"}

4200localhost:33497127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.2
Date
Wed, 26 Jun 2024 08:26:59 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "x5c" : [ "MIICsTCCAligAwIBAgIHA61I5ACUjTAKBggqhkjOPQQDAjCBhDELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxMjAwBgNVBAsMKUtvbXBvbmVudGVuLUNBIGRlciBUZWxlbWF0aWtpbmZyYXN0cnVrdHVyMSAwHgYDVQQDDBdHRU0uS09NUC1DQTEwIFRFU1QtT05MWTAeFw0yMDA4MDQwMDAwMDBaFw0yNTA4MDQyMzU5NTlaMEkxCzAJBgNVBAYTAkRFMSYwJAYDVQQKDB1nZW1hdGlrIFRFU1QtT05MWSAtIE5PVC1WQUxJRDESMBAGA1UEAwwJSURQIFNpZyAxMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABJZQrG1NWxIB3kz/6Z2zojlkJqN3vJXZ3EZnJ6JXTXw5ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcajge0wgeowHQYDVR0OBBYEFJ8DVLAZWT+BlojTD4MT/Na+ES8YMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL2VoY2EuZ2VtYXRpay5kZS9vY3NwLzAMBgNVHRMBAf8EAjAAMCEGA1UdIAQaMBgwCgYIKoIUAEwEgUswCgYIKoIUAEwEgSMwHwYDVR0jBBgwFoAUKPD45qnId8xDRduartc6g6wOD6gwLQYFKyQIAwMEJDAiMCAwHjAcMBowDAwKSURQLURpZW5zdDAKBggqghQATASCBDAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDRwAwRAIgVBPhAwyX8HAVH0O0b3+VazpBAWkQNjkEVRkv+EYX1e8CIFdn4O+nivM+XVi9xiKK4dW1R7MD334OpOPTFjeEhIVV"
Enthält das verwendete Signer-Zertifikat als Base64 ASN.1 DER-Encoding. Hier kommt ausnahmsweise NICHT URL-safes Base64-Encoding zum Einsatz!
], "use" : "sig",
Erlaubte Verwendungen des Schlüssels. Siehe https://tools.ietf.org/html/rfc7517#section-4.2
"kid" : "puk_idp_sig",
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
@@ -535,57 +536,49 @@ "crv" : "BP-256", "x" : "llCsbU1bEgHeTP_pnbOiOWQmo3e8ldncRmcnoldNfDk",
X-Koordinate des öffentlichen Punkts des Schlüssels
"y" : "ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcY"
Y-Koordinate des öffentlichen Punkts des Schlüssels
-}

body.x5c.0.content

X509 Certificate

Subject: C=DE,O=gematik TEST-ONLY - NOT-VALID,CN=IDP Sig 1

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Komponenten-CA der Telematikinfrastruktur,CN=GEM.KOMP-CA10 TEST-ONLY

Serialnumber: 1034953504625805

Valid From: 2020-08-04T00:00Z[UTC]

Valid Until: 2025-08-04T23:59:59Z[UTC]


5 GET http://localhost:46199/idpEnc/jwk.json127.0.0.1:-1localhost:35847

REQ Headers

User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Host
localhost:35847
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

5 GET http://localhost:43371/idpEnc/jwk.json127.0.0.1:-1localhost:33497

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client
Empty body

6200localhost:35847127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.1
Date
Wed, 05 Jun 2024 13:46:08 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+{"use":"enc","kid":"puk_idp_enc","kty":"EC","crv":"BP-256","x":"QLpJ_LpFx-6yJhsb4OvHwU1khLnviiOwYOvmf5clK7w","y":"mHuknfNkoMmSbytt4br0YGihOixcmBKy80UfSLdXGe4"}

6200localhost:33497127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.2
Date
Wed, 26 Jun 2024 08:27:02 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "use" : "enc",
Erlaubte Verwendungen des Schlüssels. Siehe https://tools.ietf.org/html/rfc7517#section-4.2
"kid" : "puk_idp_enc",
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
"kty" : "EC", "crv" : "BP-256", "x" : "QLpJ_LpFx-6yJhsb4OvHwU1khLnviiOwYOvmf5clK7w",
X-Koordinate des öffentlichen Punkts des Schlüssels
"y" : "mHuknfNkoMmSbytt4br0YGihOixcmBKy80UfSLdXGe4"
Y-Koordinate des öffentlichen Punkts des Schlüssels
-}

7 GET http://localhost:46199/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=EoB3AnphqkssM-pWsz_HU8VhW77cOpgV&code_challenge=KLZsWUwsdaVnIVgflRbVVDHZAxFoeF9uZYuL5wy_UOQ&code_challenge_method=S256&scope=e-rezept+openid&nonce=cHyoBao3iWrpSuJumeuGNbogn2kn4WH6127.0.0.1:-1localhost:35847

REQ Headers

User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept
application/json
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Host
localhost:35847
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

7 GET http://localhost:43371/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=jfAy5SW6ly4XNPEQottsinjxD5OxNzha&code_challenge=vB9vlF5utKmVmWQ9RtEByltezLQxk_BguQ4LffKv_U8&code_challenge_method=S256&scope=openid+e-rezept&nonce=VDtUSA3P_GmS4tLCJPow91Di4rCyUcfi127.0.0.1:-1localhost:33497

REQ Headers

accept
application/json
accept-encoding
gzip
user-agent
IdP-Client
Empty body

8200localhost:35847127.0.0.1:-1

8200localhost:33497127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Date
Wed, 05 Jun 2024 13:46:08 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM1ODQ3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJ0clA2QXBBbzBrMGR0QmluWFBSTVdwc1ktenNhODJONEMyLW9RWTgxY2RRIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImNIeW9CYW8zaVdycFN1SnVtZXVHTmJvZ24ya240V0g2IiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJFb0IzQW5waHFrc3NNLXBXc3pfSFU4VmhXNzdjT3BnViIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTc1OTUzNDksImlhdCI6MTcxNzU5NTE2OSwiY29kZV9jaGFsbGVuZ2UiOiJLTFpzV1V3c2RhVm5JVmdmbFJiVlZESFpBeEZvZUY5dVpZdUw1d3lfVU9RIiwianRpIjoiMDI5OTY1YjYxMmRlYTcyOSJ9.QH5j1YEfz14Qn9liGHmNpMtSEOv6NgVxretJ6jDwcYUmX5BESh5aisF9aGHPR0LmALqFo8VWwCc6YtT5TGjpuA",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Wed, 26 Jun 2024 08:27:02 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Date
Wed, 26 Jun 2024 08:27:02 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjMzNDk3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJmVXltdXVJRF9hZThZS25MMktHRnNCUTYyeFFYMzRwb3BVY1huVUFhWDNVIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IlZEdFVTQTNQX0dtUzR0TENKUG93OTFEaTRyQ3lVY2ZpIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJqZkF5NVNXNmx5NFhOUEVRb3R0c2luanhENU94TnpoYSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTkzOTA2MDIsImlhdCI6MTcxOTM5MDQyMiwiY29kZV9jaGFsbGVuZ2UiOiJ2Qjl2bEY1dXRLbVZtV1E5UnRFQnlsdGV6TFF4a19CZ3VRNExmZkt2X1U4IiwianRpIjoiNjg4OWZhOWE2ZTRjZGZmZCJ9.RpND6II5JxsNUV6MPDWBQG6IiRcO0YhE775_QKssjhyjXJLZQQQj8WI6nOk-eP17pdb4PXBlpEGQb3sKbPr8kA",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
"user_consent" : { "requested_scopes" : { "e-rezept" : "Zugriff auf die E-Rezept-Funktionalität.", @@ -600,140 +593,136 @@ "family_name" : "Zustimmung zur Verarbeitung des Nachnamens" } } -}

body.challenge.content

JWT

Headers
{
+}

body.challenge.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "iss" : "http://localhost:35847",
+}

Body

{
+  "iss" : "http://localhost:33497",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "trP6ApAo0k0dtBinXPRMWpsY-zsa82N4C2-oQY81cdQ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "fUymuuID_ae8YKnL2KGFsBQ62xQX34popUcXnUAaX3U",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"token_type" : "challenge", - "nonce" : "cHyoBao3iWrpSuJumeuGNbogn2kn4WH6",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "VDtUSA3P_GmS4tLCJPow91Di4rCyUcfi",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "EoB3AnphqkssM-pWsz_HU8VhW77cOpgV",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "jfAy5SW6ly4XNPEQottsinjxD5OxNzha",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "exp" : 1717595349,
Gültigkeit des Tokens
- "iat" : 1717595169,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "KLZsWUwsdaVnIVgflRbVVDHZAxFoeF9uZYuL5wy_UOQ",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "029965b612dea729"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key puk_idp_sig

9 POST http://localhost:46199/sign_response127.0.0.1:-1localhost:35847

REQ Headers

Content-Type
application/x-www-form-urlencoded
User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Content-Length
3978
Host
localhost:35847
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend

REQ Body

namevalue
signed_challenge

JWE

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

Headers
{
+signed_challenge=eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSIsImN0eSI6Ik5KV1QiLCJleHAiOjE3MTkzOTA2MDIsImVwayI6eyJrdHkiOiJFQyIsIngiOiJQdjJCbjRnYVMxemszUW5tak9OcWR6Smpvc2IwaHhQNm0tLUpFNFliS0d3IiwieSI6ImExS0pPVFd1WVU1RUl4WnhxVFFCa0ppeUQ5cVlsbTIzRGF6VFNHcGtYbTAiLCJjcnYiOiJCUC0yNTYifX0..jC52iIcOsNupdYnl.AjkdIKnfvOIWckIwoYcNCbwoeK2hucFDfk3fydO6BugIqg04MjWc2L7Sy4skYJ5_fEsIW0jTOMkpHnNEXi50doenRqvEsrbZpIa2aMC-sE4m1c9PCWby_T1jKOGdVVRUOXPc9vHXS7rj1jtfMxwZzBGxIHJcT_e9v7mtC63Tj9-I3ucvO31GK3iPUIuV1dPc0kes0QnOth0Fpvgd4rdr8_N1lSKPM1V3l7GyUW-WvzXnncopPyPXrSsbfO1URQ9GJod6YidXtoDd_k5Tz09jSjsiN17z0vn1oIGWv6p9ndA_pG8idSjC0dUTre9wRqmWIupJj4SV1tJITo9lVADDRP8vIbyNH43f4h91UpvL_daIpVg3aZc2CDwBmJAmlFuwodO60SOaVayEzef3YYMgA-QOsLFQKFvBJBe65cNAgaqGIatptz4XxdYQinGRDV5azBY6l2Bf9vONsN-ur3IT1zVErtoJrODrQOXtRsFqtte8UWWLMCvIl_oB-OSEpNZxHKS1peGDZA6rTKVVxOOWJ9nD9niYJiHDy9mpiZAP-dHvP_wPz14EmPe_14ZZCUdZ0H26INzswaVZKuHyWsZWpT7enpAgv9SWJgeU_ZScnaUdFcHQ_PEmkgyKd3FxDzdF344PwedCP7pPLbvuu410YhmDNkSSHiqSsG0mdpolzjC6ZCH363ajql1nVFOrgSyuBZqiAxMla95asot1_qAvEGuAmEcQnBTZs21VACGaULEqcMy-A-rcjYxifEv89hcZ8Kt3L2X4x5aSdOfq4QXILNWm1Y21toNW5bqanOacl9fBF1IDd0i2tv_I2LiFbZW7YSMxL7X0OdK3pDH3SKva3Op3kow52tTxGxo7m4cG7g42rCxB8vs77Q9u6ZHWrFUfGVgNChChfqXV2I_p_BRbtJ8p_lHNKZGsV4q2zTZrZ6Hm0HePqoaZ7rQBwN8d57KyK7KIbvwwdj6C1ItvjTpDtVvuxU40kicGDK1rkeoopEWl58ptnbconCnLG12CwNAZp2WXFwJrcwtevWEXwp0jX41e8-V9Hoo8UBxtPyXz4p9FMe1sgcgIlNOZ0XA20RgUWBRDvAXzemd_KIYk_EpAonXQ7gdBq-7X8LpymVF48E7vcUW0Qq5kc0Ta3SCvCOmcrGi9h33tqJnY-iyuku3DTm-1yK0Ez7UCBmYlVqRoHo8PMsbxKSQO9EBDmmmiimLkLQTqB-BOCY7czB6EBqxNDXfVDqgidi-l_9MUhYyhwat07DyiGZ94GseCrGGZZtXlIektJc2afWPMIctZkKCDAc7-9ZDVT03BoJ6nG1hEts4QBqRDzg5HJTsTB61ZrJrE9sQJKq9sydqGQR4Vvye9J1Glv12ad1L-W6BacW9UcTUaeV7as_zcu28B3MKK-w6NdiBDv8xIV5voGuUyfk-b0IlQpCuNAldQWXEH9JAEq1YvjuxASdP2D3eUSu_Pv9DJaY7T3Ji-0SLleGT1CDpak9VljOxVoZsR6YI7M7w5AUW-j0ehsuw3CzUl5OlwtUOKmIhR2TTEIPkoVWaOYZh3Ii9S6763-gciuiN_u3SSz17O0pkrJQKruiPramZXKlpF9jadCD2k6oeEZwZWommdGWMgGQJ-7p6okdyW7cdN35rFgSyFa-gjguqCvkO8zrXU6d7_FbvC4ePhfQ9wrKZy-X12HxuEoU8OK6I37fvKeZkbYsekmaW60P6l7sRmHwENlmXTPLT6BKTQGqlGaGH3GHrEnVnyNA3g7-ePt8hilqjcV5KYWYzF48Lxidw9nLXDxpbb_TTu7mnYMmJMoiEgl5qsmk81hO085kmt3nDxtahqEzp7nvNL6N9uo8G87ROh3glYRUu4xPK4cBUzQ1GDapSutXTeYVO30zbneJQpwPs73y6QlIlDeMcjzmODtW25xuTMmpOkSAZ3pJT6J9sXQoUDwe9z_mnUFDbKC-KsHi6iFRFXaMBBqSzEyf8aoWtTX3FnfZHMjiZqJoMuZqj7K5R5C0NBbFglndc4NcoRwyiD50NAdp5Mk4EqR02jy8d0k4mfLzxkNP_EjJdOD-bcpPM59VaHuzMLdAWR-Sq7VpieRPdVsXF5hXceoDTKlEGOHZ0gX92BwNcTLqQRJsKscFw1xRbhdPFaA7fcRcVGNhXmaueoRFebB93x6uuF6BUjNKQVXk8iMOLsDZ9A5sXASwWjjF2050EabmSqUoh6KCZIM6t84dZqpFYB0wefshAVJhXINL3FwDiGTTrT2m1-1JluYpQvShWW-GuZ9jCl0jCTBD4OSzGqrbpS3ipjJZp4YjIz3GRiXDUYzGi8SBuYbWTLWWcdYH-XXQ5Xg310a2Wx_g_p30aj32H-WAhONcvxtbIORPHWNqSxTIT-rzLgoiKB0jVvnU10ojZn0viOpGo8uibfQ0kVs45f-BPr4o-VmflYM7SRI6zKLd5WacHdsYtPFBlmZA0li7S7yNwMuu2-J6MEXLaNTz5ho1n65AWfBOmGVJT2Mhis9bUmC6T4ySlTi2FYHpL_FtWn0u5TQuTUUBS_izNu9NGS5RSPfYrFPemjYaIg14l9nX6Knv6lzVjkB1c8UepiiIH4gMNKHrNUL2NJlOzjcEs0DWsycDjsnL4X79MZkTMikUALaqCHI342mmSbXhKtQSJh1CTFIVoTS7y9_YCAJGwfbkam6JAxlLJ9ukOSm3c-lQbzV1aGse4jMhxfjA4hLomfZUN_B_XMRirv1Yw1G8lAoCWoxWHoyGAonay3585-cqktNFS2vj5Nus5bIAJdlmkwa91HjRviXQryBLWRC4RuRIM0oKWPk5s88mMojtpc9MX8VeMA6Om0hMcK0Hx1Op7AwBnbBgTTmrH0UMo8zoOxq7bdxjcB73s5mQ2m3HFrS4Du6HlnSSSaZt1gTcvAZ33LWf8cNSxEAAwkYfh4PHRXAM4x3S677MgHOGcXbOr6seYO5XTYMVVC7L564k8mcKFPKlRlPFl7CvsgxyigbrfOFstAa9WNqAs-i1hgidIPIDSWex3iOhP98gvte5em7iaREChasjEdYquAUJuLzayn8Dulye15Nd7ry4kHwJsOgm1VQxoejDGsvO9MZQL9hgZzp2m0LUTHvXtyoPKoZewV7qfF0igMDa4qai2HWwaCxoMz9Wb9aMmfSyebth3oUx1AMqogdWazQPrSWFeZS6DVDNIMIvAxTI1-4E1rymKVsIjB4olkz-DpHN9f69yxQG-9hIuySS2-9P-zO-mPzMuNeidJk7dBZrMWF9pVD9cwKxK-XOFyMzEmcNPQc7MDfXej8iaCJbBzq0bAXCwAq4mFgqq9KWZTsTCRHMKOGW0zjkztNZzShZ-L4TNJOGhqGr-dRdss86-isMPG-uokWjCJ4pmQp0epfcqGciPDQ18raBbDiXBQxWC4XaLAQEX2CmuzWS1owKOE6JD6ovBf9dEULKTC-ZoEuUZG2K56zX3ndm96qR2VYiUpa548tFCdKYEvz-P9-DNFCkkvA2NHsk77onop_uoTnxjhUVvXHm1eZuERsQTJr48aQN9k565fyoklQ1bYvCdmPAkl0_paWv87uJMxuKTljiw3NrmR4lmJai0JZcFF_fuK6QTeH1-qHTKv0WXJcg4uksSMmtwIlEMLDyKoOH4XdEqxoRSk.lSzYVVx4KcfYv2AWX1iGeQ

9 POST http://localhost:43371/sign_response127.0.0.1:-1localhost:33497

REQ Headers

accept-encoding
gzip
content-type
application/x-www-form-urlencoded
user-agent
IdP-Client
content-length
3978

REQ Body

namevalue
signed_challenge

JWE

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

Headers
{
   "alg" : "ECDH-ES",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595349,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
+ "exp" : 1719390602,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
"epk" : { "kty" : "EC", - "x" : "UdmHpDEa8x7pjFXhkQlNjru0ii-vzhBcTtI7rEe8Of0",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "MYMwKO5kZKWOA2T69GRyPCfJofckzlGyGOHlm7XpYwc",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "Pv2Bn4gaS1zk3QnmjONqdzJjosb0hxP6m--JE4YbKGw",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "a1KJOTWuYU5EIxZxqTQBkJiyD9qYlm23DazTSGpkXm0",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body

{
-  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pNMU9EUTNJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKMGNsQTJRWEJCYnpCck1HUjBRbWx1V0ZCU1RWZHdjMWt0ZW5OaE9ESk9ORU15TFc5UldUZ3hZMlJSSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNkltTkllVzlDWVc4emFWZHljRk4xU25WdFpYVkhUbUp2WjI0eWEyNDBWMGcySWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pWlMxeVpYcGxjSFFnYjNCbGJtbGtJaXdpYzNSaGRHVWlPaUpGYjBJelFXNXdhSEZyYzNOTkxYQlhjM3BmU0ZVNFZtaFhOemRqVDNCblZpSXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM01UYzFPVFV6TkRrc0ltbGhkQ0k2TVRjeE56VTVOVEUyT1N3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lKTFRGcHpWMVYzYzJSaFZtNUpWbWRtYkZKaVZsWkVTRnBCZUVadlpVWTVkVnBaZFV3MWQzbGZWVTlSSWl3aWFuUnBJam9pTURJNU9UWTFZall4TW1SbFlUY3lPU0o5LlFINWoxWUVmejE0UW45bGlHSG1OcE10U0VPdjZOZ1Z4cmV0SjZqRHdjWVVtWDVCRVNoNWFpc0Y5YUdIUFIwTG1BTHFGbzhWV3dDYzZZdFQ1VEdqcHVBIn0.KwDpW4ORdLg2mfc4OTsSve-UnQ_ow2Ha1JitytOmBOxDQxDqN8wBt2DfbNkP22ZOsBLwly1wdeYRAhB84dHXQA"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pNek5EazNJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKbVZYbHRkWFZKUkY5aFpUaFpTMjVNTWt0SFJuTkNVVFl5ZUZGWU16UndiM0JWWTFodVZVRmhXRE5WSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklsWkVkRlZUUVROUVgwZHRVelIwVEVOS1VHOTNPVEZFYVRSeVEzbFZZMlpwSWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pYjNCbGJtbGtJR1V0Y21WNlpYQjBJaXdpYzNSaGRHVWlPaUpxWmtGNU5WTlhObXg1TkZoT1VFVlJiM1IwYzJsdWFuaEVOVTk0VG5wb1lTSXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM01Ua3pPVEEyTURJc0ltbGhkQ0k2TVRjeE9UTTVNRFF5TWl3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lKMlFqbDJiRVkxZFhSTGJWWnRWMUU1VW5SRlFubHNkR1Y2VEZGNGExOUNaM1ZSTkV4bVprdDJYMVU0SWl3aWFuUnBJam9pTmpnNE9XWmhPV0UyWlRSalpHWm1aQ0o5LlJwTkQ2SUk1SnhzTlVWNk1QRFdCUUc2SWlSY08wWWhFNzc1X1FLc3NqaHlqWEpMWlFRUWo4V0k2bk9rLWVQMTdwZGI0UFhCbHBFR1FiM3NLYlByOGtBIn0.V2P6x3d63mZeTurezWoDP24G9taZP0wEzCjJHs36fVtaS3Sq7_KUtBmoLLz9_hZBOkgzo7D6u92fpwhZDjU9CA"
Ein verschachtelt enthaltenes JWT
+}

body.signed_challenge.body.njwt.content

JWT

Headers
{
   "typ" : "JWT",
   "cty" : "NJWT",
   "x5c" : [ "MIIDSzCCAvKgAwIBAgIHA25VKAHcvzAKBggqhkjOPQQDAjCBljELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxRTBDBgNVBAsMPEVsZWt0cm9uaXNjaGUgR2VzdW5kaGVpdHNrYXJ0ZS1DQSBkZXIgVGVsZW1hdGlraW5mcmFzdHJ1a3R1cjEfMB0GA1UEAwwWR0VNLkVHSy1DQTEwIFRFU1QtT05MWTAeFw0yMjExMjQwMDAwMDBaFw0yNTA1MTkyMzU5NTlaMIHOMQswCQYDVQQGEwJERTEdMBsGA1UECgwUVGVzdCBHS1YtU1ZOT1QtVkFMSUQxEzARBgNVBAsMClgxMTA0MTE2NzUxEjAQBgNVBAsMCTEwOTUwMDk2OTESMBAGA1UEBAwJQsO2ZGVmZWxkMSIwIAYDVQQqDBlEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvMT8wPQYDVQQDDDZEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIEdyYWYgdm9uIELDtmRlZmVsZCBURVNULU9OTFkwWjAUBgcqhkjOPQIBBgkrJAMDAggBAQcDQgAEHlNcoznjdoi0Yxv27B3yGaE/19vjOJI78wT2yDcec+mWAlRc/fE/ByhPc/IOLkgsaZmbKuNQhhepE4PQ4qtYDaOB7zCB7DAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFESxTAFYVB7c2Te+5LI/Km6kXIkdMB0GA1UdDgQWBBRKV33xfqk2Htd8LzU4tJTYXVLtmTA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUHMAGGHGh0dHA6Ly9laGNhLmdlbWF0aWsuZGUvb2NzcC8wDgYDVR0PAQH/BAQDAgeAMCAGA1UdIAQZMBcwCgYIKoIUAEwEgSMwCQYHKoIUAEwERjAwBgUrJAgDAwQnMCUwIzAhMB8wHTAQDA5WZXJzaWNoZXJ0ZS8tcjAJBgcqghQATAQxMAoGCCqGSM49BAMCA0cAMEQCIHuswBIIMTvWRf+b5Pu8nt9mEZ1+Fd8o2B3e2atV2c73AiBpAMFuIY2JICTi5n1Yj6rw94ZLsiEfSJW7mu2eU2Ldaw=="
Enthält das verwendete Signer-Zertifikat als Base64 ASN.1 DER-Encoding. Hier kommt ausnahmsweise NICHT URL-safes Base64-Encoding zum Einsatz!
], "alg" : "BP256R1" -}

body.signed_challenge.body.njwt.content.header.x5c.0.content

X509 Certificate

Subject: C=DE,O=Test GKV-SVNOT-VALID,OU=X110411675,OU=109500969,SURNAME=Bödefeld,GIVENNAME=Darius Michael Brian Ubbo,CN=Darius Michael Brian Ubbo Graf von Bödefeld TEST-ONLY

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Elektronische Gesundheitskarte-CA der Telematikinfrastruktur,CN=GEM.EGK-CA10 TEST-ONLY

Serialnumber: 965736952618175

Valid From: 2022-11-24T00:00Z[UTC]

Valid Until: 2025-05-19T23:59:59Z[UTC]


Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM1ODQ3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJ0clA2QXBBbzBrMGR0QmluWFBSTVdwc1ktenNhODJONEMyLW9RWTgxY2RRIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImNIeW9CYW8zaVdycFN1SnVtZXVHTmJvZ24ya240V0g2IiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJFb0IzQW5waHFrc3NNLXBXc3pfSFU4VmhXNzdjT3BnViIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTc1OTUzNDksImlhdCI6MTcxNzU5NTE2OSwiY29kZV9jaGFsbGVuZ2UiOiJLTFpzV1V3c2RhVm5JVmdmbFJiVlZESFpBeEZvZUY5dVpZdUw1d3lfVU9RIiwianRpIjoiMDI5OTY1YjYxMmRlYTcyOSJ9.QH5j1YEfz14Qn9liGHmNpMtSEOv6NgVxretJ6jDwcYUmX5BESh5aisF9aGHPR0LmALqFo8VWwCc6YtT5TGjpuA"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content.body.njwt.content

JWT

Headers
{
+}

body.signed_challenge.body.njwt.content.header.x5c.0.content

X509 Certificate

Subject: C=DE,O=Test GKV-SVNOT-VALID,OU=X110411675,OU=109500969,SURNAME=Bödefeld,GIVENNAME=Darius Michael Brian Ubbo,CN=Darius Michael Brian Ubbo Graf von Bödefeld TEST-ONLY

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Elektronische Gesundheitskarte-CA der Telematikinfrastruktur,CN=GEM.EGK-CA10 TEST-ONLY

Serialnumber: 965736952618175

Valid From: 2022-11-24T00:00Z[UTC]

Valid Until: 2025-05-19T23:59:59Z[UTC]


Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjMzNDk3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJmVXltdXVJRF9hZThZS25MMktHRnNCUTYyeFFYMzRwb3BVY1huVUFhWDNVIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IlZEdFVTQTNQX0dtUzR0TENKUG93OTFEaTRyQ3lVY2ZpIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJqZkF5NVNXNmx5NFhOUEVRb3R0c2luanhENU94TnpoYSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTkzOTA2MDIsImlhdCI6MTcxOTM5MDQyMiwiY29kZV9jaGFsbGVuZ2UiOiJ2Qjl2bEY1dXRLbVZtV1E5UnRFQnlsdGV6TFF4a19CZ3VRNExmZkt2X1U4IiwianRpIjoiNjg4OWZhOWE2ZTRjZGZmZCJ9.RpND6II5JxsNUV6MPDWBQG6IiRcO0YhE775_QKssjhyjXJLZQQQj8WI6nOk-eP17pdb4PXBlpEGQb3sKbPr8kA"
Ein verschachtelt enthaltenes JWT
+}

body.signed_challenge.body.njwt.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "iss" : "http://localhost:35847",
+}

Body

{
+  "iss" : "http://localhost:33497",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "trP6ApAo0k0dtBinXPRMWpsY-zsa82N4C2-oQY81cdQ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "fUymuuID_ae8YKnL2KGFsBQ62xQX34popUcXnUAaX3U",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"token_type" : "challenge", - "nonce" : "cHyoBao3iWrpSuJumeuGNbogn2kn4WH6",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "VDtUSA3P_GmS4tLCJPow91Di4rCyUcfi",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "EoB3AnphqkssM-pWsz_HU8VhW77cOpgV",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "jfAy5SW6ly4XNPEQottsinjxD5OxNzha",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "exp" : 1717595349,
Gültigkeit des Tokens
- "iat" : 1717595169,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "KLZsWUwsdaVnIVgflRbVVDHZAxFoeF9uZYuL5wy_UOQ",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "029965b612dea729"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key x5c-header certificate

Encryption info

Was decrypted using Key prk_idp_enc

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key x5c-header certificate

Encryption info

Was decrypted using Key prk_idp_enc

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

10302localhost:35847127.0.0.1:-1

10302localhost:33497127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Content-Length
0
Date
Wed, 05 Jun 2024 13:46:10 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Location
http://redirect.gematik.de/erezept?
Optional[code]=<Authorization Code in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
&Optional[ssotoken]=<SSO-Token in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der SSO-Token. Mit diesem kann der Client sich wiederholt einloggen ohne erneut den Besitz der Karte durch unterschreiben einer Challenge beweisen zu müssen. Er ist vom IDP für den IDP verschlüsselt und dementsprechend vom Client nicht weiter zu verarbeiten.
&state=EoB3AnphqkssM-pWsz_HU8VhW77cOpgV
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Wed, 26 Jun 2024 08:27:04 GMT
+Location: http://redirect.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDQ4NH0..f9mYu-In0xNXg5xq.jHKA17q86SAkRKOIMfU29TiGodub4FmuG6BJI_SQ6faCLG5TJgsy5FtLfMlb0kOkdMwdbvPd_PhLMh-FCZvJH93qGuViMnj0GuUp1HoniyRdSyjWo14QwnZYW1cVlmPLieJMGDG_8riYbhCCFQR_5Wt0qyuoXm7ypDjpu1IFpPB3guTdiBagGkcwWI8HU2dUg617mrHKaeLSVqSS_hW8qo7HtxlKY-Ne_1KuoH6UUmKTkUqow_YLv1D7h5DKIn5VCzPF2ggnun2qkaEyVbKJeCqjWbDMV6XwJiidh_d0CknCGD8exOiR3jwyRRMMWkEpfYF7XDyC_UWQGPsDEgpHc-m0VnBcw7OpqX7eOrlZ5SmjMbYfgu6vxbShazsP0IT8AbCC9p1Ay17i9KCsnWWLc9uMRTOFmBa6xPmNHWMrYTExVQK_X5rNYLACDWaQElBnRQXvuh9yRJX0G9LxzmSgUOJJvrS0w8iMjSiZU_NEjzEbTRI4dicaB0xxI8vrCz8Ap0R3uvHhCoSOMK0jrHFGBPUzr_GVWQXsfdodiD1V82Aulam2_r7fJC2GUVfdMwKvEczDxJlX3MJGiBx48zbrVHE6NTqzw_dOP9gmBHUwquaLgEw2SR7bADY4ZBwoopzmpoau9sDb2qUBi4yr4tFWW6Qh8h75jqXiWrmK5UkTSxzTWdwPVtjOMDLuF3YL07gIi9lKTxrYP0eahhsRrAFJpzzTczWuv2FwDSpc6QSrXqTDwjVJiRmL0i8orIBPxzYcOhxsuEoEVSjlZzOXlnAs_XGnwRIj_WfoT5CJWG5bzgROGMF_kBT5FMg5759aUdT2rM5KUN8DJajbs_crzLiljbN6b_gI54K47Ap_y_4F620yY17VD8EpniafRyPRtWurgsopak-Ktq5ODxCbOXOZMne1_xnYoIkthf4-2Oab39pwIZbljO1Z1nbECVeY1Rxc-NFBusRlygNqO46xEJRchXogcovx8I_ikufAJxu000JK9k5Q9YsQZMDdiUinBGVyxju27vacn-cB1VaeLX6MhYurLbzBflKLILcXTWCcxBAZO4xXwcIgG79wWjDRPHrvLTzpoE4qvY2OMjxpeF2uyD-Cz0uLGz0jmV8X6lMEF8Ssny1Gbq60RdmBPPXn6O7kPRP5vmvGeq9wx_UZM8y2p9BzXUPSWIMkwiVTPFwu14huesLH03e5jyq6eS13EEDJ1rFwfEA8T-4rZ7qVWiQFwRebCkiFNKF73IJgdoWWUBenYnpAgxO1Dgz81oQl5sgwef79NZZqnlOyD8kkDwHiWULnsvx0UGiPnFzRmElY2Uy-XGbQ0PncUzDQzt5wHANz_x_Jrmw6FgqDIpMlz9G3OYGtSAkci9NyLCWC9DtFSP8n2N2TUXVAQ7EoQgy27OA0SnZBwHhaX4Lv.SOqXeOK_-MHmG-Vbh8ZbwQ&ssotoken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTQzMzYyNH0..7X0roWO0VlePPJ0p.F52ro2CklOxQsqkZ2qAyPGYZiZS6phjPJWS31sdyTRHDhV5QLjkAMMw99IweSd7ZXiJ3Ksm5B3DoG4EMftbe2nEAohG5RP5QHtmP1FTy9HJ_dz6hwfs4nIYfy6TqHHiR5_J79N_78P8lYGb0jaYF6_H6Qs-BvSbg5KvxYwDeQyRuFSc7Y622YswEPO0cCaL7z_Aa10UGGt4_9rKJnyD35QuTt4EY1KokPg2zX31BH6y5MYX7RCHiEgUHiegwRDlMZ4euyEUI7xCy9Wmd-Dp_rDPWcdYpdh6LM7lNA2kzxXvmUqVDwpuqnubWIlaGD10bfITIAAdKie0s0vHaXf836fLrQ2_VxWLVfsggauiq8KqfTHmqcJJxsH7isrfAoh1hpDmXIIpS_EluPxbYAXQaKDxfuRvC_R_keBl3LFCDiIYY2aMDbO8VZlbYOrJWM8P1U7Hx3VjOzoZqI_erzqu0sBeM5nxeCIq9aS-fWmAtg4i9EgWTvb6uVrjhOjHwmyOY9BbO9rxf8dYGHVzGWZ8Eh7uxhUdZDXbfMbGPPk6QlPGfKSJA0JKGIy9BrDwVv2l4a02AiEGDpVoHw3-f4vTlP4rRLgXjdcdNi68TQGDIL7qkSkRZzAMzeScTDqJhwNPMhAJ0WYRjXsEETzOtB5tlR1ixGc3EVAVIC6B4qnEI23IuMI1NFIf7I_JAcOR8mjfGPb-B4dbiEcuEmEGgmJJnkwjRWH4i2PHl5URDIrClBrslJuqcIA4ijYr5HZ6MHHSfGzmSAmnBXM70nsxkL__x8ngEmsVgiqQkRru85T10V4Wk4dGjKXu-1oPfUo4EmtEMJuBhCPo6X9cgnuzLrqpTpmRTjANlorCnQbDcxO4AQS7xU80JCZkudjO2LIshEwT46-1REgOYorr-yPKrJZHpk8XC6EbhRqKThzrKSLHOduSOglvO-7p9PAkhcCeh5Bb9xvbFMYEVvKUfTSA4pfP0lEq6zSjjz61gQT1b1pjq6HVFTw4fVaS8VdYhQ771j9N7fAjmv6ajsArkGuZJNVKyYA60fVerUZokAblNastYLdfylMSHrXoJFnlwvpK6cj3Gk1NQi0KtRDEERzNHBZOgvM703RZbc_xCF6U5QvEcRDhFjJBqd0W296JVcNcNjtGwSTBFMpbus8xvDu1YhfbtesOHoBhO32-JLXL6-3YsO1MLOrTTnV1U78FfzV6ZrlM9hE4gmGFNQCnANge1aaZS0KM3-vuTR7gEj6Yw7wBiX_XKG2SmEqLHwF7OXH18bqdvPGdj20nANVkJPB2WUZ4BO-mJhVhfLafVMkve-Al3V1Y3JgZ_a1zkHZ5oTrnp007B8dUskERQFDPlVyHOHyZRolI7O23S65vNipPMNStK5pCh2iXnX7P7UGUXBvTiWO76JkrdCDnu3o1TzQ8CPsVj84WNqpGYk8MU5MRQR_DPFXf5isGjIXS0PqMmdxFCQtXr0MSOwsuGSxTwes5KWE4P1_fH4wg4o5R2UTfZztr9VS854wFTSlXF_XvmSyitagSb67KNcE9Q9tUm9RoVAr4xhlkiKwFuAQ-h8mJ21D2lsMx8Mx1xSKdckOpYeZvjicrhya-J35-SB9uttVi_x-0LNFXPkMjgjCpauHtHsBH67YgqcsKnmqUF-ZP9zkaeaWAYr77nSQXjNZamJjOgbiJrjRVJsZx7OYWLglRGeOyRIngJa0fMFs43KHvEM_NNlaQfULugWgZPWWCXqGSFrff0CY34GSGzWC-AnCW812oto_eh6rQDexpXXSPddPISw1mo3zJiJkJaZuxHB7tRWhHLqsfAtSNuETvi3N4Lqtj32CQHQ6YsrMLXXF2oyIGFM8K95ZWOa6oMfSspbSibS5R21V--zdO0hXNIOXA4VQezhqLZXrwQkxrjCaTLTnfCKdPmGRIYFW-WIoO1uXIegAAj7JzBiEroqe4wzU3t_8n6UKh9xwxbZDAjlPCb86Oh4oU5r3zTAlr4gO6YuGGtsxgi81InSf4SW0SRI30T98VPspPQf0hNDmKAVxZOzMJbhbnXp6IlzlRKaJGXUnzkiryCo3T55WY-v8qBgmw2vkkwL7llyIW0cvSeQfSgNHLxGV5-8DivTeSdCAA-Bf_bTdi9DOvip4oKP8DjBllj9jtqaRrP931cxepvykb2nNKZKMqpaQ9TBbsG6wjBxXwDn5Zd_aaMf6KSfefGvjrE73JTKn_FAqf4ji1sMA9A0sH6fVc6g8jz4unO21C5ElecNL8k2O4uLnYskqMzYwQhPLhgOxrZolFUGPraAhJRMGt0iX1rKydEJGdkKeUt5fS7P4X4weDoRy7JLx80k0OnTvRxdMf_9a1ot2DPLpGwLi5vCgzuxeDWHm1iH-0WD9i2IP8r81_R3cw4nFDwJiK3khKridu-XD2w7P9Cp1CmNBIQE-yC-IjML1Vp9xFCXaXRHTmJpBVLUHzLC884QnhKsvB7ECrMWamdr9-mKeN5QI57T-Oq-ijXvP-RE2mVF1mm9j5OrWkXQEm_1b8OgrZKP1S55yc1BMWK4ZGdx4SFsSDIeaARbaZ1oDS3DSprpt0dZ-7ZvC65BhBHC3fosNNOxAzLnYqgND7atRZyQ-Ysx4Jm3IGEklrEO0_qBlND2G6RyP5P4JHugk5WuLXa_pyo1aaqtpjo4W8ipZXt2DEco9TaVqVWSgHbeyOoHEV-K2isyD3rKiI2kewJn-gTl-U1ePrzfL_dJiHLIqzg5sPPSg9Dzy8mBk2EhZjb4tTg1gL1uaiKnbTm-3kIdgWOKO5hrJ9L23VOGEU9sUmZsBIBvaSfufxWZX3t996cxCLYaEXcGw46U-PXkITgvd324mEveBpz9JVtPmU-NVGSDH3VvajwBqC63q_y7ICePmknpnhK1ngIriE-x3E3imcO3zWxFbnv05yJ3IBRfa2e8Yuy9GMc7FYnwKIw1EuDED8cc7nmTlvQM1bHOvtFtbGAjkcVUcST9UNhv_elpT4cMowKjWkcE4Jcn7i2zAP-G2kIol66O3h2Dm1baWZmWia02UcLlv4oDRY2gPWd.eczxFej6EDbIIJKC7EM-iw&state=jfAy5SW6ly4XNPEQottsinjxD5OxNzha

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Content-Length
0
Date
Wed, 26 Jun 2024 08:27:04 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Location
http://redirect.gematik.de/erezept?
Optional[code]=<Authorization Code in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
&Optional[ssotoken]=<SSO-Token in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der SSO-Token. Mit diesem kann der Client sich wiederholt einloggen ohne erneut den Besitz der Karte durch unterschreiben einer Challenge beweisen zu müssen. Er ist vom IDP für den IDP verschlüsselt und dementsprechend vom Client nicht weiter zu verarbeiten.
&state=jfAy5SW6ly4XNPEQottsinjxD5OxNzha
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595230
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNTg0NyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiemd4WENqZHZzbXdMOUt5QmxsQXl2Z0FuNm1zTnRHQ3AiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiY0h5b0JhbzNpV3JwU3VKdW1ldUdOYm9nbjJrbjRXSDYiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTc1OTUxNzAsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IkVvQjNBbnBocWtzc00tcFdzel9IVThWaFc3N2NPcGdWIiwiZXhwIjoxNzE3NTk1MjMwLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxNzU5NTE3MCwiY29kZV9jaGFsbGVuZ2UiOiJLTFpzV1V3c2RhVm5JVmdmbFJiVlZESFpBeEZvZUY5dVpZdUw1d3lfVU9RIiwianRpIjoiYjFiMjYxOWIyMjMzMDk3OSJ9.m0wzhMyX62QmGW7BAH-mAYI4QZDR0IXcqxp9unnDLptRDOx_oYuWia-XRapZIetVY1z9afmErfgKlehc-1NLig"
Ein verschachtelt enthaltenes JWT
-}

header.Location.code.value.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390484
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozMzQ5NyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiYmpBYU5TQi1QRVF0el9lY3RYUXdoWjJuNW5QVlgxaC0iLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiVkR0VVNBM1BfR21TNHRMQ0pQb3c5MURpNHJDeVVjZmkiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MTkzOTA0MjQsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6ImpmQXk1U1c2bHk0WE5QRVFvdHRzaW5qeEQ1T3hOemhhIiwiZXhwIjoxNzE5MzkwNDg0LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxOTM5MDQyNCwiY29kZV9jaGFsbGVuZ2UiOiJ2Qjl2bEY1dXRLbVZtV1E5UnRFQnlsdGV6TFF4a19CZ3VRNExmZkt2X1U4IiwianRpIjoiZjY4ZTE5NGRkYjhjZTFiMiJ9.UhJDaMWRwg3TDBDNsqvL9QrpIhVP7kJ9LMCA5-K_OjVIEWFgCtZEAFE5VhIPYeDO4qo9YSLNdsKczT1zSDj-Og"
Ein verschachtelt enthaltenes JWT
+}

header.Location.code.value.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : "Test GKV-SVNOT-VALID",
   "professionOID" : "1.2.276.0.76.4.49",
   "idNummer" : "X110411675",
   "amr" : [ "mfa", "sc", "pin" ],
-  "iss" : "http://localhost:35847",
+  "iss" : "http://localhost:33497",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "zgxXCjdvsmwL9KyBllAyvgAn6msNtGCp",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "bjAaNSB-PEQtz_ectXQwhZ2n5nPVX1h-",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"given_name" : "Darius Michael Brian Ubbo", "token_type" : "code", - "nonce" : "cHyoBao3iWrpSuJumeuGNbogn2kn4WH6",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "VDtUSA3P_GmS4tLCJPow91Di4rCyUcfi",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595170,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390424,
Timestamp der Authentisierung
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "state" : "EoB3AnphqkssM-pWsz_HU8VhW77cOpgV",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1717595230,
Gültigkeit des Tokens
+ "state" : "jfAy5SW6ly4XNPEQottsinjxD5OxNzha",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1719390484,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1717595170,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "KLZsWUwsdaVnIVgflRbVVDHZAxFoeF9uZYuL5wy_UOQ",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "b1b2619b22330979"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

header.Location.ssotoken.value

JWE

Headers
{
+  "iat" : 1719390424,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "vB9vlF5utKmVmWQ9RtEByltezLQxk_BguQ4LffKv_U8",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "f68e194ddb8ce1b2"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
+}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

header.Location.ssotoken.value

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717638370
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MTc1OTUxNzAsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzE3NjM4MzcwLCJpYXQiOjE3MTc1OTUxNzAsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.cECNhBVIXCDtmjMxuk8zDCDGLS2AoWEi-igKIhiIlmWUoCB9ec2erBDOiFqpIlmIowhDM7DyfBOdfxmSFdo5Fw"
Ein verschachtelt enthaltenes JWT
-}

header.Location.ssotoken.value.body.njwt.content

JWT

Headers
{
+  "exp" : 1719433624
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MTkzOTA0MjQsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzE5NDMzNjI0LCJpYXQiOjE3MTkzOTA0MjQsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.TjrkzPoYUglaT9niETHQD790rgT5GX7OBn_IeH6OwC6fvmIWNVg9y0r-eHWvHmCfGmIl-AhcEJmjmT92qJk8xA"
Ein verschachtelt enthaltenes JWT
+}

header.Location.ssotoken.value.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : "Test GKV-SVNOT-VALID",
   "professionOID" : "1.2.276.0.76.4.49",
-  "auth_time" : 1717595170,
Timestamp der Authentisierung
+ "auth_time" : 1719390424,
Timestamp der Authentisierung
"amr" : [ "mfa", "sc", "pin" ], "idNummer" : "X110411675", "iss" : "https://idp.dev.gematik.solutions", @@ -746,103 +735,99 @@ "y" : "lgJUXP3xPwcoT3PyDi5ILGmZmyrjUIYXqROD0OKrWA0"
Y-Koordinate des öffentlichen Punkts des Schlüssels
}, "given_name" : "Darius Michael Brian Ubbo", - "exp" : 1717638370,
Gültigkeit des Tokens
- "iat" : 1717595170,
Zeitpunkt der Ausstellung des Tokens
+ "exp" : 1719433624,
Gültigkeit des Tokens
+ "iat" : 1719390424,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld" -}

header.Location.ssotoken.value.body.njwt.content.body.cnf.x5c.0.content

X509 Certificate

Subject: C=DE,O=Test GKV-SVNOT-VALID,OU=X110411675,OU=109500969,SURNAME=Bödefeld,GIVENNAME=Darius Michael Brian Ubbo,CN=Darius Michael Brian Ubbo Graf von Bödefeld TEST-ONLY

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Elektronische Gesundheitskarte-CA der Telematikinfrastruktur,CN=GEM.EGK-CA10 TEST-ONLY

Serialnumber: 965736952618175

Valid From: 2022-11-24T00:00Z[UTC]

Valid Until: 2025-05-19T23:59:59Z[UTC]


Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Empty body

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Empty body

11 POST http://localhost:46199/token127.0.0.1:-1localhost:35847

REQ Headers

Content-Type
application/x-www-form-urlencoded
User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept
application/json
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Content-Length
2111
Host
localhost:35847
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend

REQ Body

namevalue
client_id
eRezeptApp
Die client_id des Clients. Wird bei der Registrierung vergeben.
Die client_id des Clients. Wird bei der Registrierung vergeben.
code

JWE

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde

Headers
{
+client_id=eRezeptApp&code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDQ4NH0..f9mYu-In0xNXg5xq.jHKA17q86SAkRKOIMfU29TiGodub4FmuG6BJI_SQ6faCLG5TJgsy5FtLfMlb0kOkdMwdbvPd_PhLMh-FCZvJH93qGuViMnj0GuUp1HoniyRdSyjWo14QwnZYW1cVlmPLieJMGDG_8riYbhCCFQR_5Wt0qyuoXm7ypDjpu1IFpPB3guTdiBagGkcwWI8HU2dUg617mrHKaeLSVqSS_hW8qo7HtxlKY-Ne_1KuoH6UUmKTkUqow_YLv1D7h5DKIn5VCzPF2ggnun2qkaEyVbKJeCqjWbDMV6XwJiidh_d0CknCGD8exOiR3jwyRRMMWkEpfYF7XDyC_UWQGPsDEgpHc-m0VnBcw7OpqX7eOrlZ5SmjMbYfgu6vxbShazsP0IT8AbCC9p1Ay17i9KCsnWWLc9uMRTOFmBa6xPmNHWMrYTExVQK_X5rNYLACDWaQElBnRQXvuh9yRJX0G9LxzmSgUOJJvrS0w8iMjSiZU_NEjzEbTRI4dicaB0xxI8vrCz8Ap0R3uvHhCoSOMK0jrHFGBPUzr_GVWQXsfdodiD1V82Aulam2_r7fJC2GUVfdMwKvEczDxJlX3MJGiBx48zbrVHE6NTqzw_dOP9gmBHUwquaLgEw2SR7bADY4ZBwoopzmpoau9sDb2qUBi4yr4tFWW6Qh8h75jqXiWrmK5UkTSxzTWdwPVtjOMDLuF3YL07gIi9lKTxrYP0eahhsRrAFJpzzTczWuv2FwDSpc6QSrXqTDwjVJiRmL0i8orIBPxzYcOhxsuEoEVSjlZzOXlnAs_XGnwRIj_WfoT5CJWG5bzgROGMF_kBT5FMg5759aUdT2rM5KUN8DJajbs_crzLiljbN6b_gI54K47Ap_y_4F620yY17VD8EpniafRyPRtWurgsopak-Ktq5ODxCbOXOZMne1_xnYoIkthf4-2Oab39pwIZbljO1Z1nbECVeY1Rxc-NFBusRlygNqO46xEJRchXogcovx8I_ikufAJxu000JK9k5Q9YsQZMDdiUinBGVyxju27vacn-cB1VaeLX6MhYurLbzBflKLILcXTWCcxBAZO4xXwcIgG79wWjDRPHrvLTzpoE4qvY2OMjxpeF2uyD-Cz0uLGz0jmV8X6lMEF8Ssny1Gbq60RdmBPPXn6O7kPRP5vmvGeq9wx_UZM8y2p9BzXUPSWIMkwiVTPFwu14huesLH03e5jyq6eS13EEDJ1rFwfEA8T-4rZ7qVWiQFwRebCkiFNKF73IJgdoWWUBenYnpAgxO1Dgz81oQl5sgwef79NZZqnlOyD8kkDwHiWULnsvx0UGiPnFzRmElY2Uy-XGbQ0PncUzDQzt5wHANz_x_Jrmw6FgqDIpMlz9G3OYGtSAkci9NyLCWC9DtFSP8n2N2TUXVAQ7EoQgy27OA0SnZBwHhaX4Lv.SOqXeOK_-MHmG-Vbh8ZbwQ&grant_type=authorization_code&key_verifier=eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSIsImN0eSI6IkpTT04iLCJlcGsiOnsia3R5IjoiRUMiLCJ4IjoiZXJHaUl5UmJfWEJMZ29jS0V6X25qOTdNUDFDUkdBbDVnMV9DSHY4UnFmdyIsInkiOiJLVVhPaWtxYkJNSDlQbVR3TmJqOEd2R2FXbi1tQV9IWVVxeVpfNlJoRHBrIiwiY3J2IjoiQlAtMjU2In19..QhPrKKTxY7dhENXK.RMbjqQir4kZLiJ63aZJ5bTTZlTgHb2piGHM1fEvlsRKlfz-AwNVgF3YENGEwFaAunz6tLLLd-fZf3enwn7y2YkhbBfnEwVuJ-8JYbbiKlML7ljcd_iDaU06pu6bABrcPlel0SCzn_i464YYyEZ4mf1thJnqn_SVFJQ.lUt_CKonWgCFRdhu8qfM5A&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept

11 POST http://localhost:43371/token127.0.0.1:-1localhost:33497

REQ Headers

accept
application/json
accept-encoding
gzip
content-type
application/x-www-form-urlencoded
user-agent
IdP-Client
content-length
2111

REQ Body

namevalue
client_id
eRezeptApp
Die client_id des Clients. Wird bei der Registrierung vergeben.
Die client_id des Clients. Wird bei der Registrierung vergeben.
code

JWE

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595230
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNTg0NyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiemd4WENqZHZzbXdMOUt5QmxsQXl2Z0FuNm1zTnRHQ3AiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiY0h5b0JhbzNpV3JwU3VKdW1ldUdOYm9nbjJrbjRXSDYiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTc1OTUxNzAsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IkVvQjNBbnBocWtzc00tcFdzel9IVThWaFc3N2NPcGdWIiwiZXhwIjoxNzE3NTk1MjMwLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxNzU5NTE3MCwiY29kZV9jaGFsbGVuZ2UiOiJLTFpzV1V3c2RhVm5JVmdmbFJiVlZESFpBeEZvZUY5dVpZdUw1d3lfVU9RIiwianRpIjoiYjFiMjYxOWIyMjMzMDk3OSJ9.m0wzhMyX62QmGW7BAH-mAYI4QZDR0IXcqxp9unnDLptRDOx_oYuWia-XRapZIetVY1z9afmErfgKlehc-1NLig"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390484
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozMzQ5NyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiYmpBYU5TQi1QRVF0el9lY3RYUXdoWjJuNW5QVlgxaC0iLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiVkR0VVNBM1BfR21TNHRMQ0pQb3c5MURpNHJDeVVjZmkiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MTkzOTA0MjQsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6ImpmQXk1U1c2bHk0WE5QRVFvdHRzaW5qeEQ1T3hOemhhIiwiZXhwIjoxNzE5MzkwNDg0LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxOTM5MDQyNCwiY29kZV9jaGFsbGVuZ2UiOiJ2Qjl2bEY1dXRLbVZtV1E5UnRFQnlsdGV6TFF4a19CZ3VRNExmZkt2X1U4IiwianRpIjoiZjY4ZTE5NGRkYjhjZTFiMiJ9.UhJDaMWRwg3TDBDNsqvL9QrpIhVP7kJ9LMCA5-K_OjVIEWFgCtZEAFE5VhIPYeDO4qo9YSLNdsKczT1zSDj-Og"
Ein verschachtelt enthaltenes JWT
+}

body.code.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : "Test GKV-SVNOT-VALID",
   "professionOID" : "1.2.276.0.76.4.49",
   "idNummer" : "X110411675",
   "amr" : [ "mfa", "sc", "pin" ],
-  "iss" : "http://localhost:35847",
+  "iss" : "http://localhost:33497",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "zgxXCjdvsmwL9KyBllAyvgAn6msNtGCp",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "bjAaNSB-PEQtz_ectXQwhZ2n5nPVX1h-",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"given_name" : "Darius Michael Brian Ubbo", "token_type" : "code", - "nonce" : "cHyoBao3iWrpSuJumeuGNbogn2kn4WH6",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "VDtUSA3P_GmS4tLCJPow91Di4rCyUcfi",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595170,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390424,
Timestamp der Authentisierung
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "state" : "EoB3AnphqkssM-pWsz_HU8VhW77cOpgV",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1717595230,
Gültigkeit des Tokens
+ "state" : "jfAy5SW6ly4XNPEQottsinjxD5OxNzha",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1719390484,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1717595170,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "KLZsWUwsdaVnIVgflRbVVDHZAxFoeF9uZYuL5wy_UOQ",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "b1b2619b22330979"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
grant_type
authorization_code
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
key_verifier

JWE

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.

Headers
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
{
+  "iat" : 1719390424,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "vB9vlF5utKmVmWQ9RtEByltezLQxk_BguQ4LffKv_U8",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "f68e194ddb8ce1b2"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
+}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
grant_type
authorization_code
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
key_verifier

JWE

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.

Headers
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
{
   
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
"alg" : "ECDH-ES", "enc" : "A256GCM", "cty" : "JSON", "epk" : { "kty" : "EC", - "x" : "ZSsbCqY0xPrU_g0hHleM5KIyZ6u7DL55XsfW8VxGPx0",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "p0EH-n1tc5gi3kOlnOehs2QaDoSI92r2v7WkxjZel68",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "erGiIyRb_XBLgocKEz_nj97MP1CRGAl5g1_CHv8Rqfw",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "KUXOikqbBMH9PmTwNbj8GvGaWn-mA_HYUqyZ_6RhDpk",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).

{
+}

Body
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).

{
   
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).
- "token_key" : "5ByhGK_FZ4qVZPMe4V_YS7rneKodLDyGFdXIphTxSx4", - "code_verifier" : "OokEzKWw7w1fga3rhK2iuEwoQ8xSlXoQjdCQjN8zFxc" -}

Encryption info

Was decrypted using Key prk_idp_enc

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.
redirect_uri
http%3A%2F%2Fredirect.gematik.de%2Ferezept
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.

Encryption info

Was decrypted using Key prk_idp_enc

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.
redirect_uri
http%3A%2F%2Fredirect.gematik.de%2Ferezept
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.

12200localhost:35847127.0.0.1:-1

12200localhost:33497127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Date
Wed, 05 Jun 2024 13:46:19 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Wed, 26 Jun 2024 08:27:13 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Date
Wed, 26 Jun 2024 08:27:13 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxNzU5NTQ3OX0..722lvIu0t6qpnFsP.XL5kOpuks2n6SsOYxfCK47jPT-zoJFQC78AmcylTrmL5UO0xqx4zHwjgNYG4s10IB-RynaHVXgA-ySOSGagGu5rEpXOvDDacpZm1kW-raIVL5zg9ksyDSI2s_nluE7jK-WB8G2evYv3Ppdaoq1I9cs-CuHwKaN5_xuvnxm2JUMcUyeFGhcxH9xOHABRVcDtG3EgJdsTX9BNZl1xKqg7vzqp_msHNC-qbFp9Tjs5ykZSHFRf4S6tmVP4MBUlpkhpkQl-xQImZkfSoUw-P5ukCiK5f3Z7HSuhUlDmJ5qPJq58IEcvRNW46M_E5qtMUbZdGcuKVXcsBlgFWMAhStQCpGlNEIt9i9Jp-dScpP01rVqYHvu3wnZ9DipThletsBQcRZa7hYFCy-B7drFl3m6XgrK9ogVi9LN-b2CuUU8Zea5Ly-WMCjZzLeu_4OZdnXpeTFe9eSKwjEX20A2KJ0SbPL2opo4ryz-XDhR2d1S2eJpNLaugB35peq4kx8Uun2vb26lMnmH4s2bBh2KzTEqER-rjnnEEn1Em1AHPt8ya9J2NJjRDgZm8i098AjaExygedQEVd48uMDnYJcxsxCjRWVfLlV0hbxd1IES7VRGsRZMICzLQ_yDQVhCT2WF_emSSlMu_6xBNtB8gdPZYYknRLHSWDbWiXsWy5RVVcF9l7AamLuDbdLN6yqmT3sD0NL7Jj3kNTf_1-xjthbvmeZxtlS0IPxO9kAcdbCYchHXQWmpXjU3dq5nGPQ2UVY2icMfEIQM9dOg957zRNyRUVWKPnDIJfkvM3XLubG3-Ly0p7IyNr-s2qLQOTAgSL9699tEBO-9JRy1ZVpbrnnu48c3HNPXpdwwwCQSda6f4eiVYwEGNY7rQ0pf9lgl1LSSAl7OAvW_VgLBVdeHAjQ7IRvI54xto-ovKtelpu8wYvny2eahyp9og8-UtxzzVqODNsOzudgQxKt8APOIPNv_3G-t-BlSJBdjeRNjwiLbEDseJiUwKBFlzOD5CeJvhWyKQ0OeYUoM-LgMsvU9c05y27xSkaFKDS_sgDjdIheRjSf1fXjnrPadirTeHWRyuGwALaAesWC2FPsoyUNlQIil5mVaffXEXjn7lxVJxScZbcHgoOwTqWOyzdTtZmDmtnrcrf_9ImOSzdvo_2gwCnLa3qmPBqhf6MJM0bIKiCGIgbRQDLbgurFdTvk75bz04idTbc0dWOmg01NIv_3C00YCFYwKFSwQo.7ka3t_VTsfGtGB0n9Lbe_w",
Das verschlüsselte ID-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
- "access_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxNzU5NTQ3OX0..PfBdzf_S4HzSkCd_.1v-PQwN75Hyb6bmxMT2cGR5VzkrlFvkvLv3EahXJVZZ0LU2Wb0cFkSDnDfF-S8A1R5Q-AolZI4wzUaChnLhUhDW26fDKc25bYb6Fmc2dD0akBppbgrK6nDAW4ISWZmHLLu3DDgW6ghM_TJDHDd6EbNlPq3cMnXao797gVs8dA5y6k0bC4xgJ7WUfiv3p4ir1bcNwg2gFHsssB6h6_5G9H6Y8QXwLIAjVOA0w7aPV-MIOw7NwiInygP4zx5BOGX1N7_zxtf8i0J3jMkKsIQKY6Sv3XAkoMrERRdT9GNTLdDZ3eYx80mnMLmqKrY36dz--22xV1dpPmci_DJqyJNufpY5Z81XmwvSSjhXCtdgETrL8DR8YecRmhUj1PwTwIxVmJaDo0k706ZpU1WUfin9jB72kDFTUfZP-cWZ16AfyrgE_br_i51kiS_ixU5nV-NcNRCv3MOGU7HrCsMnz5Et9zJKqETgnMiFhvpdCdYI8Txjp71u-HO9yVPmNV-67g74vVHsxinPBdHGjbCr_ft-kYrTTi7TiBPHDvYbHMa85xqFIDoeTpMxKumD1_WClBHOCRqpEoWEndAD7ck4THMhi9WeoE47klg5ugCdM2XkSAl_j__8umpxQMf9F0EYyq-xDBLCF9O0LahrfjkYbTHlNRjZ70hva9iWYcIRCnAxEaHiFX0G2ACiF5zf26Gp0-4KB3IFeiTuAbbRzgd5EcAOCwSuKwriNfZVH8-1YecfoBL1nbVQXpYK0TNLyLwKa-5v7ttCu6HGTsUjPY_A9DsiqlN25ldi_elBhRxdKGTPCVsBIO4glO2f4-AwkhCLtd7eEF-l19EYOfuqo1fIVZ05bNeE35snxGN97ZfcOIvoFecTNE_ZsL1dLt_EOqqjchfBDnznGLZr4R44UlU209fuN825aVckb82oksNdRvwJ5E4XaCvr0meIibRNcDy7uRIxG6QWLtFtYTI9y3Z64K0jkEPJR-do8a10YDhEjqkqBTf2GAp9UmFDQCtVv8W0fbvWS2_4cqkpaXecCtyhCuVrirxtnjtXPUYvWEu-z70tnyPRgwnLQbnA7cYyuR5SyoD_LpCIgcUOiUeSbsatzFMPT94FQJFL_iXWE5u505aC38ypCwsDxv6vaEd3toxLmRLuSc3hEoSIZBhEd_RxQbz6EnddTkqX1Hn100-0UI_LODSTHBnnp00OAwM6zSMS7dox2C_xV3kSVfzDANNenW2v-wpRCc0F8HKleDy1XPITZD8-h_EVldZ6T0oo.w3JLWr0RlNdaJFsegUbS4g"
Das verschlüsselte Access-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
-}

body.id_token.content

JWE

Headers
{
+  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDczM30..k0phatF4cCeIGNgp.q8OZ1H3CNcuVgKNXK5Oikc5aqPF23H11mplu3Ref_d3jAFmz79yKVL00neVLiuSLutkiThZG7zNk_iG7A9_rqLzw6wSv0kgJjQp8ZL38D8sjIWNGlkw0UPWwbGEtnfhaVKI4f8J_itmlcECsk9gRXSDCAe23CBDr2nwJelBYp6Xh3LdjR1Kc_eVcGNxcD3Ps4aj3wZ-2LAM7C9upkFIzD7cgGHuoPNci6RYw8tH0vdRmw15I4ku7gRB_04LK90P32vPhEv84fec2Febnu4rY3eqYZa9IMUb_mdrYH74eVpDHhIWsZA13AsWiopjF0Lb7lQD0jXzslOi12N1c4DLQziHSoGdRyHmnkzjvasSUuceHcjiCDMycNECDoaEUXhkFYmcypKAveNGszv9tm4ZXGKoXBsmxGGi0wvjTAor3NBrXuSHBZXZlHBLiYcvRaR9k3jK2e86D_iPw6PH1mN75VyOJ5aIEWys4iC00oAk8dv4vgFkj5fzz3mehiRpaDDtIW44rrACWPFWcvVhqiWhcJY2XSLYloLquTlf3QFFe_Wf6b1qwTMHjMs4PtZD_Ox387mZTm4lJvhtXz9V5kI_uSfD9dt4AktHU-ebJCKYS4O6JRtIBB9NbeVx51cIKVgW6YSLyrkrsNmL4JDcyOtanZ1yILO-XInHfiAvv0s9JS0KfD-r5hutzTPU1aWDvj40UxO1H1BtW9q2fqk5Zm42zD-uU6LKtx0U6m8RtIcLpXRegNZsGAEYHhW_wT5nOG-JcB1OCFTMhR-CerfOWa6sjCtNvwBgWTOx86CQsdCDtTn26NB38H6nEue4Oqc5sQGLhoDV2E_qCBhQNcgjeqBaK56JWyOqIIHPEQS9DofvvC2J-K-M-F4JWN7mmemQtjCL7zcQgF_Dz6GATwkyZAkv6WQ5X5Bz1EQZb3GCOXkpjMmCOdO4YSwnd-bEyCNZlQ3Wh2svnveU1IzRjdCN5lX6lLaOZVRMRAgd6hkyuyia5XTwsaPhdbMU3yt83WK6oNv-mfdpzI57E8YWJAF57bJG8bPbaa5HoVLyrDWOQXqSXz0I7xO99T_cvztY3MsPI7a4uCU-17B_WOdFj6vZcsBYYLKVx_Apy0ADDoSVavKLJiahem1iov19XNQTQAFRWhmWkkxmUO6BaYUxBRFisXJIAWNzEfhRrdF6jHdVgQ-PaOThr0fGhbcugCMxnw6R-GLasizegcpK-bdffBj5ENbIYRwE.FDJMtQDS91UQd0VbLhjTCg",
Das verschlüsselte ID-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
+ "access_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDczM30..w1Gvk5sI7fjyssZP.0CAujarHzXmRRuR7Ugb-P3C0THZ1rBClQOxXXChz8CqYv3ymjBzI-jj99q3iHPNXaY6-BRcGZtmIhW5BmZCoNfl6-OfuGxYi_EApQwPeEH_9BIwEu0_mCx4lJ2nXRvHHJsSaOIUaZB11KXPeDZoS1ne1fRODE9irzlR9286G52dLjcsrdYvZ87M8GiG2678ZAq5JVoXmh_dDk_OZUyHoOFlcWWGoXcDdSsUfQrL52stxOXdjZ18iLuar5hsT-5PW3H3yve3gJLt7BKfNOd-Ia16YDF8aJlaJfTiLwGBK-R7DPot3ZAWXqYdlvT2Ju6zAloNtY0EL7Y3sEFiG8RY4G0tC7abySKIprsgDuM3Xf_djJd77x5-dEnBmGMuMvgXzJ1HG2rNg-DRO9HO0ifWhPrcktSiIyPlQCF24cawPiW2-6vjieWWnmRgj8p93jMAULX3XQNS-mIoUCzopMZaKv6uLje8Ib5-rbVjJolWBNZSyyrMvMfpmPQ9kf1QMatZxnd6s4NlUYsttqsd_dlXACZhXr01Kn2mIJuEORWiixM3rOXTGCawbWXzCfgt1noB_6ihN7g-iwypndqTRxsGMSYEBvTpx8w1h7BiCpO0YBuo-2hG075W2IKjj65JWgfCPtZZhACIM0im9hNfYiAIh7cIujuW6DYNazvBTdHyCGND7yYfueT56ruqheNKmXmXgZlL6kx-qLfwFIyi8w8rPT5BlJorAndBfFkExm5YdXvbWtLWpjIJ-uX_zbYlsBbmo_UhgmilJ4ibwzCTyq9VwVsrlvJDRX6Kp_INEdesgjNxHPW_7LckNAeuy_5yzuhNkqxBjsmSe-hcJD5LmtMPd_kOYairg3XV5mLasHYhDowE-WzdA1aKapWXm5LXQee1CRNt-bw-6O3IdbSwQMnpXSzpkY7TiNW9PJqB091ZQKl7kseMlg8231qbMSIfYCM34Ba5WhIYjuH9IufrIZ-lyulPC0IzUm45wb7S4yFdU6pdN63H94kGr9GmCE8KRZyjhmWP3ZQxrZJvcgOMosg4Eyfr-oIUEgS6RfmokgQcf2hGtu0Szqdrlwdw7ynkxbzWWzs1Ui57DudsNbFSpDiPav5UvAxKt6CyDbQwzaZGaNVQ4s_ohB0JLeKRe6d7goDNQJheZlo-bDGCK3lm2pttQu2B2rvCcpNMMVE-4C-WAYTSauTBO0dpvgSM9YonlH54vdSu6Wl2wQmwFQc_wkckBg1trHqSVO8hkGXMevI_pnnGtNzd3M2dGMvM.kDeEy0hT_iE_vlkzfKBmMg"
Das verschlüsselte Access-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
+}

body.id_token.content

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595479
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiN3I2OGxzeG12b1VXMVRreFQ2YzhRQSIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoiY0h5b0JhbzNpV3JwU3VKdW1ldUdOYm9nbjJrbjRXSDYiLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcxNzU5NTE3MCwiZXhwIjoxNzE3NTk1NDc5LCJpYXQiOjE3MTc1OTUxNzksImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiYmU0ZDFhYzJjYjkzZDExNSJ9.IQ86jmTDe9ssuCVqlnuYsCRd73nEHuSaTGHyx0b7ZHmpPofTt-fzBLI7qG_oQuaQOadyyPrybHIJspmi-mGFSA"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390733
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiaFVFOV9sUlBlUFhBbDVZOE05QzlqZyIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoiVkR0VVNBM1BfR21TNHRMQ0pQb3c5MURpNHJDeVVjZmkiLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcxOTM5MDQyNCwiZXhwIjoxNzE5MzkwNzMzLCJpYXQiOjE3MTkzOTA0MzMsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiMTJiZTQyZjVmNTI5MzU3NyJ9.ElfqtzcQQ6mQ0i0R0fOVrXQVwtxL0hnKQauAeQNZ83GnTTY1c4a5X3DKLdg05iCEBt91BgLUOkwj0lRwcSd6gw"
Ein verschachtelt enthaltenes JWT
+}

body.id_token.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "at_hash" : "7r68lsxmvoUW1TkxT6c8QA",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
+}

Body

{
+  "at_hash" : "hUE9_lRPePXAl5Y8M9C9jg",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
"sub" : "p2h-RT6EERghbjP8R1wnyz8k4xhOhwbesJRP0XnuSmo",
subject. Base64(sha256(audClaim + idNummerClaim + serverSubjectSalt))
"organizationName" : "Test GKV-SVNOT-VALID", "professionOID" : "1.2.276.0.76.4.49", @@ -851,27 +836,27 @@ "iss" : "https://idp.dev.gematik.solutions", "given_name" : "Darius Michael Brian Ubbo", "display_name" : "Darius Michael Brian Ubbo Bödefeld", - "nonce" : "cHyoBao3iWrpSuJumeuGNbogn2kn4WH6",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "VDtUSA3P_GmS4tLCJPow91Di4rCyUcfi",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"aud" : "eRezeptApp", "acr" : "gematik-ehealth-loa-high", "azp" : "eRezeptApp", - "auth_time" : 1717595170,
Timestamp der Authentisierung
- "exp" : 1717595479,
Gültigkeit des Tokens
- "iat" : 1717595179,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1719390424,
Timestamp der Authentisierung
+ "exp" : 1719390733,
Gültigkeit des Tokens
+ "iat" : 1719390433,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld", - "jti" : "be4d1ac2cb93d115"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

body.access_token.content

JWE

Headers
{
+  "jti" : "12be42f5f5293577"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
+}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

body.access_token.content

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595479
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcxNzU5NTE3MCwiZXhwIjoxNzE3NTk1NDc5LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxNzU5NTE3OSwianRpIjoiOTBmNzM5MTIwMjYyZDM2NSJ9.bA_f_z1e3kbgxjz0vKYR0dXVi14qZ0fkioEDscJDWWZSiT4C1qjqbG2rXQAG5CHFCSWGZMfzFFDOxPFV0zlSzA"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390733
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTcxOTM5MDQyNCwiZXhwIjoxNzE5MzkwNzMzLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxOTM5MDQzMywianRpIjoiZDVmZjg2M2RlMTZhYzAyNiJ9.lk-HpPC5caExk3uEVxUA0E8utcPxHLU3rROABpyCN-5WRYen7eIWM84mpT228JcIazw4sz5ZG0usmHNwoYkw4A"
Ein verschachtelt enthaltenes JWT
+}

body.access_token.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "at+JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "sub" : "p2h-RT6EERghbjP8R1wnyz8k4xhOhwbesJRP0XnuSmo",
subject. Base64(sha256(audClaim + idNummerClaim + serverSubjectSalt))
"professionOID" : "1.2.276.0.76.4.49", "organizationName" : "Test GKV-SVNOT-VALID", @@ -884,13 +869,13 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "eRezeptApp", - "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595170,
Timestamp der Authentisierung
- "exp" : 1717595479,
Gültigkeit des Tokens
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390424,
Timestamp der Authentisierung
+ "exp" : 1719390733,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1717595179,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "90f739120262d365"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

Created Wed, 5 Jun 2024 15:46:22 +0200
\ No newline at end of file + \ No newline at end of file diff --git a/doc/tokenFlowPs.html b/doc/tokenFlowPs.html index eb8f184..e049b34 100644 --- a/doc/tokenFlowPs.html +++ b/doc/tokenFlowPs.html @@ -453,51 +453,56 @@ .has-text-info { color: #0fc5d9!important; } -
Gerendert mit https://github.com/gematik/app-RbelLogger
Created Wed, 5 Jun 2024 15:47:05 +0200

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Content-Length
3118
Date
Wed, 26 Jun 2024 08:27:45 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/jwt;charset=UTF-8

RES Body

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_disc_sig",
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
"x5c" : [ "MIICsTCCAligAwIBAgIHAbssqQhqOzAKBggqhkjOPQQDAjCBhDELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxMjAwBgNVBAsMKUtvbXBvbmVudGVuLUNBIGRlciBUZWxlbWF0aWtpbmZyYXN0cnVrdHVyMSAwHgYDVQQDDBdHRU0uS09NUC1DQTEwIFRFU1QtT05MWTAeFw0yMTAxMTUwMDAwMDBaFw0yNjAxMTUyMzU5NTlaMEkxCzAJBgNVBAYTAkRFMSYwJAYDVQQKDB1nZW1hdGlrIFRFU1QtT05MWSAtIE5PVC1WQUxJRDESMBAGA1UEAwwJSURQIFNpZyAzMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABIYZnwiGAn5QYOx43Z8MwaZLD3r/bz6BTcQO5pbeum6qQzYD5dDCcriw/VNPPZCQzXQPg4StWyy5OOq9TogBEmOjge0wgeowDgYDVR0PAQH/BAQDAgeAMC0GBSskCAMDBCQwIjAgMB4wHDAaMAwMCklEUC1EaWVuc3QwCgYIKoIUAEwEggQwIQYDVR0gBBowGDAKBggqghQATASBSzAKBggqghQATASBIzAfBgNVHSMEGDAWgBQo8Pjmqch3zENF25qu1zqDrA4PqDA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUHMAGGHGh0dHA6Ly9laGNhLmdlbWF0aWsuZGUvb2NzcC8wHQYDVR0OBBYEFC94M9LgW44lNgoAbkPaomnLjS8/MAwGA1UdEwEB/wQCMAAwCgYIKoZIzj0EAwIDRwAwRAIgCg4yZDWmyBirgxzawz/S8DJnRFKtYU/YGNlRc7+kBHcCIBuzba3GspqSmoP1VwMeNNKNaLsgV8vMbDJb30aqaiX1"
Enthält das verwendete Signer-Zertifikat als Base64 ASN.1 DER-Encoding. Hier kommt ausnahmsweise NICHT URL-safes Base64-Encoding zum Einsatz!
] -}

body.header.x5c.0.content

X509 Certificate

Subject: C=DE,O=gematik TEST-ONLY - NOT-VALID,CN=IDP Sig 3

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Komponenten-CA der Telematikinfrastruktur,CN=GEM.KOMP-CA10 TEST-ONLY

Serialnumber: 487275465566779

Valid From: 2021-01-15T00:00Z[UTC]

Valid Until: 2026-01-15T23:59:59Z[UTC]


Body

{
-  "authorization_endpoint" : "http://localhost:46199/sign_response",
URL des Authorization Endpunkts.
- "auth_pair_endpoint" : "http://localhost:46199/alt_response",
URL des Biometrie-Authorization Endpunkts.
- "sso_endpoint" : "http://localhost:46199/sso_response",
URL des SSO-Authorization Endpunkts.
- "uri_pair" : "http://localhost:46199/pairings",
URL des Pairing-Endpunkts
- "token_endpoint" : "http://localhost:46199/token",
URL des Authorization Endpunkts.
- "third_party_authorization_endpoint" : "http://localhost:46199/extauth", +}

body.header.x5c.0.content

X509 Certificate

Subject: C=DE,O=gematik TEST-ONLY - NOT-VALID,CN=IDP Sig 3

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Komponenten-CA der Telematikinfrastruktur,CN=GEM.KOMP-CA10 TEST-ONLY

Serialnumber: 487275465566779

Valid From: 2021-01-15T00:00Z[UTC]

Valid Until: 2026-01-15T23:59:59Z[UTC]


Body

{
+  "authorization_endpoint" : "http://localhost:43371/sign_response",
URL des Authorization Endpunkts.
+ "auth_pair_endpoint" : "http://localhost:43371/alt_response",
URL des Biometrie-Authorization Endpunkts.
+ "sso_endpoint" : "http://localhost:43371/sso_response",
URL des SSO-Authorization Endpunkts.
+ "uri_pair" : "http://localhost:43371/pairings",
URL des Pairing-Endpunkts
+ "token_endpoint" : "http://localhost:43371/token",
URL des Authorization Endpunkts.
+ "third_party_authorization_endpoint" : "http://localhost:43371/extauth", "federation_authorization_endpoint" : "https://idpfadi.dev.gematik.solutions/auth", - "uri_disc" : "http://localhost:46199/.well-known/openid-configuration",
URL des Discovery-Dokuments
+ "uri_disc" : "http://localhost:43371/.well-known/openid-configuration",
URL des Discovery-Dokuments
"issuer" : "https://idp.dev.gematik.solutions", - "jwks_uri" : "http://localhost:46199/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
- "exp" : 1717681610,
Gültigkeit des Tokens
- "iat" : 1717595210,
Zeitpunkt der Ausstellung des Tokens
- "uri_puk_idp_enc" : "http://localhost:46199/idpEnc/jwk.json", - "uri_puk_idp_sig" : "http://localhost:46199/idpSig/jwk.json", + "jwks_uri" : "http://localhost:43371/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
+ "exp" : 1719476865,
Gültigkeit des Tokens
+ "iat" : 1719390465,
Zeitpunkt der Ausstellung des Tokens
+ "uri_puk_idp_enc" : "http://localhost:43371/idpEnc/jwk.json", + "uri_puk_idp_sig" : "http://localhost:43371/idpSig/jwk.json", "subject_types_supported" : [ "pairwise" ], "id_token_signing_alg_values_supported" : [ "BP256R1" ], "response_types_supported" : [ "code" ], @@ -507,27 +512,23 @@ "acr_values_supported" : [ "gematik-ehealth-loa-high" ], "token_endpoint_auth_methods_supported" : [ "none" ], "code_challenge_methods_supported" : [ "S256" ], - "kk_app_list_uri" : "http://localhost:46199/directory/kk_apps", - "fed_idp_list_uri" : "http://localhost:46199/fed_idp_list" -}

Signature

Was verified using Key puk_disc_sig

Signature

Was verified using Key puk_disc_sig

33 GET http://localhost:46199/idpSig/jwk.json127.0.0.1:-1localhost:33483

REQ Headers

User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Host
localhost:33483
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

33 GET http://localhost:43371/idpSig/jwk.json127.0.0.1:-1localhost:46681

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client
Empty body

34200localhost:33483127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.1
Date
Wed, 05 Jun 2024 13:46:53 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+{"x5c":["MIICsTCCAligAwIBAgIHA61I5ACUjTAKBggqhkjOPQQDAjCBhDELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxMjAwBgNVBAsMKUtvbXBvbmVudGVuLUNBIGRlciBUZWxlbWF0aWtpbmZyYXN0cnVrdHVyMSAwHgYDVQQDDBdHRU0uS09NUC1DQTEwIFRFU1QtT05MWTAeFw0yMDA4MDQwMDAwMDBaFw0yNTA4MDQyMzU5NTlaMEkxCzAJBgNVBAYTAkRFMSYwJAYDVQQKDB1nZW1hdGlrIFRFU1QtT05MWSAtIE5PVC1WQUxJRDESMBAGA1UEAwwJSURQIFNpZyAxMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABJZQrG1NWxIB3kz/6Z2zojlkJqN3vJXZ3EZnJ6JXTXw5ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcajge0wgeowHQYDVR0OBBYEFJ8DVLAZWT+BlojTD4MT/Na+ES8YMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL2VoY2EuZ2VtYXRpay5kZS9vY3NwLzAMBgNVHRMBAf8EAjAAMCEGA1UdIAQaMBgwCgYIKoIUAEwEgUswCgYIKoIUAEwEgSMwHwYDVR0jBBgwFoAUKPD45qnId8xDRduartc6g6wOD6gwLQYFKyQIAwMEJDAiMCAwHjAcMBowDAwKSURQLURpZW5zdDAKBggqghQATASCBDAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDRwAwRAIgVBPhAwyX8HAVH0O0b3+VazpBAWkQNjkEVRkv+EYX1e8CIFdn4O+nivM+XVi9xiKK4dW1R7MD334OpOPTFjeEhIVV"],"use":"sig","kid":"puk_idp_sig","kty":"EC","crv":"BP-256","x":"llCsbU1bEgHeTP_pnbOiOWQmo3e8ldncRmcnoldNfDk","y":"ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcY"}

34200localhost:46681127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.2
Date
Wed, 26 Jun 2024 08:27:49 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "x5c" : [ "MIICsTCCAligAwIBAgIHA61I5ACUjTAKBggqhkjOPQQDAjCBhDELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxMjAwBgNVBAsMKUtvbXBvbmVudGVuLUNBIGRlciBUZWxlbWF0aWtpbmZyYXN0cnVrdHVyMSAwHgYDVQQDDBdHRU0uS09NUC1DQTEwIFRFU1QtT05MWTAeFw0yMDA4MDQwMDAwMDBaFw0yNTA4MDQyMzU5NTlaMEkxCzAJBgNVBAYTAkRFMSYwJAYDVQQKDB1nZW1hdGlrIFRFU1QtT05MWSAtIE5PVC1WQUxJRDESMBAGA1UEAwwJSURQIFNpZyAxMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABJZQrG1NWxIB3kz/6Z2zojlkJqN3vJXZ3EZnJ6JXTXw5ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcajge0wgeowHQYDVR0OBBYEFJ8DVLAZWT+BlojTD4MT/Na+ES8YMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL2VoY2EuZ2VtYXRpay5kZS9vY3NwLzAMBgNVHRMBAf8EAjAAMCEGA1UdIAQaMBgwCgYIKoIUAEwEgUswCgYIKoIUAEwEgSMwHwYDVR0jBBgwFoAUKPD45qnId8xDRduartc6g6wOD6gwLQYFKyQIAwMEJDAiMCAwHjAcMBowDAwKSURQLURpZW5zdDAKBggqghQATASCBDAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDRwAwRAIgVBPhAwyX8HAVH0O0b3+VazpBAWkQNjkEVRkv+EYX1e8CIFdn4O+nivM+XVi9xiKK4dW1R7MD334OpOPTFjeEhIVV"
Enthält das verwendete Signer-Zertifikat als Base64 ASN.1 DER-Encoding. Hier kommt ausnahmsweise NICHT URL-safes Base64-Encoding zum Einsatz!
], "use" : "sig",
Erlaubte Verwendungen des Schlüssels. Siehe https://tools.ietf.org/html/rfc7517#section-4.2
"kid" : "puk_idp_sig",
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
@@ -535,57 +536,49 @@ "crv" : "BP-256", "x" : "llCsbU1bEgHeTP_pnbOiOWQmo3e8ldncRmcnoldNfDk",
X-Koordinate des öffentlichen Punkts des Schlüssels
"y" : "ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcY"
Y-Koordinate des öffentlichen Punkts des Schlüssels
-}

body.x5c.0.content

X509 Certificate

Subject: C=DE,O=gematik TEST-ONLY - NOT-VALID,CN=IDP Sig 1

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Komponenten-CA der Telematikinfrastruktur,CN=GEM.KOMP-CA10 TEST-ONLY

Serialnumber: 1034953504625805

Valid From: 2020-08-04T00:00Z[UTC]

Valid Until: 2025-08-04T23:59:59Z[UTC]


35 GET http://localhost:46199/idpEnc/jwk.json127.0.0.1:-1localhost:33483

REQ Headers

User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Host
localhost:33483
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

35 GET http://localhost:43371/idpEnc/jwk.json127.0.0.1:-1localhost:46681

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client
Empty body

36200localhost:33483127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.1
Date
Wed, 05 Jun 2024 13:46:56 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+{"use":"enc","kid":"puk_idp_enc","kty":"EC","crv":"BP-256","x":"QLpJ_LpFx-6yJhsb4OvHwU1khLnviiOwYOvmf5clK7w","y":"mHuknfNkoMmSbytt4br0YGihOixcmBKy80UfSLdXGe4"}

36200localhost:46681127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.2
Date
Wed, 26 Jun 2024 08:27:51 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "use" : "enc",
Erlaubte Verwendungen des Schlüssels. Siehe https://tools.ietf.org/html/rfc7517#section-4.2
"kid" : "puk_idp_enc",
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
"kty" : "EC", "crv" : "BP-256", "x" : "QLpJ_LpFx-6yJhsb4OvHwU1khLnviiOwYOvmf5clK7w",
X-Koordinate des öffentlichen Punkts des Schlüssels
"y" : "mHuknfNkoMmSbytt4br0YGihOixcmBKy80UfSLdXGe4"
Y-Koordinate des öffentlichen Punkts des Schlüssels
-}

37 GET http://localhost:46199/sign_response?client_id=gematikTestPs&response_type=code&redirect_uri=http%3A%2F%2Ftest-ps.gematik.de%2Ferezept&state=nqXwFwxUYaCYOsdxRvBppPv67yTpTD-o&code_challenge=fbA0fvxdNU-z7tbN-eYnsbo3SJpuBzWE7azAIQsCZ6A&code_challenge_method=S256&scope=e-rezept+openid&nonce=E4P4U3lP1gL_wVeH3ZQiROnVRJe4PHDW127.0.0.1:-1localhost:33483

REQ Headers

User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept
application/json
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Host
localhost:33483
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

37 GET http://localhost:43371/sign_response?client_id=gematikTestPs&response_type=code&redirect_uri=http%3A%2F%2Ftest-ps.gematik.de%2Ferezept&state=dZoW3UkLDEDf3t0ymjuJk2ROyvo_K7aU&code_challenge=gxhfnvYcUkKfdCE89doGts5zzKuNGKtyXy-i0XvSNQU&code_challenge_method=S256&scope=openid+e-rezept&nonce=opAQH1KzHIH0pD65BLNItNDD19YSGQy4127.0.0.1:-1localhost:46681

REQ Headers

accept
application/json
accept-encoding
gzip
user-agent
IdP-Client
Empty body

38200localhost:33483127.0.0.1:-1

38200localhost:46681127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Date
Wed, 05 Jun 2024 13:46:56 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjMzNDgzIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJMeWFGT2xLUndLX292T2MwWkJaZkNJc05qYjRYQUNkWWFvMFh0RDFGb21RIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IkU0UDRVM2xQMWdMX3dWZUgzWlFpUk9uVlJKZTRQSERXIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJucVh3Rnd4VVlhQ1lPc2R4UnZCcHBQdjY3eVRwVEQtbyIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTcxNzU5NTM5NiwiaWF0IjoxNzE3NTk1MjE2LCJjb2RlX2NoYWxsZW5nZSI6ImZiQTBmdnhkTlUtejd0Yk4tZVluc2JvM1NKcHVCeldFN2F6QUlRc0NaNkEiLCJqdGkiOiI4N2ZmZjhhZjY0NjMxNjlkIn0.hFLhg7eertBuBCdsqZ112a98mYkLilc427qpDAkeBn9wfsS2ODypgE0OBMaLufoHESXzxnamIEa8QAe3m3oOGA",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Wed, 26 Jun 2024 08:27:51 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Date
Wed, 26 Jun 2024 08:27:51 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ2NjgxIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJsUHUzNFZSM2xPc3dwOHlYalhPOTc1b2VwWjNsWVBQanNsaUxEckVQb2E0IiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6Im9wQVFIMUt6SElIMHBENjVCTE5JdE5ERDE5WVNHUXk0IiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJkWm9XM1VrTERFRGYzdDB5bWp1SmsyUk95dm9fSzdhVSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTcxOTM5MDY1MSwiaWF0IjoxNzE5MzkwNDcxLCJjb2RlX2NoYWxsZW5nZSI6Imd4aGZudlljVWtLZmRDRTg5ZG9HdHM1enpLdU5HS3R5WHktaTBYdlNOUVUiLCJqdGkiOiJkMDlkZWI5ODQzZDMwOTQyIn0.OSkB4Y8glGxAWjzX1_3C44VF_QpRnhfb1I6FN2FomLNsC9LVNl3EvGopNDbCpfwS5i2566HejxL8iJ7Kc0bsjg",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
"user_consent" : { "requested_scopes" : { "e-rezept" : "Zugriff auf die E-Rezept-Funktionalität.", @@ -600,219 +593,211 @@ "family_name" : "Zustimmung zur Verarbeitung des Nachnamens" } } -}

body.challenge.content

JWT

Headers
{
+}

body.challenge.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "iss" : "http://localhost:33483",
+}

Body

{
+  "iss" : "http://localhost:46681",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "LyaFOlKRwK_ovOc0ZBZfCIsNjb4XACdYao0XtD1FomQ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "lPu34VR3lOswp8yXjXO975oepZ3lYPPjsliLDrEPoa4",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"token_type" : "challenge", - "nonce" : "E4P4U3lP1gL_wVeH3ZQiROnVRJe4PHDW",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "opAQH1KzHIH0pD65BLNItNDD19YSGQy4",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "gematikTestPs",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "nqXwFwxUYaCYOsdxRvBppPv67yTpTD-o",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "dZoW3UkLDEDf3t0ymjuJk2ROyvo_K7aU",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
"redirect_uri" : "http://test-ps.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "exp" : 1717595396,
Gültigkeit des Tokens
- "iat" : 1717595216,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "fbA0fvxdNU-z7tbN-eYnsbo3SJpuBzWE7azAIQsCZ6A",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "87fff8af6463169d"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key puk_idp_sig

39 POST http://localhost:46199/sign_response127.0.0.1:-1localhost:33483

REQ Headers

Content-Type
application/x-www-form-urlencoded
User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Content-Length
4013
Host
localhost:33483
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend

REQ Body

namevalue
signed_challenge

JWE

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

Headers
{
+signed_challenge=eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSIsImN0eSI6Ik5KV1QiLCJleHAiOjE3MTkzOTA2NTEsImVwayI6eyJrdHkiOiJFQyIsIngiOiJqN1lhWDhxZDZ0Y1NKbnItOHBNM1UyNGJtSmN6eVFEdllPOVFjT05FeTE0IiwieSI6Im9CVDZJa090ZkFYWUk2clJRbVBMYl9LblhUMnhWRDZqcjh4UzgtMXNrQm8iLCJjcnYiOiJCUC0yNTYifX0..C_76CG13dfa6npHy.vHop6W2ndFiMWaaSIC_7ncIRtfnQmBqrleRUHg3kH1K6ZFsIocVSlIDvFFYQQ4Bn7rmQXm5AhbkasALCrI0ODG9MEzxB88Ua22BAWv744_QRvNP5Lz5XpPrEuAwGG5_0KsaX7B_HK1IEqA-SH6DOK3LJSoKcJCYM8OVgf5taRne86yUlfsOuRNLlf83n9pf0YV9Ac_Cz6H33_qCOxrSU6LYyJnoulM0sxYiDEHXc1S6mXjw3xHJm6CP7KebsB_mBIJc3rqwr4fw5jiv6opX3302pPtqW_lO9HIQKhheOkudORfoHtQ9IQtuaB6nXxVvyll_R7_EG1u2csdjfP0zU1bvKSjeTodfsMy1AErZDGZDwWcOMyaXEo2wDwzw_nq7LUwWH8ZExZXosekuDVTQSzxAZk3Ko4XuXOE1KEFHxyRKv2ZwYaduV1mjCxL1CjKMGvOkP1euYjGf8WJTfs4zKwajtCw2i2yDtPJ5_f8qnsstIozoyS-Tiu1zOymbDBao46XpPRvFqXrfKkI4W7PTdjqVbTWKjLKlGnB2MWZLoRdvqF7cRjSqwvYimSUorEOwgvKGZAPSKKTcDn_vatpnoPzZ5n7PrbI86kx-PHD_-sl-KypoHoD-YEHWnfr_q39Ue5d5CmvQ95Hki9Zwg2Iv8n9Twr2SgJ8yLK8i1bhBSqQZYXFl6tohlzFHyt8vQoe3La9erDKmnhcjrZtXN0MkR7lr9xc7Ef17H1SYAjVNzpwTbipPqZnuzIgJQzB8fvTHvZxYkiyppYxARq-_TTQvYbYhE8_HF0xd5DWbh6uplDdBUE7pf_L3H0EBPUkm1tECdb9Ki6KHgwpITthqwyQtUr_A6K5eNCCwlmwujj5i0kvzLUeM-frWYmIYJ5YNobVEO-bPgDVv7q_gjvv48fWzDbjXbutql6NS3mYWltl9WsgUK2H75SfBOzS0i6o9vC56eLSaagOxEeJxi-5IUUd2UMpxpj6Wjdv7AXpjFT9hzBpsvXdBdCe5wlYPdE2CkD102oiHA_kVwF70IgkX19XAGmWKnZBazDEaAD1ByLsP7mCPDDwhp7HGXZbEm51Z2C2URJpDEs1IliPmAtCV4oEfaLb0b1sxVl8OT3ReCKLJVUSnzOlIOfhnXyyqb5J8ee2Cndt81mFmFh_nVv0FXBDkdZwNX0vUKk3_eZ6GW_Y7p-zn0loyMXxng8rPl_98VtYuH_hL93q51WVKByCOmUxULw45GItafDlP0m9LA4dtj5WfyNwO-IHLsZ7GkuOuZqQztw8Ei1M574aBzX7afoY9exN_GHBxHDlKVVQg1OgiePvA3NRwg4qaJ4U0Wt7I1vCMcI_Cxp2DRM7pRsxhLbvttLWY2VNJ99qzxIl2BmBNYdrdR64ST7EBi2P5q5YuH4vW4Oc1EiB_wb5bnrNUxkAdW9FvvTs5CGAjBEYySUrCdF4mfDjLpPV6BJkGqAYnwX-MvACAGcyqWcd480FnVtyjUF1KFYIfBtP9uYPli5y0W2-ENcQI4x5WS8uF-ccIgQUNEloDtt94Lqot2yC8Xhc7MFXGWRziW4bJqa-0O2uOmE_4x-ziXR3TO57q0Cz4l6TCg1zpB2K60y5itObAzC0jUki9gU_N-UGog0lXa_pZ-H4Vx7FsaB7WZRMqG9IuXyqS_fWNLGZX6VdhrG-56Qgy2P50UNQzBescv3BMaSfyi0xojq6hvhg60V_pK4M7bQdxy1WgJMs553APAFuwzhMWKuSLLNmoDQvGLUomMg_go31AWExno4annVkHM1gKm4ONyYobmwQ94npa9cMeh2yqUoFBDSa8Vjmi9548Hgk1tlQX1HIfPuQR-CMZmorX7cpfAbIGXRHoGix2_Se1egghfB2KpkpFQOjpYhnWmoI6ofz4jGnrSEt_9EpWtNK-IYa37fNT4YTN3n5xV8iv3bZInZULmzKqegtjammaG-p7B5ApyzoovtVAllhNG3xeAt6kQ13q6RQwnPcPzKg7QCSyHEWw5rfWMJqSahzT-AB2mniXweehC5HKMKJ_hLmti3QkIHFzA4j6g6D3MuEV92j8DLjdiM_kYcZ74fe1B9LTsreIwSD25NTUl2yFj35RkNAcQ_6mX804cTH-OVMmYmxbgW2pMup10DKCFH7nUfSM_sCJJEwM1UEIWZAlg4T-djJMEsr4RLwysvfXidUVxQSmLXSImHsvSaXGR-4WBiH3cSyq7SpZ_ZWR4tNPdvrPqu8ohq_TIQ1apSrA5ucrAXm9y2JXLhaf92HfEJ24jqTjFyyUc-RXJSR7mcdOVRV5EfIfz59mW1jlQediQkUgXK-jvB8b4EAgmL6aBMHWmD0nG8yzD0rQ6DhzGt5xyUoax7lRx6mITzdN7TH8eyqioyXKfqIwEWuSo5ZKFpuHzCyrbmAhY9_nDFR7TmcH28_Y1Xph9uciU1EfyBVNVPBEfLQ6HVERL71xPCRFh81Qgy0UIsWAaw34Zkbv0mdCOeDQxu3PzseoKuyzjZ_fuBJDxffEXnJqZyzDmljybk6OEoMxN66u8u6LSvAxklesyLFF_7D_4-qZT_u2CZUicykxYrJ2x5Jkn1OpjVzQ5f4lMr-LTZWcXtZNO-IThHMWg04Gt4Mjf28EJQx-s65dVOhPxmSISJcM9G6LV_8qDLlH4JcH6VoJh7xrzbpkq7CcBKO4QRxd7CHXjb5mUotXUEh4MpMhAcelpshDiv8mrMDFeLRzqVS9ix-DGQ9zL0VverbIDK_nCjiDu0TTk3Z7pBkFnxmSiFo45T-M2dFekUvf_hOOnI8-F19YG_HTTsGyBF4RDUMqK-H2MjyTuNfVYIyJwMwVZdQoRtcmdGWeGz1zE-T3W3UjxgSh9nJqE69eYqVupu63XCG2nyd3WeFcBP5eyTLeeyLbkfu3T10QP9m5CL44Q8hOOG1VAbRYUx85T-0G71pUhLvGHy8ngRFreioermPFhyzL0ZI52assEZMu0Qj6PCU_EdoP_2KzkxrR8JVdHoN03QBFfqUMoxSylzOihQYsUVzhHhlKysNQzNdU5bwEaktky45chamQ4lSi0mxRK4BG0OdR-nhSjDfFswT5whwSIG-SxTqj-lWGPhzbXydd9o0VAi9dSUNzbeORW2bB0EHW6uCsMgiG62fe2VWr95BfvBGTEdZGMKcUXeiS6lbJQtx43GNMU0l1W1MJ90e68UNyXg9O-RtVNajoZBnL8tqlnWVtzYW8JeJ4ecz20MGUNOToXM1uTPCJVD-t61tXiHYk-q1yjXr1eISo9lZfzCO-05mhTceVkhB1KbDtELIcfhlfTKp0qKHvjE1qd5HVfeYnER3JJWKWvltdkYkmb-PDFafrZr_YKG0cmrjrG7jAjVeZw7nhc0fjpC8xlZPanOqxPnuaiFKq6B9MxqkuwJ87J8LTk1hgoggHnXGVJa1ZKWRPVk6V7VigkYiE5TLFtmJ5yyPgpKrpJuva96WHrT2AJsUtWXQA-B3ZOOfa0Ja25wFHRdmN5qvIEvN9KQzwhWRa3Gat7FqILu4VbHWqOef7M8Gi6U4M1D6tQlIur_wadoLJ7AzOJe6DsQbzPfZeqPgijR2qDypDzkP4chtD9tUyF-i_lUcKgNslw5e02UThd965YUUjI6HsROQpfHfMsl91_P8S6m9h5QNTxhBq2fE_wLKSuMtXP6GacHUOYvu0bpfw._FkT6etdY-Vg73SymOzn0g

39 POST http://localhost:43371/sign_response127.0.0.1:-1localhost:46681

REQ Headers

accept-encoding
gzip
content-type
application/x-www-form-urlencoded
user-agent
IdP-Client
content-length
4013

REQ Body

namevalue
signed_challenge

JWE

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

Headers
{
   "alg" : "ECDH-ES",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595396,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
+ "exp" : 1719390651,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
"epk" : { "kty" : "EC", - "x" : "AqvCSumxlkIqgOIs3bEJze18Zn1FGGnHlqCY1uqC4uo",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "ACVvHqlP14gs_6uVf0GmGICbB5tpVQueWAB3TIWERUs",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "j7YaX8qd6tcSJnr-8pM3U24bmJczyQDvYO9QcONEy14",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "oBT6IkOtfAXYI6rRQmPLb_KnXT2xVD6jr8xS8-1skBo",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body

{
-  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURWekNDQXY2Z0F3SUJBZ0lIQUlvMS92bkxtREFLQmdncWhrak9QUVFEQWpDQmlURUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhPREEyQmdOVkJBc01MMGhsYVd4aVpYSjFabk5oZFhOM1pXbHpMVU5CSUdSbGNpQlVaV3hsYldGMGFXdHBibVp5WVhOMGNuVnJkSFZ5TVI4d0hRWURWUVFEREJaSFJVMHVTRUpCTFVOQk1UTWdWRVZUVkMxUFRreFpNQjRYRFRJd01EWXhNREF3TURBd01Gb1hEVEkxTURZd09USXpOVGsxT1Zvd2NERUxNQWtHQTFVRUJoTUNSRVV4WVRBTUJnTlZCQVFNQlU5MHc2MXpNQlFHQTFVRUtnd05SOE84Ym5Sb1pYSWdSM0poWmpBYkJnTlZCQVVURkRnd01qYzJPRGd6TVRFd01EQXdNVEk1TURnME1CNEdBMVVFQXd3WFI4TzhiblJvWlhJZ1QzVERyWE5VUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFVS84bVlMM3lsQS9USnNWSHhhYXhqaHpZUG9keGJxR2VqelhibHBaMzYrMEJ2TDZkLzlLSWVva3plc3JLRTBnNjZhTDBXK3Nwc3FwWFNUYVlQQnFMMDZPQ0FXWXdnZ0ZpTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdPSU1CMEdBMVVkRGdRV0JCU1kzMFRwZjBYY2pvdFdTOVBYVXY5RERENnBrVEE0QmdnckJnRUZCUWNCQVFRc01Db3dLQVlJS3dZQkJRVUhNQUdHSEdoMGRIQTZMeTlsYUdOaExtZGxiV0YwYVdzdVpHVXZiMk56Y0M4d0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3SUdDQ3NHQVFVRkJ3TUVNQzRHQTFVZElBUW5NQ1V3Q1FZSEtvSVVBRXdFU3pBTUJnb3JCZ0VFQVlMTk13RUJNQW9HQ0NxQ0ZBQk1CSUVSTUI4R0ExVWRJd1FZTUJhQUZBcjdETlhVazFROVpZQStlaUFDbFRTV2dCdkFNSGtHQlNza0NBTURCSEF3YnFRb01DWXhDekFKQmdOVkJBWVRBa1JGTVJjd0ZRWURWUVFLREE1blpXMWhkR2xySUVKbGNteHBiakJDTUVBd1BqQThNQTRNRE1PRWNucDBhVzR2UVhKNmREQUpCZ2NxZ2hRQVRBUWVFeDh4TFVoQ1FTMVVaWE4wYTJGeWRHVXRPRGd6TVRFd01EQXdNVEk1TURnME1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFT2xHd3VmRjJIWjJuWkF3Qm41cXJXeVNKMWpXSVNVcjBmZUFiZjBNNUxyQWlCRyt2T2lhR2wyYUZQd0Y5UXp4a0ZOZTAvb2QxdVEzbEdVL2sxVWtGdTFQdz09Il0sImFsZyI6IkJQMjU2UjEifQ.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pNek5EZ3pJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKTWVXRkdUMnhMVW5kTFgyOTJUMk13V2tKYVprTkpjMDVxWWpSWVFVTmtXV0Z2TUZoMFJERkdiMjFSSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklrVTBVRFJWTTJ4UU1XZE1YM2RXWlVneldsRnBVazl1VmxKS1pUUlFTRVJYSWl3aVkyeHBaVzUwWDJsa0lqb2laMlZ0WVhScGExUmxjM1JRY3lJc0luTmpiM0JsSWpvaVpTMXlaWHBsY0hRZ2IzQmxibWxrSWl3aWMzUmhkR1VpT2lKdWNWaDNSbmQ0VlZsaFExbFBjMlI0VW5aQ2NIQlFkalkzZVZSd1ZFUXRieUlzSW5KbFpHbHlaV04wWDNWeWFTSTZJbWgwZEhBNkx5OTBaWE4wTFhCekxtZGxiV0YwYVdzdVpHVXZaWEpsZW1Wd2RDSXNJbVY0Y0NJNk1UY3hOelU1TlRNNU5pd2lhV0YwSWpveE56RTNOVGsxTWpFMkxDSmpiMlJsWDJOb1lXeHNaVzVuWlNJNkltWmlRVEJtZG5oa1RsVXRlamQwWWs0dFpWbHVjMkp2TTFOS2NIVkNlbGRGTjJGNlFVbFJjME5hTmtFaUxDSnFkR2tpT2lJNE4yWm1aamhoWmpZME5qTXhOamxrSW4wLmhGTGhnN2VlcnRCdUJDZHNxWjExMmE5OG1Za0xpbGM0MjdxcERBa2VCbjl3ZnNTMk9EeXBnRTBPQk1hTHVmb0hFU1h6eG5hbUlFYThRQWUzbTNvT0dBIn0.V4sAfkHhDtPOIoDyAynQq4UXZK-cDYiv-4tFpjZiG8QHg93sTmixgHQ-7iwxWzjTA-whAhpb9-Y-rUuzAvmRyA"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURWekNDQXY2Z0F3SUJBZ0lIQUlvMS92bkxtREFLQmdncWhrak9QUVFEQWpDQmlURUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhPREEyQmdOVkJBc01MMGhsYVd4aVpYSjFabk5oZFhOM1pXbHpMVU5CSUdSbGNpQlVaV3hsYldGMGFXdHBibVp5WVhOMGNuVnJkSFZ5TVI4d0hRWURWUVFEREJaSFJVMHVTRUpCTFVOQk1UTWdWRVZUVkMxUFRreFpNQjRYRFRJd01EWXhNREF3TURBd01Gb1hEVEkxTURZd09USXpOVGsxT1Zvd2NERUxNQWtHQTFVRUJoTUNSRVV4WVRBTUJnTlZCQVFNQlU5MHc2MXpNQlFHQTFVRUtnd05SOE84Ym5Sb1pYSWdSM0poWmpBYkJnTlZCQVVURkRnd01qYzJPRGd6TVRFd01EQXdNVEk1TURnME1CNEdBMVVFQXd3WFI4TzhiblJvWlhJZ1QzVERyWE5VUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFVS84bVlMM3lsQS9USnNWSHhhYXhqaHpZUG9keGJxR2VqelhibHBaMzYrMEJ2TDZkLzlLSWVva3plc3JLRTBnNjZhTDBXK3Nwc3FwWFNUYVlQQnFMMDZPQ0FXWXdnZ0ZpTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdPSU1CMEdBMVVkRGdRV0JCU1kzMFRwZjBYY2pvdFdTOVBYVXY5RERENnBrVEE0QmdnckJnRUZCUWNCQVFRc01Db3dLQVlJS3dZQkJRVUhNQUdHSEdoMGRIQTZMeTlsYUdOaExtZGxiV0YwYVdzdVpHVXZiMk56Y0M4d0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3SUdDQ3NHQVFVRkJ3TUVNQzRHQTFVZElBUW5NQ1V3Q1FZSEtvSVVBRXdFU3pBTUJnb3JCZ0VFQVlMTk13RUJNQW9HQ0NxQ0ZBQk1CSUVSTUI4R0ExVWRJd1FZTUJhQUZBcjdETlhVazFROVpZQStlaUFDbFRTV2dCdkFNSGtHQlNza0NBTURCSEF3YnFRb01DWXhDekFKQmdOVkJBWVRBa1JGTVJjd0ZRWURWUVFLREE1blpXMWhkR2xySUVKbGNteHBiakJDTUVBd1BqQThNQTRNRE1PRWNucDBhVzR2UVhKNmREQUpCZ2NxZ2hRQVRBUWVFeDh4TFVoQ1FTMVVaWE4wYTJGeWRHVXRPRGd6TVRFd01EQXdNVEk1TURnME1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFT2xHd3VmRjJIWjJuWkF3Qm41cXJXeVNKMWpXSVNVcjBmZUFiZjBNNUxyQWlCRyt2T2lhR2wyYUZQd0Y5UXp4a0ZOZTAvb2QxdVEzbEdVL2sxVWtGdTFQdz09Il0sImFsZyI6IkJQMjU2UjEifQ.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pRMk5qZ3hJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKc1VIVXpORlpTTTJ4UGMzZHdPSGxZYWxoUE9UYzFiMlZ3V2pOc1dWQlFhbk5zYVV4RWNrVlFiMkUwSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNkltOXdRVkZJTVV0NlNFbElNSEJFTmpWQ1RFNUpkRTVFUkRFNVdWTkhVWGswSWl3aVkyeHBaVzUwWDJsa0lqb2laMlZ0WVhScGExUmxjM1JRY3lJc0luTmpiM0JsSWpvaWIzQmxibWxrSUdVdGNtVjZaWEIwSWl3aWMzUmhkR1VpT2lKa1dtOVhNMVZyVEVSRlJHWXpkREI1YldwMVNtc3lVazk1ZG05ZlN6ZGhWU0lzSW5KbFpHbHlaV04wWDNWeWFTSTZJbWgwZEhBNkx5OTBaWE4wTFhCekxtZGxiV0YwYVdzdVpHVXZaWEpsZW1Wd2RDSXNJbVY0Y0NJNk1UY3hPVE01TURZMU1Td2lhV0YwSWpveE56RTVNemt3TkRjeExDSmpiMlJsWDJOb1lXeHNaVzVuWlNJNkltZDRhR1p1ZGxsalZXdExabVJEUlRnNVpHOUhkSE0xZW5wTGRVNUhTM1I1V0hrdGFUQllkbE5PVVZVaUxDSnFkR2tpT2lKa01EbGtaV0k1T0RRelpETXdPVFF5SW4wLk9Ta0I0WThnbEd4QVdqelgxXzNDNDRWRl9RcFJuaGZiMUk2Rk4yRm9tTE5zQzlMVk5sM0V2R29wTkRiQ3Bmd1M1aTI1NjZIZWp4TDhpSjdLYzBic2pnIn0.WqPcQdXxsYd2r-HG4a45exOnuSM_eTnAFwGC5VJtWD5KaYmDnpJLIX9BAK6eoW09fZkxsQFhhgsof0LJYVDjow"
Ein verschachtelt enthaltenes JWT
+}

body.signed_challenge.body.njwt.content

JWT

Headers
{
   "typ" : "JWT",
   "cty" : "NJWT",
   "x5c" : [ "MIIDVzCCAv6gAwIBAgIHAIo1/vnLmDAKBggqhkjOPQQDAjCBiTELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxODA2BgNVBAsML0hlaWxiZXJ1ZnNhdXN3ZWlzLUNBIGRlciBUZWxlbWF0aWtpbmZyYXN0cnVrdHVyMR8wHQYDVQQDDBZHRU0uSEJBLUNBMTMgVEVTVC1PTkxZMB4XDTIwMDYxMDAwMDAwMFoXDTI1MDYwOTIzNTk1OVowcDELMAkGA1UEBhMCREUxYTAMBgNVBAQMBU90w61zMBQGA1UEKgwNR8O8bnRoZXIgR3JhZjAbBgNVBAUTFDgwMjc2ODgzMTEwMDAwMTI5MDg0MB4GA1UEAwwXR8O8bnRoZXIgT3TDrXNURVNULU9OTFkwWjAUBgcqhkjOPQIBBgkrJAMDAggBAQcDQgAEU/8mYL3ylA/TJsVHxaaxjhzYPodxbqGejzXblpZ36+0BvL6d/9KIeokzesrKE0g66aL0W+spsqpXSTaYPBqL06OCAWYwggFiMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgOIMB0GA1UdDgQWBBSY30Tpf0XcjotWS9PXUv9DDD6pkTA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUHMAGGHGh0dHA6Ly9laGNhLmdlbWF0aWsuZGUvb2NzcC8wHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMC4GA1UdIAQnMCUwCQYHKoIUAEwESzAMBgorBgEEAYLNMwEBMAoGCCqCFABMBIERMB8GA1UdIwQYMBaAFAr7DNXUk1Q9ZYA+eiAClTSWgBvAMHkGBSskCAMDBHAwbqQoMCYxCzAJBgNVBAYTAkRFMRcwFQYDVQQKDA5nZW1hdGlrIEJlcmxpbjBCMEAwPjA8MA4MDMOEcnp0aW4vQXJ6dDAJBgcqghQATAQeEx8xLUhCQS1UZXN0a2FydGUtODgzMTEwMDAwMTI5MDg0MAoGCCqGSM49BAMCA0cAMEQCIEOlGwufF2HZ2nZAwBn5qrWySJ1jWISUr0feAbf0M5LrAiBG+vOiaGl2aFPwF9QzxkFNe0/od1uQ3lGU/k1UkFu1Pw=="
Enthält das verwendete Signer-Zertifikat als Base64 ASN.1 DER-Encoding. Hier kommt ausnahmsweise NICHT URL-safes Base64-Encoding zum Einsatz!
], "alg" : "BP256R1" -}

body.signed_challenge.body.njwt.content.header.x5c.0.content

X509 Certificate

Subject: C=DE,SURNAME=Otís+GIVENNAME=Günther Graf+SERIALNUMBER=80276883110000129084+CN=Günther OtísTEST-ONLY

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Heilberufsausweis-CA der Telematikinfrastruktur,CN=GEM.HBA-CA13 TEST-ONLY

Serialnumber: 151964515683224

Valid From: 2020-06-10T00:00Z[UTC]

Valid Until: 2025-06-09T23:59:59Z[UTC]


Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjMzNDgzIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJMeWFGT2xLUndLX292T2MwWkJaZkNJc05qYjRYQUNkWWFvMFh0RDFGb21RIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IkU0UDRVM2xQMWdMX3dWZUgzWlFpUk9uVlJKZTRQSERXIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJucVh3Rnd4VVlhQ1lPc2R4UnZCcHBQdjY3eVRwVEQtbyIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTcxNzU5NTM5NiwiaWF0IjoxNzE3NTk1MjE2LCJjb2RlX2NoYWxsZW5nZSI6ImZiQTBmdnhkTlUtejd0Yk4tZVluc2JvM1NKcHVCeldFN2F6QUlRc0NaNkEiLCJqdGkiOiI4N2ZmZjhhZjY0NjMxNjlkIn0.hFLhg7eertBuBCdsqZ112a98mYkLilc427qpDAkeBn9wfsS2ODypgE0OBMaLufoHESXzxnamIEa8QAe3m3oOGA"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content.body.njwt.content

JWT

Headers
{
+}

body.signed_challenge.body.njwt.content.header.x5c.0.content

X509 Certificate

Subject: C=DE,SURNAME=Otís+GIVENNAME=Günther Graf+SERIALNUMBER=80276883110000129084+CN=Günther OtísTEST-ONLY

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Heilberufsausweis-CA der Telematikinfrastruktur,CN=GEM.HBA-CA13 TEST-ONLY

Serialnumber: 151964515683224

Valid From: 2020-06-10T00:00Z[UTC]

Valid Until: 2025-06-09T23:59:59Z[UTC]


Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ2NjgxIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJsUHUzNFZSM2xPc3dwOHlYalhPOTc1b2VwWjNsWVBQanNsaUxEckVQb2E0IiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6Im9wQVFIMUt6SElIMHBENjVCTE5JdE5ERDE5WVNHUXk0IiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJkWm9XM1VrTERFRGYzdDB5bWp1SmsyUk95dm9fSzdhVSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTcxOTM5MDY1MSwiaWF0IjoxNzE5MzkwNDcxLCJjb2RlX2NoYWxsZW5nZSI6Imd4aGZudlljVWtLZmRDRTg5ZG9HdHM1enpLdU5HS3R5WHktaTBYdlNOUVUiLCJqdGkiOiJkMDlkZWI5ODQzZDMwOTQyIn0.OSkB4Y8glGxAWjzX1_3C44VF_QpRnhfb1I6FN2FomLNsC9LVNl3EvGopNDbCpfwS5i2566HejxL8iJ7Kc0bsjg"
Ein verschachtelt enthaltenes JWT
+}

body.signed_challenge.body.njwt.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "iss" : "http://localhost:33483",
+}

Body

{
+  "iss" : "http://localhost:46681",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "LyaFOlKRwK_ovOc0ZBZfCIsNjb4XACdYao0XtD1FomQ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "lPu34VR3lOswp8yXjXO975oepZ3lYPPjsliLDrEPoa4",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"token_type" : "challenge", - "nonce" : "E4P4U3lP1gL_wVeH3ZQiROnVRJe4PHDW",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "opAQH1KzHIH0pD65BLNItNDD19YSGQy4",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "gematikTestPs",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "nqXwFwxUYaCYOsdxRvBppPv67yTpTD-o",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "dZoW3UkLDEDf3t0ymjuJk2ROyvo_K7aU",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
"redirect_uri" : "http://test-ps.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "exp" : 1717595396,
Gültigkeit des Tokens
- "iat" : 1717595216,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "fbA0fvxdNU-z7tbN-eYnsbo3SJpuBzWE7azAIQsCZ6A",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "87fff8af6463169d"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key x5c-header certificate

Encryption info

Was decrypted using Key prk_idp_enc

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key x5c-header certificate

Encryption info

Was decrypted using Key prk_idp_enc

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

40302localhost:33483127.0.0.1:-1

40302localhost:46681127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Content-Length
0
Date
Wed, 05 Jun 2024 13:46:57 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Location
http://test-ps.gematik.de/erezept?
Optional[code]=<Authorization Code in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
&state=nqXwFwxUYaCYOsdxRvBppPv67yTpTD-o
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Wed, 26 Jun 2024 08:27:53 GMT
+Location: http://test-ps.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDUzM30..V-g2dk8_MEFTtp5f.zSpzUNnRlY5oAYzjN0JdFj6RMjtH_wFwt1wrh2rcNfFwHzJwVKeEG1T9ntmLT8sgnUWd2U9L7uQjHSOUQ067IZnCOECrJPvuYzlgOCFks-sseMrzTNcz8HHstXDxQSgy6V3oAU85IlLaH2RIm5rx5Ix7thM9njG9LPOUmzRi2gt9PwmtF32wgCiNYs7TR8MF5KZdWUDT7hJ2sXb62edyxyPLyoiR2RYFmHKkO-WYWCKQm2w-bnb0XrTlq0vwxs42q7PVejiiOj0ojJA2-Qqovlkpw6DI9Xxn9k3cv9TDBmXNSdMwY1QneOz1smh_Uopd21_AAw6-XANCm9it3dbhX-pxUwvgHup430z5jwHd0k2ptePaRzPJ1HEN6KwF7qcXo93uxPEiEaY66abOBlpsNLKPvEX1Eyzn8ASf7lJ3_H0Rk_vgG8dtKg2Jxaj2fGW6lHibAEDx4jMx3D6zwhJboU-WHz4iFo__j2pK4eJxOmIy3CudRYnD_VwBRcY_yreYwD1RvOE81n15vOh3h_WeuvA5uZIRJE3NKXWJuFY45-LZQLciG1PzBzmzCv4FOiKWjLGCUogIismprZwdUqwUyZNJpQwiJmqctfw_CmSqOzzsMdKfMRfWhVbg4c-2k0C2MZbjXHYYfdN4mLOeFGCL0rhnl4eBr3gfyHnIssENfMnEzS0vxxXSpzrWJi8Tp9Ja9cSRicCk1-fKNL1n0PTGnWZG-Al51P8ErA2Z7_G4nyN6Z3Wbfxa83LNy7YpVZlNI6-pTIkOGug7vjXG4EluQkqQD28febHwX4Vy6l4mHyLVQaICk1w2-gDp8uGh1gykZBowx6CGInOQ_sIMMFYzsvsZyIs212QvkDhfrxuYJEPs0YbIRrQWf0ZtCY_Gsh1KOv2F2_wJPgnG5adhJOeg7nOFPQYbz5Ovk9nXuJgVNMur4FU3Yj0Xq3By2yVGFmLhtBo_w1XmeLdWsCcPL5-2Jt6ju2QfOlCDr1hRFpRoiFwoUrEpml5hfFQdEf6gEr95wJlxPsO-cNs78Io37lZXvUWB4czOWKyMnljS_61ZZk04Ryu-ZOpGxt4i-4ZdVhwO6ygDtFYA1faPZZQYv8-IfCsk3bDmC5yTbWBBcfIWGnOQrUj-rkP27Vkodqol8M4aRgri-h7wats0ZE2PQ6HedVjBEGN2K4WSwuDpVNdXEsTAFOpGmShV6ad_7GAu4E1S8iQMk2CzQEf_gkQ1-lR2iu4QcENW8fko9oi2GcMvCGwyzLEsJ0odG44tHuglRscxqBJSn1G10kbm7Kftr4SPdLuIuMF10RpFlyM_JtPu9BT9tTuJX8_xX0wmLG-fobU0r733bosrfZui3T7E0_Fh5ZSbu-j3HhrbX7MXkSFxXRoOExYlZ-BgzimjECQ.9PB4c3xfqUfxsQseuujzdQ&state=dZoW3UkLDEDf3t0ymjuJk2ROyvo_K7aU

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Content-Length
0
Date
Wed, 26 Jun 2024 08:27:53 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Location
http://test-ps.gematik.de/erezept?
Optional[code]=<Authorization Code in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
&state=dZoW3UkLDEDf3t0ymjuJk2ROyvo_K7aU
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595277
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozMzQ4MyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoia3h2R25JcHRMaExJdXhaTEUxOEEwM3NGSDFlcEt0cnUiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiRTRQNFUzbFAxZ0xfd1ZlSDNaUWlST25WUkplNFBIRFciLCJjbGllbnRfaWQiOiJnZW1hdGlrVGVzdFBzIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTc1OTUyMTcsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoibnFYd0Z3eFVZYUNZT3NkeFJ2QnBwUHY2N3lUcFRELW8iLCJleHAiOjE3MTc1OTUyNzcsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MTc1OTUyMTcsImNvZGVfY2hhbGxlbmdlIjoiZmJBMGZ2eGROVS16N3RiTi1lWW5zYm8zU0pwdUJ6V0U3YXpBSVFzQ1o2QSIsImp0aSI6IjFmMTc4NzhjZmVjOWU0NDYifQ.Z8xXBXj2gmOSfDo5ONQ24nkSpp8FP73W7wkkLs1dwFIy8K0EVRg2DIxWsffFA7qP-qtPSC9aXjQqHEC-FXfoFA"
Ein verschachtelt enthaltenes JWT
-}

header.Location.code.value.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390533
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NjY4MSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiVzRsbmZ3SzRMR2ltY3pQbXk4b0FqTEpZbTBKOFUzYUYiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoib3BBUUgxS3pISUgwcEQ2NUJMTkl0TkREMTlZU0dReTQiLCJjbGllbnRfaWQiOiJnZW1hdGlrVGVzdFBzIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MTkzOTA0NzMsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiZFpvVzNVa0xERURmM3QweW1qdUprMlJPeXZvX0s3YVUiLCJleHAiOjE3MTkzOTA1MzMsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MTkzOTA0NzMsImNvZGVfY2hhbGxlbmdlIjoiZ3hoZm52WWNVa0tmZENFODlkb0d0czV6ekt1TkdLdHlYeS1pMFh2U05RVSIsImp0aSI6IjkzOGQzNzFkODc3NGE4N2YifQ.SVFxc3BmOh6AWbPNn_maDqY4OEXCNIXGzNHwIbc5NMYMZ-UyWugbLmdRJAfcgkdwNqJSO6wWCk-mUNDm4s9rJw"
Ein verschachtelt enthaltenes JWT
+}

header.Location.code.value.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : null,
   "professionOID" : "1.2.276.0.76.4.30",
   "idNummer" : "1-HBA-Testkarte-883110000129084",
   "amr" : [ "mfa", "sc", "pin" ],
-  "iss" : "http://localhost:33483",
+  "iss" : "http://localhost:46681",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "kxvGnIptLhLIuxZLE18A03sFH1epKtru",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "W4lnfwK4LGimczPmy8oAjLJYm0J8U3aF",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"given_name" : "Günther Graf", "token_type" : "code", - "nonce" : "E4P4U3lP1gL_wVeH3ZQiROnVRJe4PHDW",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "opAQH1KzHIH0pD65BLNItNDD19YSGQy4",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "gematikTestPs",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595217,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390473,
Timestamp der Authentisierung
"redirect_uri" : "http://test-ps.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "state" : "nqXwFwxUYaCYOsdxRvBppPv67yTpTD-o",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1717595277,
Gültigkeit des Tokens
+ "state" : "dZoW3UkLDEDf3t0ymjuJk2ROyvo_K7aU",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1719390533,
Gültigkeit des Tokens
"family_name" : "Otís", - "iat" : 1717595217,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "fbA0fvxdNU-z7tbN-eYnsbo3SJpuBzWE7azAIQsCZ6A",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "1f17878cfec9e446"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Empty body

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Empty body

41 POST http://localhost:46199/token127.0.0.1:-1localhost:33483

REQ Headers

Content-Type
application/x-www-form-urlencoded
User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept
application/json
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Content-Length
2095
Host
localhost:33483
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend

REQ Body

namevalue
client_id
gematikTestPs
Die client_id des Clients. Wird bei der Registrierung vergeben.
Die client_id des Clients. Wird bei der Registrierung vergeben.
code

JWE

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde

Headers
{
+client_id=gematikTestPs&code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDUzM30..V-g2dk8_MEFTtp5f.zSpzUNnRlY5oAYzjN0JdFj6RMjtH_wFwt1wrh2rcNfFwHzJwVKeEG1T9ntmLT8sgnUWd2U9L7uQjHSOUQ067IZnCOECrJPvuYzlgOCFks-sseMrzTNcz8HHstXDxQSgy6V3oAU85IlLaH2RIm5rx5Ix7thM9njG9LPOUmzRi2gt9PwmtF32wgCiNYs7TR8MF5KZdWUDT7hJ2sXb62edyxyPLyoiR2RYFmHKkO-WYWCKQm2w-bnb0XrTlq0vwxs42q7PVejiiOj0ojJA2-Qqovlkpw6DI9Xxn9k3cv9TDBmXNSdMwY1QneOz1smh_Uopd21_AAw6-XANCm9it3dbhX-pxUwvgHup430z5jwHd0k2ptePaRzPJ1HEN6KwF7qcXo93uxPEiEaY66abOBlpsNLKPvEX1Eyzn8ASf7lJ3_H0Rk_vgG8dtKg2Jxaj2fGW6lHibAEDx4jMx3D6zwhJboU-WHz4iFo__j2pK4eJxOmIy3CudRYnD_VwBRcY_yreYwD1RvOE81n15vOh3h_WeuvA5uZIRJE3NKXWJuFY45-LZQLciG1PzBzmzCv4FOiKWjLGCUogIismprZwdUqwUyZNJpQwiJmqctfw_CmSqOzzsMdKfMRfWhVbg4c-2k0C2MZbjXHYYfdN4mLOeFGCL0rhnl4eBr3gfyHnIssENfMnEzS0vxxXSpzrWJi8Tp9Ja9cSRicCk1-fKNL1n0PTGnWZG-Al51P8ErA2Z7_G4nyN6Z3Wbfxa83LNy7YpVZlNI6-pTIkOGug7vjXG4EluQkqQD28febHwX4Vy6l4mHyLVQaICk1w2-gDp8uGh1gykZBowx6CGInOQ_sIMMFYzsvsZyIs212QvkDhfrxuYJEPs0YbIRrQWf0ZtCY_Gsh1KOv2F2_wJPgnG5adhJOeg7nOFPQYbz5Ovk9nXuJgVNMur4FU3Yj0Xq3By2yVGFmLhtBo_w1XmeLdWsCcPL5-2Jt6ju2QfOlCDr1hRFpRoiFwoUrEpml5hfFQdEf6gEr95wJlxPsO-cNs78Io37lZXvUWB4czOWKyMnljS_61ZZk04Ryu-ZOpGxt4i-4ZdVhwO6ygDtFYA1faPZZQYv8-IfCsk3bDmC5yTbWBBcfIWGnOQrUj-rkP27Vkodqol8M4aRgri-h7wats0ZE2PQ6HedVjBEGN2K4WSwuDpVNdXEsTAFOpGmShV6ad_7GAu4E1S8iQMk2CzQEf_gkQ1-lR2iu4QcENW8fko9oi2GcMvCGwyzLEsJ0odG44tHuglRscxqBJSn1G10kbm7Kftr4SPdLuIuMF10RpFlyM_JtPu9BT9tTuJX8_xX0wmLG-fobU0r733bosrfZui3T7E0_Fh5ZSbu-j3HhrbX7MXkSFxXRoOExYlZ-BgzimjECQ.9PB4c3xfqUfxsQseuujzdQ&grant_type=authorization_code&key_verifier=eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSIsImN0eSI6IkpTT04iLCJlcGsiOnsia3R5IjoiRUMiLCJ4IjoiQ0t5WG9wNnJlWHI0ajFMeTB1eE8tNG1iUGpDbnlMTl9Na3NBUm1sb0FldyIsInkiOiJwYmc1Vm5kNDIxdmwyYUhQUWtWTmxPTFctZmJ1RlFPeF92aG55UGZaSXRJIiwiY3J2IjoiQlAtMjU2In19..aeGl9ubdnc3wG9-2.7eyzo-tCnUKK3TIUUais0m69a9kTO4ihzGpShkQE3CPrR2dd2W1xkY1gPDzo8AoCyVwwKkc9XSp00nqkPywyGaFfAfUCaxrISF9PMhe0HEIfKINfh1zofvO8l50VjTUuE_VSvAzmDjluG_uQALJylvWSZogFonDwPA.Ot2T2kv1MZD_D2CvZWJjgw&redirect_uri=http%3A%2F%2Ftest-ps.gematik.de%2Ferezept

41 POST http://localhost:43371/token127.0.0.1:-1localhost:46681

REQ Headers

accept
application/json
accept-encoding
gzip
content-type
application/x-www-form-urlencoded
user-agent
IdP-Client
content-length
2095

REQ Body

namevalue
client_id
gematikTestPs
Die client_id des Clients. Wird bei der Registrierung vergeben.
Die client_id des Clients. Wird bei der Registrierung vergeben.
code

JWE

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595277
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozMzQ4MyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoia3h2R25JcHRMaExJdXhaTEUxOEEwM3NGSDFlcEt0cnUiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiRTRQNFUzbFAxZ0xfd1ZlSDNaUWlST25WUkplNFBIRFciLCJjbGllbnRfaWQiOiJnZW1hdGlrVGVzdFBzIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTc1OTUyMTcsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoibnFYd0Z3eFVZYUNZT3NkeFJ2QnBwUHY2N3lUcFRELW8iLCJleHAiOjE3MTc1OTUyNzcsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MTc1OTUyMTcsImNvZGVfY2hhbGxlbmdlIjoiZmJBMGZ2eGROVS16N3RiTi1lWW5zYm8zU0pwdUJ6V0U3YXpBSVFzQ1o2QSIsImp0aSI6IjFmMTc4NzhjZmVjOWU0NDYifQ.Z8xXBXj2gmOSfDo5ONQ24nkSpp8FP73W7wkkLs1dwFIy8K0EVRg2DIxWsffFA7qP-qtPSC9aXjQqHEC-FXfoFA"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390533
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NjY4MSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiVzRsbmZ3SzRMR2ltY3pQbXk4b0FqTEpZbTBKOFUzYUYiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoib3BBUUgxS3pISUgwcEQ2NUJMTkl0TkREMTlZU0dReTQiLCJjbGllbnRfaWQiOiJnZW1hdGlrVGVzdFBzIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MTkzOTA0NzMsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiZFpvVzNVa0xERURmM3QweW1qdUprMlJPeXZvX0s3YVUiLCJleHAiOjE3MTkzOTA1MzMsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MTkzOTA0NzMsImNvZGVfY2hhbGxlbmdlIjoiZ3hoZm52WWNVa0tmZENFODlkb0d0czV6ekt1TkdLdHlYeS1pMFh2U05RVSIsImp0aSI6IjkzOGQzNzFkODc3NGE4N2YifQ.SVFxc3BmOh6AWbPNn_maDqY4OEXCNIXGzNHwIbc5NMYMZ-UyWugbLmdRJAfcgkdwNqJSO6wWCk-mUNDm4s9rJw"
Ein verschachtelt enthaltenes JWT
+}

body.code.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : null,
   "professionOID" : "1.2.276.0.76.4.30",
   "idNummer" : "1-HBA-Testkarte-883110000129084",
   "amr" : [ "mfa", "sc", "pin" ],
-  "iss" : "http://localhost:33483",
+  "iss" : "http://localhost:46681",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "kxvGnIptLhLIuxZLE18A03sFH1epKtru",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "W4lnfwK4LGimczPmy8oAjLJYm0J8U3aF",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"given_name" : "Günther Graf", "token_type" : "code", - "nonce" : "E4P4U3lP1gL_wVeH3ZQiROnVRJe4PHDW",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "opAQH1KzHIH0pD65BLNItNDD19YSGQy4",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "gematikTestPs",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595217,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390473,
Timestamp der Authentisierung
"redirect_uri" : "http://test-ps.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "state" : "nqXwFwxUYaCYOsdxRvBppPv67yTpTD-o",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1717595277,
Gültigkeit des Tokens
+ "state" : "dZoW3UkLDEDf3t0ymjuJk2ROyvo_K7aU",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1719390533,
Gültigkeit des Tokens
"family_name" : "Otís", - "iat" : 1717595217,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "fbA0fvxdNU-z7tbN-eYnsbo3SJpuBzWE7azAIQsCZ6A",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "1f17878cfec9e446"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
grant_type
authorization_code
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
key_verifier

JWE

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.

Headers
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
{
+  "iat" : 1719390473,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "gxhfnvYcUkKfdCE89doGts5zzKuNGKtyXy-i0XvSNQU",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "938d371d8774a87f"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
+}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
grant_type
authorization_code
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
key_verifier

JWE

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.

Headers
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
{
   
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
"alg" : "ECDH-ES", "enc" : "A256GCM", "cty" : "JSON", "epk" : { "kty" : "EC", - "x" : "GgGKZFNCC1v9IBd-7C63IpD5qTGqTfKEu-JgSbtLJ1E",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "KXo5Bgx6cJfUK_hq6DC6tlVhQZgwNK19hmD6wFYjgQI",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "CKyXop6reXr4j1Ly0uxO-4mbPjCnyLN_MksARmloAew",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "pbg5Vnd421vl2aHPQkVNlOLW-fbuFQOx_vhnyPfZItI",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).

{
+}

Body
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).

{
   
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).
- "token_key" : "QhuA5-4SfhBFc-_fV2OcSvWxOcn6d1J-ZCUXdVt1M2Y", - "code_verifier" : "nOu1botqlfIMM1wRs8aSqCX_onP_ihZvzPeAzvIuO1c" -}

Encryption info

Was decrypted using Key prk_idp_enc

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.
redirect_uri
http%3A%2F%2Ftest-ps.gematik.de%2Ferezept
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.

Encryption info

Was decrypted using Key prk_idp_enc

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.
redirect_uri
http%3A%2F%2Ftest-ps.gematik.de%2Ferezept
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.

42200localhost:33483127.0.0.1:-1

42200localhost:46681127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Date
Wed, 05 Jun 2024 13:47:02 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Wed, 26 Jun 2024 08:27:57 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Date
Wed, 26 Jun 2024 08:27:57 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxNzU5NTUyMn0..LP5EXY5kt2v3LEPv.1M88m6anLJFtU2mSOK5oPYhTsLR8H8oxeuwyMZlweCM1l6Bq_CW24gRSsoxVefEa4YpE8_kKRQsHRMlwC601daSzlfgE1dl3BYrKxo-FVnbcp1frApdHn1BAVDGtJ0b_5H4MO9GwVZvMdItrnAUO7Z3CGCEj4ap0UB50PanifiBTMtASNXutquUL7nx_T2YWmoZsjkE1hpsM0pvdfwr4ZU0A0aHa2OcNW-znHBAp3H6rAaREurUoIIbJ9FhdBSYEibeCVtOMtWKC0ymCbdK5kN8m0HqWVmECqr7jECYWvOeXek3rlAI7b0BkWNLAUUKec4D6B-u4pyGVGljISH87CKeH1ymZ5iJNQsw6a_FgyR0C4bl5reIw2J4fM2CmaoEgHQ_ty7OUYtdwWOU12DyznVIxcDdEE5DtanzuqAiHoy15qT_VmjtIaSgAQwZVn3qvzxRmR8whm3XsGjSKjXooRhFwCvdrkJvfka9qVXuqZje3glkMKY9rki6qBGVVTSszE_31scxyI4XY-GEgt4anJz71O4OfJj0IehLmgwK_J3cYS4sN-ohghDAz6UDz9rwNMeq-Yc8cUkZopWgpHUFfjEWJ5WC1zNOsjjadLllWDoQoa0KT-JljEhYtR2wHXDzBJKUq0QM-XeWo6gA4QV4LVzebEKLSxnqHOh_0mRkL4qjqn_kAsZDXWjuowJko-zSeiKMe6oghRu8qu0gr2mc2akerAfL27jeFY4-lZznuyhhJJSzWeq-Y2FS2ns7mpPbPRWSTcwDXcIHYKpJW_HOL4i6m-ts7xKCEgQdW1b_HWKDRTzHFO3brFKc2jySM5Zlspd0eL4tO9eDl1cJPI2aNNIWS9hUckiTvoRmj8OAq0zZ0BbcWJU0tqTdAJyOQorynn4tWAaxN1ukLVOjkw0t_p-bq2on0Vjs-gUNDEwwuF4z2jNi-bKQk0dX8gVOZdr3uduN5jYl5_eQkkwWVCpQztdrB6O0q_pdMf5rFvegDQucAIbyR54ys-cOXYZj32VlbYnNO3BQJvQGbqIqYmpGRQ8m8rI4rFoLD-cmTxwr5RcQg3s-zfi0Jsori8eWFGTR4cuDnylV73C24kj2F5nMlIR2rSmTUMlo-qCRpvfKjpKHCaNxwgm2pUfHZaS2--rAEGZaW92CBrIBqgv7Aayl93-8tlj23ZXk7Y5Qh6iMJZs89j4w.JAP5uqIPeiR9s_E-czXE2A",
Das verschlüsselte ID-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
- "access_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxNzU5NTUyMn0..onzq9eIasNz0TF4A.sniUWp3ZZFFoqQIVPsXQLvKvd25ZHxQ8ePKTTp1o1xqryf4Fl2M9wXZhwi06LCwZxqaYqSU0Igu0jebu-fn-AkJhODcpmu0eTnOa0S6FPmIKQcr0ziIQh86L9S_LjrUQNfFmKcAQCRpIW883N2hu-L08YSOpAv8CHag852VqFW9-FSx5VeB-NM6u6RS2iXhwrITW2vLZPf4pY_FixX759S-UovfSZpPsa958pOwOtBvct-_3gBItJ9FZ0j8IssviZU9GcyCffJ-F2snlvCa3_ThJG1s37Ph6mOPg2OhWmvRT5cR8OWiPLtELoARnyvMs741V59C2Tl_kicXZ8C5lo4AE8K5L_4YEuwHm02XFZNoq-WsI3QCkM-FnJykzyORr2OpiuOm5FuB7VNZQU_eKioVmh9jlcjLEw44mC5bVgqTH47eein9-jthwuvIAiAKl8XBzKT4Q0wtWwKRV9gMKlKmY2XuWQbDFpH2f5U6QCon4ds5VAcTgXzMOHQ--Jud5wgf8zzrnTq5VvdYHbPCuE0W4P2MW1ogMCsxdKULp4e8ZGIZdMd3BabsiOYXzkpQEjM6h6tNJEnFAC8M5NcpWZW09qvWA-Uqx_v8nZmm8NaMSqCtgB2Mcjed58rFllTKOpjC04Z-Ivlu87pdLuD4rQbAMqGbMZGjlKPVbKUhoIMryxnkO4amIzDiT7H1hMnnW_FN9bwECJ9DTc3KQVRBZ5IuFSPS8dXy0cxSlMY8zo3OWedF1cZlgqKrEecc3kRciYIEFBlYWHy4ViIXNOuFLPVWXfkiZOM2zn4SwKeZNOg1wJorUvIC0mlAXVVvk8Kdezg3qt2dluvqGMMixc3NVVOrA_4XZquTedKsMsqB59ibgaKtgouJeRLtT3F0yDX7Aeex4DG7wlU3ZmsjqPUDDdoOZHjTjWdaB7BGwSVzO0qS59I9A60AakEi3l5leO6tGHa0THF2b_uUZngSGxlb-Mayt3gR_5CQHvLI1u8RGpsMqUhy26J1pThl1zcIz91ViWLs09orGcEbZ7xiv52fQZ822zF6w00PQmbir_kQtLysPa7U_NE0f5BSfCOzb1wD_geMJTBC3QGN2xAd427kg8uaaVuIS1Gt9A_8ayge8yJqO-4IsHZu1Ya_1dtWj_I5ykQTkXv-VYEVMwZJHtrl_kPWw43UY84qHEcQwUyjEmsiR3PG5YWqbeVWaHldll08ejkNg-1vPYVIc6AQ.ORMzpRsdVy1vgpUpIWGPNg"
Das verschlüsselte Access-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
-}

body.id_token.content

JWE

Headers
{
+  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDc3N30..GSpQCQyLPvB02z4I.JBtx7q-ft-QkTTgCfqZUiSSYtTmV_nPqj83FgSjXo_blsxuBdgbSI4qMgsWP61zHd_5xV1eKHycD2qLK52qiGflGRPK87J1f8u368dQuSM2b188OpXuG-61XkXO-k6LiRmL9DxF5OU_hots5HObamNpFpBSr33jn0smKzlA-eCEqqu9LYEtZcBxPM2fFbGFBn1nkBAME7VxoLSqw7HzzfFd8BOq3voVPusMu0Imnq-OcG5P2CWvdSkvWS53zhsmmAPPhFeq1L7BWQY8gWXwRXq1ddudOcgU2LYDbKkzDqyuKyibP9XbzDc1AeEWqLYcoXy4_aJmDt7eXI_1EIYXe5aA0cvPajZvZ4wf8_ECbbhU0ZMjuhlSKnJH1cXT4zp_G9V3uL6YymXBYsfJ3INWEZOx0bafUmvXZ78y1_w1sweEiyRV4Ez4hACLK3DheFBokLIwkczIw_H9PRYPXhs8HRVOeGLS0lUA5nLJLz60W4E5ZTo-LkBLgrixC6bOv4hgDFxPJaBf6TUAk9HhiBmTT_9CvNWCbSvBPSRbKP7TGEqy0PWPsIGmKl16DAZBRfHJOD8d6GPJyNwzeNZ0q0Fu5ahY5aFRsRWMHwQvrfhd0z1v2gcPQLhRC5oQDCskGHMiMUdYtHxtMfvBWGFezope3NlADYQTOgdoaPggCKuzIs2MuT6-PC3izfH1TLbLpDEP7xWJTU3EMuv_cKr3P8TYiOZ3AyXJtAqf5vbJ6_O8MdeMLCPxImZnV8Iosu1Twk95kilJwiigLmutZ-P-4cJNnMCtickFXXr_3cZxhZaKFIqPjcZXiUApNtQAHgLKLbCvi2pVLpLXLUyLYioELbh1JxFdv9DDGtVQfQRktQ2n8L4nr_vyO267792DA9nIghyITzoKYYKfsyYlyYXokLSeOMh-hERcVy93sEZVbV0zMtJXZyCCGz_Eas2ypxdc5Z2B8L5xzOL2KHdQiuD9J7peRAX0pFRjry0pSWHnnUKB82rf1YcK33g0uLpr6iNU3_xHqNuhdPpTdGkmWAyWNMUFkqxcFu2LQOLleLk-Zw_bwiq3FmbELuE-O3dJkAB1cqCNh_0lCd7OcjJdics3hRDrmVhpg2S90OIeVWM3Z_BOqnWFaUZAea5-GSWFnRJgaLavyBDVpPfejuvUY1FMcuWVc7Oh1n9OPFTAtk8moFf6rZHgp7oU.8zJPwvtxAF49KNHxXGEA8g",
Das verschlüsselte ID-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
+ "access_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDc3N30..CjVQqhWptvJmOJv4.LdFv0tx9T5E6Speg66SMtF0mlZJ66X7jA0iU-2KBXWDkkC23LO6AVXjTpciQNg_HIZqBHMxrWdlTzb6dmoAftStBpXkMA8P-vkAaFyYzO0IVe0X6Uillq5aXRYUFPlO9MOoUsrHThQ4VldVD-z89uEzJ328w6O2kTwALIDcybBVFKlo5Z3vu0hAyHGQuT-FDQcnyjynA4jIpvBktXyf3r3XPj8DMTxaE0Aixiew-1Rp1hLiB4Z9xp3Jz4alQZhWrhQ2Dz2E7HenPAPogsGF8xfvCIaVOg78x9K6ER407yrcOxdMOLUuxbLkEMXeTFa9C8Js7GmP2VZ8I5T6LpkNQNwsKAjEbZwwK3PpkylU0WU4wCbz4fSvVy-TzLtBlPJB9_b84MCCJZx1o33Uv2li7yKl8PD2EldEFyYKiMUCGk2lD7wMJY3Z1JhV9c1kxjcF241J2kErY_OVlwKQNfoTE0swbImB68MDswzvKa49NmPxCAAKJaC_8ViGZfpsSiv2tL3ENUOZhmjV8Tz7zho886tmY-aGnEi4dtujYd65ZdgJDzXZwMfCFT1t_qjVJck4AeR6a6qq3IcJs6y3qtfPflZ77W9vnL8pJceFPi7TPIA3gUPdBYkDvZjLVlmt1TGS9HivHKDA7PFGI7TmhYENKEIX-fy-Vta16K_GxIevuvvtL-EPUtJAfQ1jBV-c1KsB1qANWLsaGLfDWCp_OWbVJB8TJW9eeCqiEdFHd2Gb6LO2OYFVDCVkLB6cKJZPKDc8ySmVeg5PR_RzHf9u5l2XzI9HshBPJwACs0TRhr8iS-yb4M0PTA_VKRLOrGdMgL1-b-_YR1sIk3b3Auyrv5J3gTWmSsWvdqPZD15PiJi6WZZMVfcvGGP4aEysyhKwUCoh0kpVIOhCYths5i4tCQ_d8qwj8yoQiHqWpZSQvBDHXW6w12T1l6bL16FT7Or9NEgZIcjjb_-dw00BgHiOe5JizwasNhPj1W7BMzZ6NKgReuxv91sx70c39gxA-p9TcQ3QEGDZmZm-M8G4cYvE4yQK8vShE5Gzihmdpc_PRuaKS185paFJvT1Pw-MgChU8ZQsnfipDndY8t--JSytuui5Di4rqLHHUlINUzdbDjvFTrxaxVuV8ATvkFXekglvFzvRGNQ_8x3ijRYbc-j14IIp8Stwdt0ju-8GctArIzF_Xv7CMtOseqcWOk3a4TPbv8CIE3JPQZglj2ACATv0k.x9MQmUJbFlBiwF13RHU9WA"
Das verschlüsselte Access-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
+}

body.id_token.content

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595522
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoialpxdXh1anJEd0Vidmx5NC1UUm9fZyIsInN1YiI6InhtTnlFdDBxR3pTT3M4Q0dORXRDUkNaa1ctbW5kdnVxV2hFWDdmU1FOODAiLCJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJkaXNwbGF5X25hbWUiOiJHw7xudGhlciBHcmFmIE90w61zIiwibm9uY2UiOiJFNFA0VTNsUDFnTF93VmVIM1pRaVJPblZSSmU0UEhEVyIsImF1ZCI6ImdlbWF0aWtUZXN0UHMiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhenAiOiJnZW1hdGlrVGVzdFBzIiwiYXV0aF90aW1lIjoxNzE3NTk1MjE3LCJleHAiOjE3MTc1OTU1MjIsImlhdCI6MTcxNzU5NTIyMiwiZmFtaWx5X25hbWUiOiJPdMOtcyIsImp0aSI6Ijg0MmFlZmYwNjQxMDgwMTcifQ.IukjrDzfJex_iaAESdmBPkVq4kJHqoN_dz-vIb8bljt7-huJa0_AcrX5C7cxzqLY2sDlMsIhw2QdWDMQ5sJd3Q"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390777
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiYW1TNV9scXYxUUhqVkJGUkl5ekRRQSIsInN1YiI6InhtTnlFdDBxR3pTT3M4Q0dORXRDUkNaa1ctbW5kdnVxV2hFWDdmU1FOODAiLCJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJkaXNwbGF5X25hbWUiOiJHw7xudGhlciBHcmFmIE90w61zIiwibm9uY2UiOiJvcEFRSDFLekhJSDBwRDY1QkxOSXROREQxOVlTR1F5NCIsImF1ZCI6ImdlbWF0aWtUZXN0UHMiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhenAiOiJnZW1hdGlrVGVzdFBzIiwiYXV0aF90aW1lIjoxNzE5MzkwNDczLCJleHAiOjE3MTkzOTA3NzcsImlhdCI6MTcxOTM5MDQ3NywiZmFtaWx5X25hbWUiOiJPdMOtcyIsImp0aSI6IjU1MjQxNzkwNGEwNmJiMzcifQ.J3LgSxuJG9RkZvFlOLBWaL7_M2Aj0ovMKAYamVF-hSkjg6aflQvH9o7qkQ1C4u7jkjNdRcWd-cZJEnuxT_pp5g"
Ein verschachtelt enthaltenes JWT
+}

body.id_token.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "at_hash" : "jZquxujrDwEbvly4-TRo_g",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
+}

Body

{
+  "at_hash" : "amS5_lqv1QHjVBFRIyzDQA",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
"sub" : "xmNyEt0qGzSOs8CGNEtCRCZkW-mndvuqWhEX7fSQN80",
subject. Base64(sha256(audClaim + idNummerClaim + serverSubjectSalt))
"organizationName" : null, "professionOID" : "1.2.276.0.76.4.30", @@ -821,27 +806,27 @@ "iss" : "https://idp.dev.gematik.solutions", "given_name" : "Günther Graf", "display_name" : "Günther Graf Otís", - "nonce" : "E4P4U3lP1gL_wVeH3ZQiROnVRJe4PHDW",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "opAQH1KzHIH0pD65BLNItNDD19YSGQy4",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"aud" : "gematikTestPs", "acr" : "gematik-ehealth-loa-high", "azp" : "gematikTestPs", - "auth_time" : 1717595217,
Timestamp der Authentisierung
- "exp" : 1717595522,
Gültigkeit des Tokens
- "iat" : 1717595222,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1719390473,
Timestamp der Authentisierung
+ "exp" : 1719390777,
Gültigkeit des Tokens
+ "iat" : 1719390477,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Otís", - "jti" : "842aeff064108017"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

body.access_token.content

JWE

Headers
{
+  "jti" : "552417904a06bb37"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
+}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

body.access_token.content

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595522
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJ4bU55RXQwcUd6U09zOENHTkV0Q1JDWmtXLW1uZHZ1cVdoRVg3ZlNRTjgwIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjMwIiwib3JnYW5pemF0aW9uTmFtZSI6bnVsbCwiaWROdW1tZXIiOiIxLUhCQS1UZXN0a2FydGUtODgzMTEwMDAwMTI5MDg0IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJHw7xudGhlciBHcmFmIiwiZGlzcGxheV9uYW1lIjoiR8O8bnRoZXIgR3JhZiBPdMOtcyIsImNsaWVudF9pZCI6ImdlbWF0aWtUZXN0UHMiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhdWQiOiJodHRwczovL2VycC10ZXN0LnplbnRyYWwuZXJwLnNwbGl0ZG5zLnRpLWRpZW5zdGUuZGUvIiwiYXpwIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwiYXV0aF90aW1lIjoxNzE3NTk1MjE3LCJleHAiOjE3MTc1OTU1MjIsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MTc1OTUyMjIsImp0aSI6IjJmYzBlMzVmM2EzNmYxOTEifQ.Wlxxn0c7KL4kZiyVGKYSdKI8yBKnC39-77cBazyxF91t-FPxSt36cqgdNbDY5NK5Tsaf-OyXcmHCpH6wA1hVOQ"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390777
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJ4bU55RXQwcUd6U09zOENHTkV0Q1JDWmtXLW1uZHZ1cVdoRVg3ZlNRTjgwIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjMwIiwib3JnYW5pemF0aW9uTmFtZSI6bnVsbCwiaWROdW1tZXIiOiIxLUhCQS1UZXN0a2FydGUtODgzMTEwMDAwMTI5MDg0IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJHw7xudGhlciBHcmFmIiwiZGlzcGxheV9uYW1lIjoiR8O8bnRoZXIgR3JhZiBPdMOtcyIsImNsaWVudF9pZCI6ImdlbWF0aWtUZXN0UHMiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhdWQiOiJodHRwczovL2VycC10ZXN0LnplbnRyYWwuZXJwLnNwbGl0ZG5zLnRpLWRpZW5zdGUuZGUvIiwiYXpwIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0IiwiYXV0aF90aW1lIjoxNzE5MzkwNDczLCJleHAiOjE3MTkzOTA3NzcsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MTkzOTA0NzcsImp0aSI6ImQ1YjE3NWIyMDgyYTJlNDMifQ.YOK9fjEn-N9FZvCvEJWmtCs25poPSZSvmajEd0FNf_o12eB7lDaZY2EeD2GlWfLDYOwefdtt3RobD60O8HuGSg"
Ein verschachtelt enthaltenes JWT
+}

body.access_token.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "at+JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "sub" : "xmNyEt0qGzSOs8CGNEtCRCZkW-mndvuqWhEX7fSQN80",
subject. Base64(sha256(audClaim + idNummerClaim + serverSubjectSalt))
"professionOID" : "1.2.276.0.76.4.30", "organizationName" : null, @@ -854,13 +839,13 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "gematikTestPs", - "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595217,
Timestamp der Authentisierung
- "exp" : 1717595522,
Gültigkeit des Tokens
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390473,
Timestamp der Authentisierung
+ "exp" : 1719390777,
Gültigkeit des Tokens
"family_name" : "Otís", - "iat" : 1717595222,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "2fc0e35f3a36f191"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

Created Wed, 5 Jun 2024 15:47:05 +0200
\ No newline at end of file + \ No newline at end of file diff --git a/doc/tokenFlowSso.html b/doc/tokenFlowSso.html index 405b051..f7b7229 100644 --- a/doc/tokenFlowSso.html +++ b/doc/tokenFlowSso.html @@ -453,51 +453,56 @@ .has-text-info { color: #0fc5d9!important; } -
Gerendert mit https://github.com/gematik/app-RbelLogger
Created Wed, 5 Jun 2024 15:46:50 +0200

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Content-Length
3118
Date
Wed, 26 Jun 2024 08:27:16 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/jwt;charset=UTF-8

RES Body

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_disc_sig",
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
"x5c" : [ "MIICsTCCAligAwIBAgIHAbssqQhqOzAKBggqhkjOPQQDAjCBhDELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxMjAwBgNVBAsMKUtvbXBvbmVudGVuLUNBIGRlciBUZWxlbWF0aWtpbmZyYXN0cnVrdHVyMSAwHgYDVQQDDBdHRU0uS09NUC1DQTEwIFRFU1QtT05MWTAeFw0yMTAxMTUwMDAwMDBaFw0yNjAxMTUyMzU5NTlaMEkxCzAJBgNVBAYTAkRFMSYwJAYDVQQKDB1nZW1hdGlrIFRFU1QtT05MWSAtIE5PVC1WQUxJRDESMBAGA1UEAwwJSURQIFNpZyAzMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABIYZnwiGAn5QYOx43Z8MwaZLD3r/bz6BTcQO5pbeum6qQzYD5dDCcriw/VNPPZCQzXQPg4StWyy5OOq9TogBEmOjge0wgeowDgYDVR0PAQH/BAQDAgeAMC0GBSskCAMDBCQwIjAgMB4wHDAaMAwMCklEUC1EaWVuc3QwCgYIKoIUAEwEggQwIQYDVR0gBBowGDAKBggqghQATASBSzAKBggqghQATASBIzAfBgNVHSMEGDAWgBQo8Pjmqch3zENF25qu1zqDrA4PqDA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUHMAGGHGh0dHA6Ly9laGNhLmdlbWF0aWsuZGUvb2NzcC8wHQYDVR0OBBYEFC94M9LgW44lNgoAbkPaomnLjS8/MAwGA1UdEwEB/wQCMAAwCgYIKoZIzj0EAwIDRwAwRAIgCg4yZDWmyBirgxzawz/S8DJnRFKtYU/YGNlRc7+kBHcCIBuzba3GspqSmoP1VwMeNNKNaLsgV8vMbDJb30aqaiX1"
Enthält das verwendete Signer-Zertifikat als Base64 ASN.1 DER-Encoding. Hier kommt ausnahmsweise NICHT URL-safes Base64-Encoding zum Einsatz!
] -}

body.header.x5c.0.content

X509 Certificate

Subject: C=DE,O=gematik TEST-ONLY - NOT-VALID,CN=IDP Sig 3

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Komponenten-CA der Telematikinfrastruktur,CN=GEM.KOMP-CA10 TEST-ONLY

Serialnumber: 487275465566779

Valid From: 2021-01-15T00:00Z[UTC]

Valid Until: 2026-01-15T23:59:59Z[UTC]


Body

{
-  "authorization_endpoint" : "http://localhost:46199/sign_response",
URL des Authorization Endpunkts.
- "auth_pair_endpoint" : "http://localhost:46199/alt_response",
URL des Biometrie-Authorization Endpunkts.
- "sso_endpoint" : "http://localhost:46199/sso_response",
URL des SSO-Authorization Endpunkts.
- "uri_pair" : "http://localhost:46199/pairings",
URL des Pairing-Endpunkts
- "token_endpoint" : "http://localhost:46199/token",
URL des Authorization Endpunkts.
- "third_party_authorization_endpoint" : "http://localhost:46199/extauth", +}

body.header.x5c.0.content

X509 Certificate

Subject: C=DE,O=gematik TEST-ONLY - NOT-VALID,CN=IDP Sig 3

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Komponenten-CA der Telematikinfrastruktur,CN=GEM.KOMP-CA10 TEST-ONLY

Serialnumber: 487275465566779

Valid From: 2021-01-15T00:00Z[UTC]

Valid Until: 2026-01-15T23:59:59Z[UTC]


Body

{
+  "authorization_endpoint" : "http://localhost:43371/sign_response",
URL des Authorization Endpunkts.
+ "auth_pair_endpoint" : "http://localhost:43371/alt_response",
URL des Biometrie-Authorization Endpunkts.
+ "sso_endpoint" : "http://localhost:43371/sso_response",
URL des SSO-Authorization Endpunkts.
+ "uri_pair" : "http://localhost:43371/pairings",
URL des Pairing-Endpunkts
+ "token_endpoint" : "http://localhost:43371/token",
URL des Authorization Endpunkts.
+ "third_party_authorization_endpoint" : "http://localhost:43371/extauth", "federation_authorization_endpoint" : "https://idpfadi.dev.gematik.solutions/auth", - "uri_disc" : "http://localhost:46199/.well-known/openid-configuration",
URL des Discovery-Dokuments
+ "uri_disc" : "http://localhost:43371/.well-known/openid-configuration",
URL des Discovery-Dokuments
"issuer" : "https://idp.dev.gematik.solutions", - "jwks_uri" : "http://localhost:46199/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
- "exp" : 1717681582,
Gültigkeit des Tokens
- "iat" : 1717595182,
Zeitpunkt der Ausstellung des Tokens
- "uri_puk_idp_enc" : "http://localhost:46199/idpEnc/jwk.json", - "uri_puk_idp_sig" : "http://localhost:46199/idpSig/jwk.json", + "jwks_uri" : "http://localhost:43371/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
+ "exp" : 1719476836,
Gültigkeit des Tokens
+ "iat" : 1719390436,
Zeitpunkt der Ausstellung des Tokens
+ "uri_puk_idp_enc" : "http://localhost:43371/idpEnc/jwk.json", + "uri_puk_idp_sig" : "http://localhost:43371/idpSig/jwk.json", "subject_types_supported" : [ "pairwise" ], "id_token_signing_alg_values_supported" : [ "BP256R1" ], "response_types_supported" : [ "code" ], @@ -507,27 +512,23 @@ "acr_values_supported" : [ "gematik-ehealth-loa-high" ], "token_endpoint_auth_methods_supported" : [ "none" ], "code_challenge_methods_supported" : [ "S256" ], - "kk_app_list_uri" : "http://localhost:46199/directory/kk_apps", - "fed_idp_list_uri" : "http://localhost:46199/fed_idp_list" -}

Signature

Was verified using Key puk_disc_sig

Signature

Was verified using Key puk_disc_sig

15 GET http://localhost:46199/idpSig/jwk.json127.0.0.1:-1localhost:42791

REQ Headers

User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Host
localhost:42791
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

15 GET http://localhost:43371/idpSig/jwk.json127.0.0.1:-1localhost:45067

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client
Empty body

16200localhost:42791127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.1
Date
Wed, 05 Jun 2024 13:46:25 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+{"x5c":["MIICsTCCAligAwIBAgIHA61I5ACUjTAKBggqhkjOPQQDAjCBhDELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxMjAwBgNVBAsMKUtvbXBvbmVudGVuLUNBIGRlciBUZWxlbWF0aWtpbmZyYXN0cnVrdHVyMSAwHgYDVQQDDBdHRU0uS09NUC1DQTEwIFRFU1QtT05MWTAeFw0yMDA4MDQwMDAwMDBaFw0yNTA4MDQyMzU5NTlaMEkxCzAJBgNVBAYTAkRFMSYwJAYDVQQKDB1nZW1hdGlrIFRFU1QtT05MWSAtIE5PVC1WQUxJRDESMBAGA1UEAwwJSURQIFNpZyAxMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABJZQrG1NWxIB3kz/6Z2zojlkJqN3vJXZ3EZnJ6JXTXw5ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcajge0wgeowHQYDVR0OBBYEFJ8DVLAZWT+BlojTD4MT/Na+ES8YMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL2VoY2EuZ2VtYXRpay5kZS9vY3NwLzAMBgNVHRMBAf8EAjAAMCEGA1UdIAQaMBgwCgYIKoIUAEwEgUswCgYIKoIUAEwEgSMwHwYDVR0jBBgwFoAUKPD45qnId8xDRduartc6g6wOD6gwLQYFKyQIAwMEJDAiMCAwHjAcMBowDAwKSURQLURpZW5zdDAKBggqghQATASCBDAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDRwAwRAIgVBPhAwyX8HAVH0O0b3+VazpBAWkQNjkEVRkv+EYX1e8CIFdn4O+nivM+XVi9xiKK4dW1R7MD334OpOPTFjeEhIVV"],"use":"sig","kid":"puk_idp_sig","kty":"EC","crv":"BP-256","x":"llCsbU1bEgHeTP_pnbOiOWQmo3e8ldncRmcnoldNfDk","y":"ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcY"}

16200localhost:45067127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.2
Date
Wed, 26 Jun 2024 08:27:20 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "x5c" : [ "MIICsTCCAligAwIBAgIHA61I5ACUjTAKBggqhkjOPQQDAjCBhDELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxMjAwBgNVBAsMKUtvbXBvbmVudGVuLUNBIGRlciBUZWxlbWF0aWtpbmZyYXN0cnVrdHVyMSAwHgYDVQQDDBdHRU0uS09NUC1DQTEwIFRFU1QtT05MWTAeFw0yMDA4MDQwMDAwMDBaFw0yNTA4MDQyMzU5NTlaMEkxCzAJBgNVBAYTAkRFMSYwJAYDVQQKDB1nZW1hdGlrIFRFU1QtT05MWSAtIE5PVC1WQUxJRDESMBAGA1UEAwwJSURQIFNpZyAxMFowFAYHKoZIzj0CAQYJKyQDAwIIAQEHA0IABJZQrG1NWxIB3kz/6Z2zojlkJqN3vJXZ3EZnJ6JXTXw5ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcajge0wgeowHQYDVR0OBBYEFJ8DVLAZWT+BlojTD4MT/Na+ES8YMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL2VoY2EuZ2VtYXRpay5kZS9vY3NwLzAMBgNVHRMBAf8EAjAAMCEGA1UdIAQaMBgwCgYIKoIUAEwEgUswCgYIKoIUAEwEgSMwHwYDVR0jBBgwFoAUKPD45qnId8xDRduartc6g6wOD6gwLQYFKyQIAwMEJDAiMCAwHjAcMBowDAwKSURQLURpZW5zdDAKBggqghQATASCBDAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDRwAwRAIgVBPhAwyX8HAVH0O0b3+VazpBAWkQNjkEVRkv+EYX1e8CIFdn4O+nivM+XVi9xiKK4dW1R7MD334OpOPTFjeEhIVV"
Enthält das verwendete Signer-Zertifikat als Base64 ASN.1 DER-Encoding. Hier kommt ausnahmsweise NICHT URL-safes Base64-Encoding zum Einsatz!
], "use" : "sig",
Erlaubte Verwendungen des Schlüssels. Siehe https://tools.ietf.org/html/rfc7517#section-4.2
"kid" : "puk_idp_sig",
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
@@ -535,57 +536,49 @@ "crv" : "BP-256", "x" : "llCsbU1bEgHeTP_pnbOiOWQmo3e8ldncRmcnoldNfDk",
X-Koordinate des öffentlichen Punkts des Schlüssels
"y" : "ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcY"
Y-Koordinate des öffentlichen Punkts des Schlüssels
-}

body.x5c.0.content

X509 Certificate

Subject: C=DE,O=gematik TEST-ONLY - NOT-VALID,CN=IDP Sig 1

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Komponenten-CA der Telematikinfrastruktur,CN=GEM.KOMP-CA10 TEST-ONLY

Serialnumber: 1034953504625805

Valid From: 2020-08-04T00:00Z[UTC]

Valid Until: 2025-08-04T23:59:59Z[UTC]


17 GET http://localhost:46199/idpEnc/jwk.json127.0.0.1:-1localhost:42791

REQ Headers

User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Host
localhost:42791
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

17 GET http://localhost:43371/idpEnc/jwk.json127.0.0.1:-1localhost:45067

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client
Empty body

18200localhost:42791127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.1
Date
Wed, 05 Jun 2024 13:46:28 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+{"use":"enc","kid":"puk_idp_enc","kty":"EC","crv":"BP-256","x":"QLpJ_LpFx-6yJhsb4OvHwU1khLnviiOwYOvmf5clK7w","y":"mHuknfNkoMmSbytt4br0YGihOixcmBKy80UfSLdXGe4"}

18200localhost:45067127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
28.0.2
Date
Wed, 26 Jun 2024 08:27:22 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "use" : "enc",
Erlaubte Verwendungen des Schlüssels. Siehe https://tools.ietf.org/html/rfc7517#section-4.2
"kid" : "puk_idp_enc",
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
"kty" : "EC", "crv" : "BP-256", "x" : "QLpJ_LpFx-6yJhsb4OvHwU1khLnviiOwYOvmf5clK7w",
X-Koordinate des öffentlichen Punkts des Schlüssels
"y" : "mHuknfNkoMmSbytt4br0YGihOixcmBKy80UfSLdXGe4"
Y-Koordinate des öffentlichen Punkts des Schlüssels
-}

19 GET http://localhost:46199/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=WIRUb1TNNwVsRxGx-Si0nBcbC2EsRtNE&code_challenge=fuKukYq-DBFTk90cnPnYxZs9GFZkOmvlfL7tXJlYIcI&code_challenge_method=S256&scope=e-rezept+openid&nonce=5jFBUl4mxjLspgD6QfAyaHJdKiDe9ypW127.0.0.1:-1localhost:42791

REQ Headers

User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept
application/json
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Host
localhost:42791
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

19 GET http://localhost:43371/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=G-uF7pZdh7dLnY-OK2UOXiJCVeGmjK0j&code_challenge=VXxFqVYxx5LzANtAW35EVu9vNf8j_N2mwGJOg1su8MY&code_challenge_method=S256&scope=openid+e-rezept&nonce=wprfi2V4pWrdzFsbnH7zfbcIkvSFl5gP127.0.0.1:-1localhost:45067

REQ Headers

accept
application/json
accept-encoding
gzip
user-agent
IdP-Client
Empty body

20200localhost:42791127.0.0.1:-1

20200localhost:45067127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Date
Wed, 05 Jun 2024 13:46:28 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyNzkxIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJBbU9uQWhydmlmaUJYR3A0VnR0VW92MHh1bG1xUUtMcTR4LU5hUndwQXFJIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IjVqRkJVbDRteGpMc3BnRDZRZkF5YUhKZEtpRGU5eXBXIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJXSVJVYjFUTk53VnNSeEd4LVNpMG5CY2JDMkVzUnRORSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTc1OTUzNjgsImlhdCI6MTcxNzU5NTE4OCwiY29kZV9jaGFsbGVuZ2UiOiJmdUt1a1lxLURCRlRrOTBjblBuWXhaczlHRlprT212bGZMN3RYSmxZSWNJIiwianRpIjoiNjQxM2Y2YzMyOWMxMDM1NyJ9.poc-MnPNfROrAXCJuNJhtFM4XmIg3bGIO3XtJEQIa2pXAkNDoKre_DPaHIhOkHpJZzWdSm3utQdiHgr0Il8_Qw",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Wed, 26 Jun 2024 08:27:22 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Date
Wed, 26 Jun 2024 08:27:22 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1MDY3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJpUjZaUHhZU19RMXJ4Skgyc1RJNGlEOHFIZUJMc0lNUk90dFh4SmZKTURFIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IndwcmZpMlY0cFdyZHpGc2JuSDd6ZmJjSWt2U0ZsNWdQIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJHLXVGN3BaZGg3ZExuWS1PSzJVT1hpSkNWZUdtakswaiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTkzOTA2MjMsImlhdCI6MTcxOTM5MDQ0MywiY29kZV9jaGFsbGVuZ2UiOiJWWHhGcVZZeHg1THpBTnRBVzM1RVZ1OXZOZjhqX04ybXdHSk9nMXN1OE1ZIiwianRpIjoiNzA4MzA3MDExNzdmYjc3MSJ9.QjvvcDB974QGo_kRINcJqw-miK25slQBxVglx7zy_xpDXFhuc3hZMGdghrr_-TcCsO-24tKEY4ns9dpamijJMg",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
"user_consent" : { "requested_scopes" : { "e-rezept" : "Zugriff auf die E-Rezept-Funktionalität.", @@ -600,140 +593,136 @@ "family_name" : "Zustimmung zur Verarbeitung des Nachnamens" } } -}

body.challenge.content

JWT

Headers
{
+}

body.challenge.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "iss" : "http://localhost:42791",
+}

Body

{
+  "iss" : "http://localhost:45067",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "AmOnAhrvifiBXGp4VttUov0xulmqQKLq4x-NaRwpAqI",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "iR6ZPxYS_Q1rxJH2sTI4iD8qHeBLsIMROttXxJfJMDE",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"token_type" : "challenge", - "nonce" : "5jFBUl4mxjLspgD6QfAyaHJdKiDe9ypW",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "wprfi2V4pWrdzFsbnH7zfbcIkvSFl5gP",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "WIRUb1TNNwVsRxGx-Si0nBcbC2EsRtNE",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "G-uF7pZdh7dLnY-OK2UOXiJCVeGmjK0j",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "exp" : 1717595368,
Gültigkeit des Tokens
- "iat" : 1717595188,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "fuKukYq-DBFTk90cnPnYxZs9GFZkOmvlfL7tXJlYIcI",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "6413f6c329c10357"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key puk_idp_sig

21 POST http://localhost:46199/sign_response127.0.0.1:-1localhost:42791

REQ Headers

Content-Type
application/x-www-form-urlencoded
User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Content-Length
3978
Host
localhost:42791
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend

REQ Body

namevalue
signed_challenge

JWE

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

Headers
{
+signed_challenge=eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSIsImN0eSI6Ik5KV1QiLCJleHAiOjE3MTkzOTA2MjMsImVwayI6eyJrdHkiOiJFQyIsIngiOiJNRGpXdENMTWdMQ1BvczJnSFZlQ3ZNWWRxTm9zUWxNYkFSbi1nS0J1SUJRIiwieSI6IkxMdDc1U0FBVzMxdEx6U3d2bUpJZUR3Mk1xUjNZVG5wcEdoeTFvYXFaZG8iLCJjcnYiOiJCUC0yNTYifX0..ozvxrbpnvH00hfgF.aW_jpz9HkTt1phEOmfrAdmu5L3CQ6hCrz7CYa1P6V21JLg0OS478zzLR-3qXbF_kMylN3AP3wqV3ipIimyA5r6Y9WqgOcR4MamwlBwCAHh8XRDc_ROLYFLbxfHXTMj0u7HtSD_9zMQqNvAfN20_tBEZihp1mrk9vupt_p82ZFuG0yknxzljPVKWQkWfP8rOSE3Lo1mvihI31uH1ik4-0j32i_4xxn8x403Y5-u5-XKhD_KJL0YpWlk_4qFt8q1xH-j1T74LJcOV944WCRFYALJx2DkvtXJNxGIthXHhod_BjYwwlA1sUlymmwzV_7EAUk6QS9AHPGpcSffKu5RFJqiPEf72EdwWGvIeMeciA4TENbVvFgC6WcLSkQjjaw0A020wRrc6TTueFfkZlg7yBZXQ2B8Nw3yN_e7_RsCuOkC83e4D7vVOfdXKPDWBHefs8tQOTSkM9OJFZU8dcftxH2bAkUMkAiTNrs_Z84_fAMsqNzuJKsHDUHst1h0OApev8eWoTBBvFHQYGOrRIjaUDqrPCkNt9h6GS3qhN1JSPyrXSWxFRDM76N6ZPvafVBIriKBy0dn8nkNKwaS7qPhrID6cXWHOnZERRoma1W9UEYTLJgsD_u03nIpS-KHoYFb97Ygv6jC7jmniv2xeOLLo94PeTxycDV8QPeQMvLKQd_Y7M-RqcxkrIUKFP2gVcKU60aoed3WqzA7AQQOHmj7ZrVhJoAnuU5EE7DOc-W83pSNGDTLbUj8lrn9GCtuI-7hLULINqLSkj02TDvDXN2yWty9cB0QV5oFfwUxKRRvjWP6TBbRyFNSAndrOvA9Xz6a0N_nLVbEyDpv-YE6McDx75cq6jkQPbE8Eb04gpJE7kItOm5zkXoeJ4pUfmw7MCYuiaL-n2aOUL2hZ6V71haib55zwrKb9T1e5fdwOMNmBuDXImoXAnxcih2lSkF9UZsj_kmA5ikGFiH7QI7UEY_5AV35GzIHFdFSuYAyAdDgMVC1X5VdzDqiPXOJVakM6u7wPA_Qzd8735q0lxDLSY96EDNmibUoV20-do1H8oMaNOqiAvArZcQEI7eGZQwqB2f_GALPTOzRgfgdovxKQ2zCujxV7dN24M6-1tnVND5KsfSE2VY_vfbTDqc67N0IVNtoPo_mhnJn5cb18i2t-uDDacam4ARAQpWR-7EdSOqgf-mHc_EIZeM0n8kvN99OlT6F7rrk292m98CTBszyA-xhP2iblN-iP8B2v_oa3l8ELs7a0hsf4CaPkVGDLj9mmr3-nwWvBbh-PbQMz2kA7Wx5FKqR4ibSR5d3kNqJn849JKTCto5YEbtWJ7XU33rxWVCtzny6upkXD7wzh67inESlYO7SGdH1katAZdC39OYk9gPyszJ-ZsquBxR1uaOe6pJSXF1lXwI6wJ03wKByj0Qiv2855x-HHV8QW-Gw9NMPOE3D6heb7AQV5zg6WJUYpPeY8Le5eTiVJAEx_d_H01TjlQ25Nlw_KGIPaXFzhtEkrVIDUS9sf2Cgl3bSUcYxMyGR1iTW8jJqd1IADLRI0JwzCd-nypaOvXgnw3TY2WQtQu09mFvGAuKA8rJYXj82z-D4yM4uOaPeESFjAKZErrliIGGQTTSmdYZuaSTskRu0yu6Vt9wMYq3EMMuaLdtDEfHfALyXvmBB1q8PaZQfudRtw_hL2800FYL4iuXNLN2QIvMyXtWGVRG7tenScgbimxkyvOxxuydKmYZWGRAmffUwSJYzUL_3yz1Bv9ZDnyNm62AvM4t-F1b_ixHaSZCV0gVZnuPvoR60hdVZ9HasAwQXWnyNYTNh7LJBk7fEV7LOIlsM5aoYkSPUv_gNzV5uNouDJvaf5x_mqz7XwXHPV4AQxYqqOEJi1M3-9KMlLA1hvTgsAw48_ENegc7aclNxyBAZkF5ydYuUyBkfDd02feHrmKDAnOodpHvRCERBWktDTbGbJP6YN-mUsd38U40aL0QH5mW29fswVSSJZN6C-EmxPk8jID4hJcz10966PhryQbUjI84MIFXUOHMKrR-PfntaDDU9rL4SKtP-godcDcLivkCRZET_69s_1VbkvZIY69kHIV2ndgWjkw1yW28Y8lWSVuCk6vxSN3L0YXsdZNbPnP3X3v5Fb4088XckqMBAI2Hn-ysGS_OBZcBWnmqTZQpL6H28tK5rWvOAjb2UxTa85YrepLqzDo5KYQY0SxuwqrppmSX0WAQiUgp_e8cMstfacxX49gxdAEJTgW5p8RKoty8Aghih9st96-Bsaj9XoFA0S6oPqRkudSqR45vaBJFFYuJ1SdkHT0l8LUBYxbsKvTNqiXdf9-JmutgmGKhg67BGz97D_OoO4IkZXmHBgDBvQxbwgK4mI79TjWveStC_RR8zAX5bdoRfCgRz-pZJ9L_x9zzkNjyXWK-KzREeGsrs-Wm9PwboDYlCJ5Dlq5EyGvX8tg9ZrAUMfFqPTMXJ1Vw-rm2g_jWpINsCxSgd-EnDj0tYT4e7IxDfxSpDi7cNJYZdm9h5oJdYndHfgcHAJSvcUwjRrKCDDjQlxAR0h7f8u8q0jPp_MGopJ5-oj5JdNQh21BUqz9ZPDuSjI1I-46QXCace3FNqdd0rokugSulVuWLUVYTcfUKpZrbzH5H5UWhsrZlzcD2KTDCssXzkCPRP9-q8Yw_fyoPfR2Gzn21SAdL7Jqvqkjxv_rLet15biyBWIWJ0G3e1yc59ctmE6ziqynj2siVZM0vApBb_jVmTnToaGc_MoXkwn05PQweERdXOg3HCvTw9Ci1LYRYpX75enW6KS29e5yUsC0vRHV15qCFPFQGrGc0UHQt_QuOfFwwF5TDgN8j06kRl0UKrc42Vjlq4XpcmOC2MyRCCx3k58gtHy9HVVN4bXI19srY4kzQm6iSYXYeVAjwUfkiyIGjg9jGCX5e1BNcSzIef4wRrNMK0RaR72-p3m6Ag_kvgt4-HcL4Guk-RXbNbMpsjPcy6pQgKTqQHM2Hy1lNSoe5n0deNbK26oe9VcHBYNJjYYTv5vZHMqebkYlF9fvwQ0k-reVWlZbClHlDkzXPmfe7v9_EpdHAd3gTlb4DHzULTI2anxKpl9Q54s8J6iy1qQurdQkaZ1j4gStJcF4iBJnBtD5kAymNZSN91atHJhON5n_a0ns75t5oQJRAxqG_nQF7RdxzE7SCc1Pz-BW9yvoGuGqUNUGZnvhDKObg7wcqpMXvPCs9iNkc5ACWae-2S_uPVbQSIMo7ClOHG6VMm7MNwaHBiRRSCcjVpLU2UBMldOlZ95_ezfqoStV6ZswTKIdUSvgqQyro6GP0pHeuJ0yJCYSip2UboBu91sMArwO_PfrouqkJObC6JdRnj9dG2iEC4zEBcONR7D5dh-b1e08V3q-jXCbTOvRj0paQ8k22Wj68xyH0AUd3O2SqS9O7BTVSAwPcpNcw_rpzRueIh5vpDDt-NqjXgenyWXgywSpqQP0XxuqzlD1bTRYVC8T7mgUhLDIqY7aQBszMDLUFYyJzsa7bIge7v8Yk0tH8V1nd3c3O169XBvpNwingRO_QRwIXG2cdqTzLqOMKELI4hl-DpuOQmbT4h5iqqGBO6QjosaFOVxjKUQI6vH0lChFDLArgNWGzin35Yw8revD8CN-vl_w7eRSzZpD.gh8_uy32CtGyy8pLKJrcCg

21 POST http://localhost:43371/sign_response127.0.0.1:-1localhost:45067

REQ Headers

accept-encoding
gzip
content-type
application/x-www-form-urlencoded
user-agent
IdP-Client
content-length
3978

REQ Body

namevalue
signed_challenge

JWE

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

Headers
{
   "alg" : "ECDH-ES",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595368,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
+ "exp" : 1719390623,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
"epk" : { "kty" : "EC", - "x" : "LLfNR5tu20Qg7f6E6SMCYqVfiF-RUnESoo829uj_-xw",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "HOeqOxYTdWr7qhS7EftgxSHlCfKTJ31xB5z5wQBkYmU",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "MDjWtCLMgLCPos2gHVeCvMYdqNosQlMbARn-gKBuIBQ",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "LLt75SAAW31tLzSwvmJIeDw2MqR3YTnppGhy1oaqZdo",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body

{
-  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pReU56a3hJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKQmJVOXVRV2h5ZG1sbWFVSllSM0EwVm5SMFZXOTJNSGgxYkcxeFVVdE1jVFI0TFU1aFVuZHdRWEZKSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklqVnFSa0pWYkRSdGVHcE1jM0JuUkRaUlprRjVZVWhLWkV0cFJHVTVlWEJYSWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pWlMxeVpYcGxjSFFnYjNCbGJtbGtJaXdpYzNSaGRHVWlPaUpYU1ZKVllqRlVUazUzVm5OU2VFZDRMVk5wTUc1Q1kySkRNa1Z6VW5ST1JTSXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM01UYzFPVFV6Tmpnc0ltbGhkQ0k2TVRjeE56VTVOVEU0T0N3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lKbWRVdDFhMWx4TFVSQ1JsUnJPVEJqYmxCdVdYaGFjemxIUmxwclQyMTJiR1pNTjNSWVNteFpTV05KSWl3aWFuUnBJam9pTmpReE0yWTJZek15T1dNeE1ETTFOeUo5LnBvYy1NblBOZlJPckFYQ0p1TkpodEZNNFhtSWczYkdJTzNYdEpFUUlhMnBYQWtORG9LcmVfRFBhSEloT2tIcEpaeldkU20zdXRRZGlIZ3IwSWw4X1F3In0.VnQKM-GULEEl8jVCem1etOB31K46WiMei6F9pgcpW9kZfDcbsm7et8cW6BO7-loYn1-KLDYUmlT8vSoim7jp5A"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pRMU1EWTNJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKcFVqWmFVSGhaVTE5Uk1YSjRTa2d5YzFSSk5HbEVPSEZJWlVKTWMwbE5VazkwZEZoNFNtWktUVVJGSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNkluZHdjbVpwTWxZMGNGZHlaSHBHYzJKdVNEZDZabUpqU1d0MlUwWnNOV2RRSWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pYjNCbGJtbGtJR1V0Y21WNlpYQjBJaXdpYzNSaGRHVWlPaUpITFhWR04zQmFaR2czWkV4dVdTMVBTekpWVDFocFNrTldaVWR0YWtzd2FpSXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM01Ua3pPVEEyTWpNc0ltbGhkQ0k2TVRjeE9UTTVNRFEwTXl3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lKV1dIaEdjVlpaZUhnMVRIcEJUblJCVnpNMVJWWjFPWFpPWmpocVgwNHliWGRIU2s5bk1YTjFPRTFaSWl3aWFuUnBJam9pTnpBNE16QTNNREV4TnpkbVlqYzNNU0o5LlFqdnZjREI5NzRRR29fa1JJTmNKcXctbWlLMjVzbFFCeFZnbHg3enlfeHBEWEZodWMzaFpNR2RnaHJyXy1UY0NzTy0yNHRLRVk0bnM5ZHBhbWlqSk1nIn0.kqlcEPWpJFhnx285OhPPTzQCbowL-nUyFj3GO4bIySeYsKKthGsd5LXdjsSv6V8WvrNHFc56vSz3JN3KJ6DnzQ"
Ein verschachtelt enthaltenes JWT
+}

body.signed_challenge.body.njwt.content

JWT

Headers
{
   "typ" : "JWT",
   "cty" : "NJWT",
   "x5c" : [ "MIIDSzCCAvKgAwIBAgIHA25VKAHcvzAKBggqhkjOPQQDAjCBljELMAkGA1UEBhMCREUxHzAdBgNVBAoMFmdlbWF0aWsgR21iSCBOT1QtVkFMSUQxRTBDBgNVBAsMPEVsZWt0cm9uaXNjaGUgR2VzdW5kaGVpdHNrYXJ0ZS1DQSBkZXIgVGVsZW1hdGlraW5mcmFzdHJ1a3R1cjEfMB0GA1UEAwwWR0VNLkVHSy1DQTEwIFRFU1QtT05MWTAeFw0yMjExMjQwMDAwMDBaFw0yNTA1MTkyMzU5NTlaMIHOMQswCQYDVQQGEwJERTEdMBsGA1UECgwUVGVzdCBHS1YtU1ZOT1QtVkFMSUQxEzARBgNVBAsMClgxMTA0MTE2NzUxEjAQBgNVBAsMCTEwOTUwMDk2OTESMBAGA1UEBAwJQsO2ZGVmZWxkMSIwIAYDVQQqDBlEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvMT8wPQYDVQQDDDZEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIEdyYWYgdm9uIELDtmRlZmVsZCBURVNULU9OTFkwWjAUBgcqhkjOPQIBBgkrJAMDAggBAQcDQgAEHlNcoznjdoi0Yxv27B3yGaE/19vjOJI78wT2yDcec+mWAlRc/fE/ByhPc/IOLkgsaZmbKuNQhhepE4PQ4qtYDaOB7zCB7DAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFESxTAFYVB7c2Te+5LI/Km6kXIkdMB0GA1UdDgQWBBRKV33xfqk2Htd8LzU4tJTYXVLtmTA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUHMAGGHGh0dHA6Ly9laGNhLmdlbWF0aWsuZGUvb2NzcC8wDgYDVR0PAQH/BAQDAgeAMCAGA1UdIAQZMBcwCgYIKoIUAEwEgSMwCQYHKoIUAEwERjAwBgUrJAgDAwQnMCUwIzAhMB8wHTAQDA5WZXJzaWNoZXJ0ZS8tcjAJBgcqghQATAQxMAoGCCqGSM49BAMCA0cAMEQCIHuswBIIMTvWRf+b5Pu8nt9mEZ1+Fd8o2B3e2atV2c73AiBpAMFuIY2JICTi5n1Yj6rw94ZLsiEfSJW7mu2eU2Ldaw=="
Enthält das verwendete Signer-Zertifikat als Base64 ASN.1 DER-Encoding. Hier kommt ausnahmsweise NICHT URL-safes Base64-Encoding zum Einsatz!
], "alg" : "BP256R1" -}

body.signed_challenge.body.njwt.content.header.x5c.0.content

X509 Certificate

Subject: C=DE,O=Test GKV-SVNOT-VALID,OU=X110411675,OU=109500969,SURNAME=Bödefeld,GIVENNAME=Darius Michael Brian Ubbo,CN=Darius Michael Brian Ubbo Graf von Bödefeld TEST-ONLY

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Elektronische Gesundheitskarte-CA der Telematikinfrastruktur,CN=GEM.EGK-CA10 TEST-ONLY

Serialnumber: 965736952618175

Valid From: 2022-11-24T00:00Z[UTC]

Valid Until: 2025-05-19T23:59:59Z[UTC]


Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyNzkxIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJBbU9uQWhydmlmaUJYR3A0VnR0VW92MHh1bG1xUUtMcTR4LU5hUndwQXFJIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IjVqRkJVbDRteGpMc3BnRDZRZkF5YUhKZEtpRGU5eXBXIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJXSVJVYjFUTk53VnNSeEd4LVNpMG5CY2JDMkVzUnRORSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTc1OTUzNjgsImlhdCI6MTcxNzU5NTE4OCwiY29kZV9jaGFsbGVuZ2UiOiJmdUt1a1lxLURCRlRrOTBjblBuWXhaczlHRlprT212bGZMN3RYSmxZSWNJIiwianRpIjoiNjQxM2Y2YzMyOWMxMDM1NyJ9.poc-MnPNfROrAXCJuNJhtFM4XmIg3bGIO3XtJEQIa2pXAkNDoKre_DPaHIhOkHpJZzWdSm3utQdiHgr0Il8_Qw"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content.body.njwt.content

JWT

Headers
{
+}

body.signed_challenge.body.njwt.content.header.x5c.0.content

X509 Certificate

Subject: C=DE,O=Test GKV-SVNOT-VALID,OU=X110411675,OU=109500969,SURNAME=Bödefeld,GIVENNAME=Darius Michael Brian Ubbo,CN=Darius Michael Brian Ubbo Graf von Bödefeld TEST-ONLY

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Elektronische Gesundheitskarte-CA der Telematikinfrastruktur,CN=GEM.EGK-CA10 TEST-ONLY

Serialnumber: 965736952618175

Valid From: 2022-11-24T00:00Z[UTC]

Valid Until: 2025-05-19T23:59:59Z[UTC]


Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1MDY3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJpUjZaUHhZU19RMXJ4Skgyc1RJNGlEOHFIZUJMc0lNUk90dFh4SmZKTURFIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IndwcmZpMlY0cFdyZHpGc2JuSDd6ZmJjSWt2U0ZsNWdQIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJHLXVGN3BaZGg3ZExuWS1PSzJVT1hpSkNWZUdtakswaiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTkzOTA2MjMsImlhdCI6MTcxOTM5MDQ0MywiY29kZV9jaGFsbGVuZ2UiOiJWWHhGcVZZeHg1THpBTnRBVzM1RVZ1OXZOZjhqX04ybXdHSk9nMXN1OE1ZIiwianRpIjoiNzA4MzA3MDExNzdmYjc3MSJ9.QjvvcDB974QGo_kRINcJqw-miK25slQBxVglx7zy_xpDXFhuc3hZMGdghrr_-TcCsO-24tKEY4ns9dpamijJMg"
Ein verschachtelt enthaltenes JWT
+}

body.signed_challenge.body.njwt.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "iss" : "http://localhost:42791",
+}

Body

{
+  "iss" : "http://localhost:45067",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "AmOnAhrvifiBXGp4VttUov0xulmqQKLq4x-NaRwpAqI",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "iR6ZPxYS_Q1rxJH2sTI4iD8qHeBLsIMROttXxJfJMDE",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"token_type" : "challenge", - "nonce" : "5jFBUl4mxjLspgD6QfAyaHJdKiDe9ypW",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "wprfi2V4pWrdzFsbnH7zfbcIkvSFl5gP",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "WIRUb1TNNwVsRxGx-Si0nBcbC2EsRtNE",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "G-uF7pZdh7dLnY-OK2UOXiJCVeGmjK0j",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "exp" : 1717595368,
Gültigkeit des Tokens
- "iat" : 1717595188,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "fuKukYq-DBFTk90cnPnYxZs9GFZkOmvlfL7tXJlYIcI",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "6413f6c329c10357"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key 965736952618175

Encryption info

Was decrypted using Key prk_idp_enc

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key 965736952618175

Encryption info

Was decrypted using Key prk_idp_enc

Hierbei handelt es sich um das signierte und verschlüsselte "CHALLENGE_TOKEN".

22302localhost:42791127.0.0.1:-1

22302localhost:45067127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Content-Length
0
Date
Wed, 05 Jun 2024 13:46:30 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Location
http://redirect.gematik.de/erezept?
Optional[code]=<Authorization Code in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
&Optional[ssotoken]=<SSO-Token in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der SSO-Token. Mit diesem kann der Client sich wiederholt einloggen ohne erneut den Besitz der Karte durch unterschreiben einer Challenge beweisen zu müssen. Er ist vom IDP für den IDP verschlüsselt und dementsprechend vom Client nicht weiter zu verarbeiten.
&state=WIRUb1TNNwVsRxGx-Si0nBcbC2EsRtNE
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Wed, 26 Jun 2024 08:27:24 GMT
+Location: http://redirect.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDUwNH0..yxuNSb-FS-tVjVha.ia6V6pGsX8m_gDoBUxGhKUCMubEhDl_2brL-ysigO_CDQ9QK1EkwOkP1whZKSfcUUpb4Za3_rWa8TX0-rIuKCFHAcgQV3cYP7uc8bdffKy1Miv3U7YPygGPiehk0z20xeKjVSlPwCSTbbwdUtqyArZnH9AqSN-iX1TJ0AsfnGW6FM71_tf3omFq7yhAElyfyiZ-1y1glQC_EvbI_gNEwKwL5hoeXt4Q7yX1EbM35oPuZX4DKpzfOWIFJOMCP3IXHJVofEHj-cfEs9Qy4G8c3Z8zVGsSkUi5BwWbF7nDMCcRfBtb6rNGCKcH8dIhLq1fJaJ9kw9afWziNULK5O_bXCVKFf7GLufyC_wmMlhg9I6r4dOsFSnOLyKNZNPJNWmmJ9FMWgJs4wQ-DPjrBPEj48wNWfHn6LjaNc80Jn-8rZwIATnMIup4HxEL77UKLHJcPD_sKHJnjXwDRJ2oEcRIJUtp7HvlOXj1ji1ZwuUb3ytJ2uJmpnGFZU-QtSvj8PqRsbbaXglKED5-GKKcdd3c3SZGsJdvH5EsqA-VZtdMOi752BTld5rvnsHHa5Ffxb1qXUuK3_nEwjn1P30SqM-B9c9G9Bq5Iwn1cZCHs_bTtXwR4VXZRyRv2hygfMx8427fWKHI7XVYoOGr3jMFBbc0SHZ-E5mPE_m3DupZ4rGjwRK1O2kfckqjLRBJNOO8H63lBZwtFyzQLiYiRWn75YsyICy6ljxeajyvpHZjTRG7FeiNguVpADrWBs05Mcer1BhM_BZiQpdze-pOO0Ts4c3TRcn_ZLYN0V4-9IcDenqmrIBlDNcdtza14WI-tx3WbmGpJp4qCQfX2SvtjfOmlxUH6yEzBsJUlGDVlLPG28jfZpZOCpNm2aPs5jBl3Jz-JN9O3KnmlvV06pZHbdDY_aVr19IrZMv6w2WDBdBjEexdUfPJwbgeP1n7nhPS7Cvk0BVEARHPM9CAW6CZDac9hX7rZvklbrobPETwLCJ3MZZYIMKfUe87rCipWzMV40UaoJb21Rey43Djucv1t-AxnMVW5j1Nq_l8cSnHB_Wq1LFy7Uw-KOBXXQLCb3N-i0w4Xi5vQDHDR-LqeIIFDo67nsDCFLr88Ss5onYwnEp9YFIkE1zdl6mPPptwYKRNxp23GNOmQD8XdK88Z9Lu7FT0xhq6DMyQ3wYLFGmQijZqliKXSR0h3bb6k8zapGGNZKUVX1yZZ7WzprXX71C0rK1x2L912wrSCuJ8sEfAigDBF9ECanBfUfb_iivDu52clI1PUFdbmEeJhNqDwBpUVPDnIM2xJcb6QzfqdHqhSVMRl0Kew2_HwTZqenflJhjrHKwhhzRM4D4lQ7940x_6jLrR9JEp4MXpC-VxfdPs-MhTaKAwoZjl8_qXzvRpZzad6MYbJ2UZ7-ei8BRwX0tlV.J3JbOcbyDvq-xc6IUWQgAw&ssotoken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTQzMzY0NH0..VuHDhJymXXpz3LoY.RNVhWPlbs5USpfsBK7Bc82GqwVGfNB6vMGqXXM_xPYPtasM1_lnmaxl-tD1eulkmpnncaXVkPJ81OAP6oZWEYAympZh5eLJskqyYBAegtjclqxzDYoIFQiFaUd4Ht68YdrBjkJkBIYxhAcnqvKVyAKKa5QZIW8O-QeFY8K9TeZMLMd5txzo30VpSuyMwVn8pEaHUAFa8S_ziAZ8MzrfUuslYJk5HQBPRQm1hg_Agkqyad7RWmEBJr9WjA4IrWn9m0JZufD0TxlIlJnkTfqkSLnD-kELn5CGk27sfqmta9aYASLgEaxfN3LMisJfLgvtrxb5sR2736hc2bNbcblACi3j8Y4LagPsaXKyx2aUNMaaJNxAr2VFD4YV3QDgTp51T-4RhjTMwgZB9BEnLUhxa1g8ePsqF_5Loa6dEk5Kl7deBOsgQ3UVF0HHvskVI6vjPIt6hpjhlsC86ovY34AxDurQbsD1FM9JA-WpJvikL32VLYcRq2xtUCVFxdMeOoJAxWavsTFZPvpba-N5VjrJ3OcrgfZc_RqW500wcMDPixMcnQIGxxvX5Ke8eX8CVKbqQ5Z3JdrVXb2aLBYBpWXAq79leNnh4ISf3UZ10hM5p3tkL-XVFYjIVkbLIVr1rgJzlDrRxLRlZZjcFeQGFYn4G_emjx_voJgP8Q7kGdQkCZw-kgMNk_iT85Q6IdY8_KqSzc7aoJTVETAygyUoJPgc8Yq5QNIcayCm_-ucFCDo_G0xkyB3HrZK_aLMN8nPoZvaIcl1UWaAqUq_duV1Cd63h_TehBd3gHLh4FgPLfpTdf2VcK43rNddEAND3Pvwr1xYtn3nof6MGlZ0035SqJCUt0-wceceMXx-aLBUGw7Ov6pxacTbTwTbZsRttZ_7TtxQtQyPFMaB2et-Yd9x0Egsq_y8Rh5R2hxXQi5xuNmw1CxpGgLpOyrU_MqQsA7tjWt97Mhc87YKtxsWWFAy4HKezeQvNHFcn_QZ3VgZmM7ldvuK-aigNwN11wiRy_H3tr-p7CwKnwop3ZT3uhcMpZrig7h7JT7Xla8etUuyK5-6arv75v86ERJxbOBBJCIiR9ls91DjiQH9hAeqEitxEYxwr_W1mcEXtvMA9XGBMe6wKYPmxOp27YSdlFrbo7jM0dNF53Jbwz4rbLBoDXPMfKnnFcUE9d-_JijIC6K5DRKuy8wY7ntFI4m6s5orIvAMyHOpZokRaYI_K3DCsildiVeTpU1nH567cgPNYP1nL1IDHam077gNIqycbDMbNbtIli9cJ5YHYA95qajAh8CxIFQ1aQ7IJU21CtHiXIsC6ONuyT68UnXHwGlFlEuAOVHceus6TfCcUZJHfN3aAOmPrMbkck-XDmqA5JhJkGXo2ewjkcNyT6y8FY1dxGG4saZANRx8sm3lrd6R-DvkZjtjKaNc0-9LzjD-deqVVIJ1TeRV5uQzg4k-BCaEk0mpRnCjYk5iN9dBQZPXD8qoeU9NkvWYLzor5sMpDk62J-Q8R1by8oI72_Z6K6cmZiUe7mcdeQzGhtvT9_f6C4mLi2ma3KzqpVLD0-gNlU5I8LzY4VxmIz9wN1XeJhc4d5emqup_dtBG_Bqdy5kXXumUJBLAQ6Ix8liB1RGPTgFiaUz_8zxDcnbpvyO7SJtu9pQMlLgtbcduAI7oTxv_XANdMu-dobpa-RhTy4OOavJHnge__UqgnfjX_mw-2EoifMgyHAC05XJl1XdUsNuqK7OytRWC5ZKbCDNAWDgqrS37TYTF4xJVW7jS-E4TPmlpWNqe0QiVz80nKe3xYL3TeGefb4awC3rSUXu8Qkw2EYJkpc0UKHSszPGQeV0582l5dCUz3oIhzymv06tBc-hVaCqx5kDcOtCeijNioD3hpPNfEVsM26gqY3fdDP_7TYdaXOB3MTMyeTnpdoTZRjt_AwNEewn3umzheNHgY2-WHhsfnV3Rr1br5--ByClS5oXyBqegCP0Zjf0TdopwtXJ50B_vWXO2gGOL7sHp14wEXLr5bwRPCECBOYDkv4NpFGuJcJx0p0OShmrm5R78QPiWyIUfujOTeLUFKQ-EfqHF4i9_gWHoOCAarpTSM7pxIXJ89RxfuHBTsjcuqRgej5ORacXBWMIG9DA4OJZWtk6OEQwgpixmMsYqkEsXzYkvO9Jm6Sw6kYZGE0JGEaIme42A7fhTvbOk_K3IwXIpW2d-XKTSe4kRUcD2P0QFBQ1yAfuHnJ9JDhaAhfYhM103__AMMBRsRu0h0DIPLYaH1jm6OBK1kQFiXYUBfgUvxlQILi5_tXbx-zLC4Lce6fNFzd22aOdXBqzbRIyt7owrAbF3bNEeaKax2uHs6xYNCu4H-Bus7bhHgF9WAOsb8nptPdDlbFezaDJm-uv4ZN_JgXb03FYzwf8Ea7JXj_SCrEw55CIOQrFQPorhL6rMvHh3RcufFW3-k2nwx4WZWULKzqFhVavKSfB3aCzDk6z1iNvCAlX4lCUDyJrpwjYQOqGVvg6_1_6FQLikbcYrVLhrjJLNLIdCDnAK1AsL5TjfLjDXOx32t3oCnNsMxWdIeq0ZCIl07ASwqmG7CwOjYky7PYF7Co5AV3ixbr4EJtfohMKkek5jnOKtoEVc7DJV0tS_deANkloOVFQKq6guiFbRd0tfbl2HTFp8eEVQXC99ULgr2CCAS_1Wl8qhYiCYdOrqpZKd4PgUkxQg2SRkf8CZKd9M3O5UDHugPgPBmy4lBMtpALH_uDK0QSHJSGp5w4G0Co9cwhSvqfpdbnERucq2j3QP1L4R9X93tUYpDX293QUWg3MRxCi-ZNtp3w5rcZbO3QToQXmow_565NjWVT0ymoqDIzhWt_YjqF2Jcgw1jXwpG_Hm39CL48hj6GyZx0DLkPk89C700PHQXHJXFovnWtsLdQJzdWawL0_MMMySdLFhWj-3YdgJj_2BIt1MNNGBL8MslxVxjgboaosp6zAlJRJIjyANOA2CoPFGC-UqjnBTeaCL8KwGagKwN32nXPyApewKTE_w14RxYuzYX8oapqy2YFWOz60O7iB4Prv-F52UJ.MGrhfCZxSJUniH5lyDRAZg&state=G-uF7pZdh7dLnY-OK2UOXiJCVeGmjK0j

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Content-Length
0
Date
Wed, 26 Jun 2024 08:27:24 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Location
http://redirect.gematik.de/erezept?
Optional[code]=<Authorization Code in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
&Optional[ssotoken]=<SSO-Token in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der SSO-Token. Mit diesem kann der Client sich wiederholt einloggen ohne erneut den Besitz der Karte durch unterschreiben einer Challenge beweisen zu müssen. Er ist vom IDP für den IDP verschlüsselt und dementsprechend vom Client nicht weiter zu verarbeiten.
&state=G-uF7pZdh7dLnY-OK2UOXiJCVeGmjK0j
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595250
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0Mjc5MSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiMjNiZ1hkeU1DdmlKQzUxWEVXSXcxaDV6bEtkQV85TlgiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiNWpGQlVsNG14akxzcGdENlFmQXlhSEpkS2lEZTl5cFciLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTc1OTUxOTAsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IldJUlViMVROTndWc1J4R3gtU2kwbkJjYkMyRXNSdE5FIiwiZXhwIjoxNzE3NTk1MjUwLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxNzU5NTE5MCwiY29kZV9jaGFsbGVuZ2UiOiJmdUt1a1lxLURCRlRrOTBjblBuWXhaczlHRlprT212bGZMN3RYSmxZSWNJIiwianRpIjoiNmQyOGRjZTk5ZjIyMTczYiJ9.J4rxI5hXA3SyPiVYxDsgNi1YKz3YrkhV51iL9y1Ut7-pNiEfHIyz59nypNcazlzveakVAq-_I-0y3bTRFFf3OA"
Ein verschachtelt enthaltenes JWT
-}

header.Location.code.value.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390504
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NTA2NyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoienlUeDFncjczYlFCNHFpYnplcjdFVTlLTWh2RHYxaFgiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoid3ByZmkyVjRwV3JkekZzYm5IN3pmYmNJa3ZTRmw1Z1AiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MTkzOTA0NDQsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IkctdUY3cFpkaDdkTG5ZLU9LMlVPWGlKQ1ZlR21qSzBqIiwiZXhwIjoxNzE5MzkwNTA0LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxOTM5MDQ0NCwiY29kZV9jaGFsbGVuZ2UiOiJWWHhGcVZZeHg1THpBTnRBVzM1RVZ1OXZOZjhqX04ybXdHSk9nMXN1OE1ZIiwianRpIjoiMWY2YjA2MjkzNTY2ZmNiNSJ9.PqOpL7D9vk9KtsMWof-FrX3CRDfc7M5MB4z3AudyEM-I8f5_pNuY1H5lagurXzfgcvZubeW04TV9PEeTFaqrkg"
Ein verschachtelt enthaltenes JWT
+}

header.Location.code.value.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : "Test GKV-SVNOT-VALID",
   "professionOID" : "1.2.276.0.76.4.49",
   "idNummer" : "X110411675",
   "amr" : [ "mfa", "sc", "pin" ],
-  "iss" : "http://localhost:42791",
+  "iss" : "http://localhost:45067",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "23bgXdyMCviJC51XEWIw1h5zlKdA_9NX",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "zyTx1gr73bQB4qibzer7EU9KMhvDv1hX",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"given_name" : "Darius Michael Brian Ubbo", "token_type" : "code", - "nonce" : "5jFBUl4mxjLspgD6QfAyaHJdKiDe9ypW",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "wprfi2V4pWrdzFsbnH7zfbcIkvSFl5gP",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595190,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390444,
Timestamp der Authentisierung
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "state" : "WIRUb1TNNwVsRxGx-Si0nBcbC2EsRtNE",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1717595250,
Gültigkeit des Tokens
+ "state" : "G-uF7pZdh7dLnY-OK2UOXiJCVeGmjK0j",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1719390504,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1717595190,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "fuKukYq-DBFTk90cnPnYxZs9GFZkOmvlfL7tXJlYIcI",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "6d28dce99f22173b"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

header.Location.ssotoken.value

JWE

Headers
{
+  "iat" : 1719390444,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "VXxFqVYxx5LzANtAW35EVu9vNf8j_N2mwGJOg1su8MY",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "1f6b06293566fcb5"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
+}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

header.Location.ssotoken.value

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717638390
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MTc1OTUxOTAsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzE3NjM4MzkwLCJpYXQiOjE3MTc1OTUxOTAsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.orjTFzJBO4g2t0DK2ASVbFkLzGjTmp8lwjhkPpn5ffKLoSR35M5vIfKWcJEUQiE0LTD5kJCfafhBsBCyLLpPPw"
Ein verschachtelt enthaltenes JWT
-}

header.Location.ssotoken.value.body.njwt.content

JWT

Headers
{
+  "exp" : 1719433644
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MTkzOTA0NDQsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzE5NDMzNjQ0LCJpYXQiOjE3MTkzOTA0NDQsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.UV8Qj11_4gzqz4SwMsclNCOqjk-Nkd0NlWE_OpNus5t1HKtG0tGj0YeMXKsCuD5qvYJ2eoh_i2YQYpQHTFwKGA"
Ein verschachtelt enthaltenes JWT
+}

header.Location.ssotoken.value.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : "Test GKV-SVNOT-VALID",
   "professionOID" : "1.2.276.0.76.4.49",
-  "auth_time" : 1717595190,
Timestamp der Authentisierung
+ "auth_time" : 1719390444,
Timestamp der Authentisierung
"amr" : [ "mfa", "sc", "pin" ], "idNummer" : "X110411675", "iss" : "https://idp.dev.gematik.solutions", @@ -746,103 +735,99 @@ "y" : "lgJUXP3xPwcoT3PyDi5ILGmZmyrjUIYXqROD0OKrWA0"
Y-Koordinate des öffentlichen Punkts des Schlüssels
}, "given_name" : "Darius Michael Brian Ubbo", - "exp" : 1717638390,
Gültigkeit des Tokens
- "iat" : 1717595190,
Zeitpunkt der Ausstellung des Tokens
+ "exp" : 1719433644,
Gültigkeit des Tokens
+ "iat" : 1719390444,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld" -}

header.Location.ssotoken.value.body.njwt.content.body.cnf.x5c.0.content

X509 Certificate

Subject: C=DE,O=Test GKV-SVNOT-VALID,OU=X110411675,OU=109500969,SURNAME=Bödefeld,GIVENNAME=Darius Michael Brian Ubbo,CN=Darius Michael Brian Ubbo Graf von Bödefeld TEST-ONLY

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Elektronische Gesundheitskarte-CA der Telematikinfrastruktur,CN=GEM.EGK-CA10 TEST-ONLY

Serialnumber: 965736952618175

Valid From: 2022-11-24T00:00Z[UTC]

Valid Until: 2025-05-19T23:59:59Z[UTC]


Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Empty body

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Empty body

23 POST http://localhost:46199/token127.0.0.1:-1localhost:42791

REQ Headers

Content-Type
application/x-www-form-urlencoded
User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept
application/json
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Content-Length
2111
Host
localhost:42791
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend

REQ Body

namevalue
client_id
eRezeptApp
Die client_id des Clients. Wird bei der Registrierung vergeben.
Die client_id des Clients. Wird bei der Registrierung vergeben.
code

JWE

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde

Headers
{
+client_id=eRezeptApp&code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDUwNH0..yxuNSb-FS-tVjVha.ia6V6pGsX8m_gDoBUxGhKUCMubEhDl_2brL-ysigO_CDQ9QK1EkwOkP1whZKSfcUUpb4Za3_rWa8TX0-rIuKCFHAcgQV3cYP7uc8bdffKy1Miv3U7YPygGPiehk0z20xeKjVSlPwCSTbbwdUtqyArZnH9AqSN-iX1TJ0AsfnGW6FM71_tf3omFq7yhAElyfyiZ-1y1glQC_EvbI_gNEwKwL5hoeXt4Q7yX1EbM35oPuZX4DKpzfOWIFJOMCP3IXHJVofEHj-cfEs9Qy4G8c3Z8zVGsSkUi5BwWbF7nDMCcRfBtb6rNGCKcH8dIhLq1fJaJ9kw9afWziNULK5O_bXCVKFf7GLufyC_wmMlhg9I6r4dOsFSnOLyKNZNPJNWmmJ9FMWgJs4wQ-DPjrBPEj48wNWfHn6LjaNc80Jn-8rZwIATnMIup4HxEL77UKLHJcPD_sKHJnjXwDRJ2oEcRIJUtp7HvlOXj1ji1ZwuUb3ytJ2uJmpnGFZU-QtSvj8PqRsbbaXglKED5-GKKcdd3c3SZGsJdvH5EsqA-VZtdMOi752BTld5rvnsHHa5Ffxb1qXUuK3_nEwjn1P30SqM-B9c9G9Bq5Iwn1cZCHs_bTtXwR4VXZRyRv2hygfMx8427fWKHI7XVYoOGr3jMFBbc0SHZ-E5mPE_m3DupZ4rGjwRK1O2kfckqjLRBJNOO8H63lBZwtFyzQLiYiRWn75YsyICy6ljxeajyvpHZjTRG7FeiNguVpADrWBs05Mcer1BhM_BZiQpdze-pOO0Ts4c3TRcn_ZLYN0V4-9IcDenqmrIBlDNcdtza14WI-tx3WbmGpJp4qCQfX2SvtjfOmlxUH6yEzBsJUlGDVlLPG28jfZpZOCpNm2aPs5jBl3Jz-JN9O3KnmlvV06pZHbdDY_aVr19IrZMv6w2WDBdBjEexdUfPJwbgeP1n7nhPS7Cvk0BVEARHPM9CAW6CZDac9hX7rZvklbrobPETwLCJ3MZZYIMKfUe87rCipWzMV40UaoJb21Rey43Djucv1t-AxnMVW5j1Nq_l8cSnHB_Wq1LFy7Uw-KOBXXQLCb3N-i0w4Xi5vQDHDR-LqeIIFDo67nsDCFLr88Ss5onYwnEp9YFIkE1zdl6mPPptwYKRNxp23GNOmQD8XdK88Z9Lu7FT0xhq6DMyQ3wYLFGmQijZqliKXSR0h3bb6k8zapGGNZKUVX1yZZ7WzprXX71C0rK1x2L912wrSCuJ8sEfAigDBF9ECanBfUfb_iivDu52clI1PUFdbmEeJhNqDwBpUVPDnIM2xJcb6QzfqdHqhSVMRl0Kew2_HwTZqenflJhjrHKwhhzRM4D4lQ7940x_6jLrR9JEp4MXpC-VxfdPs-MhTaKAwoZjl8_qXzvRpZzad6MYbJ2UZ7-ei8BRwX0tlV.J3JbOcbyDvq-xc6IUWQgAw&grant_type=authorization_code&key_verifier=eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSIsImN0eSI6IkpTT04iLCJlcGsiOnsia3R5IjoiRUMiLCJ4IjoiVkFCdzRwN0xnLXJsMGU3alZNaVZqM0FldW14Si1LRXktSHhyb2FEQWM5ZyIsInkiOiJlMnhLWEJMQnA5dG9nZ1lSX3NrTTM2RE13RDNBNUNfMEtVRVhzajlkR0N3IiwiY3J2IjoiQlAtMjU2In19..xD5t9Ag_whYlTCZJ.eeoNDzArQ6BjbhjLmpNYp0-T05BrjlpnmLZWnhcp4-f7aRXC64S7VP6TwygptLqbbOqGSE-ec-HAKDVRyX4Spm_h5I1rX4JeY5bm2epmjttjn-c16L6X4ygT3WaPwtEjIbIMA0bc1QaR9oD70uAvgyDCCq0GBy5vYQ.Oup4Y2d843gA4-ti-FhHIA&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept

23 POST http://localhost:43371/token127.0.0.1:-1localhost:45067

REQ Headers

accept
application/json
accept-encoding
gzip
content-type
application/x-www-form-urlencoded
user-agent
IdP-Client
content-length
2111

REQ Body

namevalue
client_id
eRezeptApp
Die client_id des Clients. Wird bei der Registrierung vergeben.
Die client_id des Clients. Wird bei der Registrierung vergeben.
code

JWE

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595250
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0Mjc5MSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiMjNiZ1hkeU1DdmlKQzUxWEVXSXcxaDV6bEtkQV85TlgiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiNWpGQlVsNG14akxzcGdENlFmQXlhSEpkS2lEZTl5cFciLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTc1OTUxOTAsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IldJUlViMVROTndWc1J4R3gtU2kwbkJjYkMyRXNSdE5FIiwiZXhwIjoxNzE3NTk1MjUwLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxNzU5NTE5MCwiY29kZV9jaGFsbGVuZ2UiOiJmdUt1a1lxLURCRlRrOTBjblBuWXhaczlHRlprT212bGZMN3RYSmxZSWNJIiwianRpIjoiNmQyOGRjZTk5ZjIyMTczYiJ9.J4rxI5hXA3SyPiVYxDsgNi1YKz3YrkhV51iL9y1Ut7-pNiEfHIyz59nypNcazlzveakVAq-_I-0y3bTRFFf3OA"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390504
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NTA2NyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoienlUeDFncjczYlFCNHFpYnplcjdFVTlLTWh2RHYxaFgiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoid3ByZmkyVjRwV3JkekZzYm5IN3pmYmNJa3ZTRmw1Z1AiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MTkzOTA0NDQsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IkctdUY3cFpkaDdkTG5ZLU9LMlVPWGlKQ1ZlR21qSzBqIiwiZXhwIjoxNzE5MzkwNTA0LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxOTM5MDQ0NCwiY29kZV9jaGFsbGVuZ2UiOiJWWHhGcVZZeHg1THpBTnRBVzM1RVZ1OXZOZjhqX04ybXdHSk9nMXN1OE1ZIiwianRpIjoiMWY2YjA2MjkzNTY2ZmNiNSJ9.PqOpL7D9vk9KtsMWof-FrX3CRDfc7M5MB4z3AudyEM-I8f5_pNuY1H5lagurXzfgcvZubeW04TV9PEeTFaqrkg"
Ein verschachtelt enthaltenes JWT
+}

body.code.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : "Test GKV-SVNOT-VALID",
   "professionOID" : "1.2.276.0.76.4.49",
   "idNummer" : "X110411675",
   "amr" : [ "mfa", "sc", "pin" ],
-  "iss" : "http://localhost:42791",
+  "iss" : "http://localhost:45067",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "23bgXdyMCviJC51XEWIw1h5zlKdA_9NX",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "zyTx1gr73bQB4qibzer7EU9KMhvDv1hX",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"given_name" : "Darius Michael Brian Ubbo", "token_type" : "code", - "nonce" : "5jFBUl4mxjLspgD6QfAyaHJdKiDe9ypW",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "wprfi2V4pWrdzFsbnH7zfbcIkvSFl5gP",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595190,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390444,
Timestamp der Authentisierung
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "state" : "WIRUb1TNNwVsRxGx-Si0nBcbC2EsRtNE",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1717595250,
Gültigkeit des Tokens
+ "state" : "G-uF7pZdh7dLnY-OK2UOXiJCVeGmjK0j",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1719390504,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1717595190,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "fuKukYq-DBFTk90cnPnYxZs9GFZkOmvlfL7tXJlYIcI",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "6d28dce99f22173b"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
grant_type
authorization_code
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
key_verifier

JWE

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.

Headers
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
{
+  "iat" : 1719390444,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "VXxFqVYxx5LzANtAW35EVu9vNf8j_N2mwGJOg1su8MY",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "1f6b06293566fcb5"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
+}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
grant_type
authorization_code
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
key_verifier

JWE

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.

Headers
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
{
   
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
"alg" : "ECDH-ES", "enc" : "A256GCM", "cty" : "JSON", "epk" : { "kty" : "EC", - "x" : "YDt7wxEpkyleXEcNtFIbaDmhxSqCNuqSOhvbnFovtME",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "UFwV_0SUocsP4Ov8xTgx_eBnIZdPc7lqTlLY5TAhuuY",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "VABw4p7Lg-rl0e7jVMiVj3AeumxJ-KEy-HxroaDAc9g",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "e2xKXBLBp9toggYR_skM36DMwD3A5C_0KUEXsj9dGCw",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).

{
+}

Body
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).

{
   
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).
- "token_key" : "UIt9K3ARDstUumGqkFxRNAYLgxahMlSpr75UXkrZn64", - "code_verifier" : "eWr-IopmHruGNeRALOoALV_qTgLuzVKBrn8cm8iUAxo" -}

Encryption info

Was decrypted using Key prk_idp_enc

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.
redirect_uri
http%3A%2F%2Fredirect.gematik.de%2Ferezept
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.

Encryption info

Was decrypted using Key prk_idp_enc

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.
redirect_uri
http%3A%2F%2Fredirect.gematik.de%2Ferezept
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.

24200localhost:42791127.0.0.1:-1

24200localhost:45067127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Date
Wed, 05 Jun 2024 13:46:38 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Wed, 26 Jun 2024 08:27:32 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Date
Wed, 26 Jun 2024 08:27:32 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxNzU5NTQ5OH0..-_tWoYvEMUwX03QD.ybdoNCB13b5qTymwsz1iKEaHaIWLDp_n5G1HhTX67GaliHtc34cK8FLAnODzPJKPidRsU190zuBosM_8b1RqKv8WE98m27sCneG92sOp8fOgWYjAkB8wtfgayE_kZT-Cil4QOX0Ptn-FMnrx1nQNbEq7_n251FZlr2-bavKJz79-75dwCQwVsIgotZrXm7nBTv2UixkI34YvQOkCdK3miQoy9CaPjcAsshwxlcULXptJ1UL2Bhx4I8Xp_Ei3yRqU1UCk85n1o89_yUbtwFkM4cZ0b1GbMmhLPrwkAIzwEl7vxz_gHR9SjJXODV1ty1lVqBFVKI5ll4F2ovx3QMgNcMb3ygWw-EZt2HQgdB_JNApP8TroeM6n-p4vSp0yw6LLL5RDIJNLoQXbCGZKMIDjiWfOWuSGqymmabGfYtNSNmzww7VZ0xw_36du3nAJhVtaKVlXtI8tY2XBtP7pDx7dX4cGzYFdr57tOHBx0TEz2M9Kbqa7tNjELPq7LR_ZgFgi5Wz8MxoiZuagsHmRA3XAbzijnWuHi9x6upTdeDAfQKfOeKGOc3Nh4T-6UCoWQUWdO12nrdesEEraeQwF4hre8L7D5BTe15qmth65M4UTLTkxtVQYEr3x5xUGNn-xUiQsoGy3vPx4xA8hkR1TnphzDgeiAKG2w65aMMt28-5ldGrYby_RkLUJJMSxYf6x8VbssEliYLI4eHveditEG4ZNFpVZczXxpkvGQZGuR6lSLiHVK90f5V0RSYtvOhPfAbVzruFpvsnvV60LWN0i2agJPhuBY9YER-DSxi6EwzKNBQdtZ2N3ttLNHtm8OrI2k_AuwpZQlCOYAWktpT7_oxu0zmAPmowt7JQcF28GisHy_v43L4t0QUj26Zm5Ssg7vDti5kDZb9lTAe6gJZb8JkwntmaJdnG6zRY-soH-y_oXU_OlJNjjFs0CBNVfnkMa_l513vMlqe1c2R5zCgwcKPpqJFdDfJ4rPtbHubBBQS1swNDHwrc8tcMYgZVuJP3GRbSGcIpDsICriKFDfNFkB00eaEuwpZD_YhlTKPdtJ_Pna4ZEfkv1o3Z66siQ7gwJ2xL8lhYFapUpNP-dmp3XrB6uSJsvEQ4W3juMNsfkjX3gkPO93HkufJ275MGNJ6nR5n1zOT0nXTybgm60WQ4BOUG1LyLB0jHCeYnTPCOM9lU1iAG5BVsBV4icS8p8Ad7k6weY6zA9ej1Uw-HbFE2yywUTT9w.NL-tmEoXiRMslZ8PU_bemA",
Das verschlüsselte ID-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
- "access_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxNzU5NTQ5OH0..rVd9F0zSsQkS-vGQ.XpDcNAkP7VUVYxsJlPPuTaJ7lR94ZRFhroALuV1h-pNu12V1vnALnhIILObmxADMBUu-o4yoJAWDvc9VjeAXhz_HVrUggq6R-kvtJhb4es7HYzFUAoj5lJvVat4cCMzBIips5QONgwZZ3Vu1igv5netr9PL-d-O-u9caF-oKMZLrHIB_Za2SKLs7MDYqBvBbQWm9ChYPUmGqM6J55eXXLp5_TjFensK2i8wp3YD39tX7ogmrsqu8np2j5L6BqwQWtcvZ9kqmEYyrfM7xJaUINGnQ2S8441ZSJFn71RlqwP-fWo7eBZnLJ1TMthueNMc-5lXg1CHvsk5dp6kDmsFO3bXKgdxOEHuwiqAl_bH0pMav2Fpz_B-P7FGAVaqJ2m8H4mQhiGWtIk_8sx3ND2MDKbJUsvNl5QPhqWc7Xrk38fmK6l7ekOMfGGRrV1z58LTs-W1a9wyw9z-u8UyszLR67Tpy_H1-X_6qvoH-_UBTZods_mMCJhbeJVwsGwg-Bm9fU_w26FSOdlUgbSXb6vbQi137RzEnHRDAuUrSuDYkyySlf6vbW1yRj4bWkrJXPoFwAh855qoR_tkET2tREdT9iOAgauGKD8Th9XYa2A--Up_89a8eM6yPB4uE3I6WexAYHJ6Fnu4Bxl9ZV7q9Kqy0dRSTXtQ6XnrHZ16Zfh8wWmIROIerec_Pd3hFcWX7xUpFMEkYT80oirUfZczxH0K_MR-tuD4vZLZH1g4Kw-pWUjbs5IpQ_Q_bgnAKUIeUM1GBCyMHnxV7k_QWPDu4H0udUeccOPm7a5KCssbqT0QePmESvqeT2hlPG59G8AXmx6fpjZIRsEPwQc-Vl_zytjdW_yhZQ309VtexyOJLfDlkuLui8cHHxdjQF6_-hPe5bG-IgBIRAUWYdcijWr8DvnLvq4EzL-lxN6oIIrzOf7Dtfnt040IGWwLS1vyFSyC9tHgyjordECs8m1nEGCCuznZY20QL6CAnAR2yfq14ZSA4M6p4ahTa0BoC_AuDqMjxNRJDxgEw45OerfcXwyyMl9z23P3aueWJpJnQOLo-EQ_gAtnpcF36L7SDNgHaYjZOTi7vxpqEixhm1jsIPlucHfgXUvMnwaxNR1fFsiLyXBZY8qE-hDt6YYG3X4gjanVBF1P_zt80uZUwlKZcrwR_TnyYHLJBD0KTz3luloaCQ3yOcPHG5U18ksi0z0UhfqAdolKe99gqwVUk1DbskMQs9vnMLn11Oe_trZbrHql8J38O1ejxvkrt9Je2VfM.mK_l8chMm5hZ-CFv6uFsLQ"
Das verschlüsselte Access-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
-}

body.id_token.content

JWE

Headers
{
+  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDc1Mn0..ERWQbZqwaEnKYGQ_._rNGFyUmEkPf6IYuseEDpb-P-k82wICKrpac5pWhDAyAjmDIl8GVsUoHWz_jDMg_Bsk9G1JX3iydz8pfF4JfMAhq0gRWZXB2-BrZUGwRaJ-Hb1VQveoUL70xxAAh86-KsSkWMJj2zArSsq3xBarGg_VVJn4f5Dx1yW3cznoM2VJVML1qWl8nKvOGUFHeeZKctHXFD2j0Q8RrH-eVdAnAbIMmFJE4EGr3XTLuQteAmMRY70TMspBSdMEkBGxs5bkoet9RaF7eZ3WZsjYTRD_KsgT-6XXIl_VGx03SfmeyxFmjRflzTTrBaw1BOpelYlDMlL-Kz8AUuNQibe2BNUPcrTA5YJmmEGLMzMIzF6mHijE3_YQSz4TOemErZjBqOvJr8Oqp1GDIruFhF2USEjvQLggIkTjzCmM58h8CvMi7l3cUdJu-ESZSrxfFS8wygCqmZt3iuEllF9XW3ZG5QEcyZD00dEATsQ6LE-a5r73rEs9ITuR5G_hnXDGGy5eYL2Osm8BGsMO2nIpSSMz3duxL36Ul1aD_BOWHrsrqJaskRwPc9gw9wyQkLt0yYpCFD3-ndfDGv7FCYwGdks6bcCYOU_vPL3P3sltukNO4SFo2nFgrH4CA47RtEzBix_1RVnFDiv1EC42YFrzPQ1SCGRSHMRlZcMhGQwSI0yNnKXdLAbvbnmXtKuWv81321vMY2XGVSMFBWPkbZ4JWr2rZ7jgQf0ZFn3045tg9t7X6oQqU5uHqKo7IcYQWcNXUJt-sbE6RD-PSRD4qNRgyAPCTnFYDUXtb5AR-ulP2VBN4oHnD8D_JI5d8tqYQ689LEkbNaJlAB7mapHj69HDj2Lb4CJAApf-VMZP8Jd9ghKQ5RtwIDKl4bEJuYwnnJAmmCvTwCeu8HTAv8k07Td3q4rLfHxA-zDEfvbS_9S7GAdsef5bImJNhoAbty0ylKOen2MXWBTkWHwmurnyv4D82OqT1vgVsk2VIp2ZnAKI3GsLwyv3Ntza_-v-5AoYgO_du5YMdibP7Kp1Ein_jcQm9PVfKFPl1bFKfrnoncJ6BZAjp2fznc77FGzcV2v7W2DWHOC4BT13yjH55NY7brbOO-OZjK4wT0WwkCgU1DlH5cNM8PtVOuRTV1Efos8ui5NwgofBXjN3l84MxKHfiCc6CIYHWFm9bL9Bxptea4ozFuBFac8TeQcUrl8XV9_rb9QjHpfGUuTYcD3aD4ic1ocFZVG1l5Y74xf0.GwiL52k-H8X0YjaOKirfUA",
Das verschlüsselte ID-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
+ "access_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDc1Mn0..-54uoGDLUdx1K8Es.mTyOOgOlemr9sAAml77AGwWsDqNe3mffMV0gCGMqTpIk3-lGC82taQWJq75rklbUgfom90wEPJy43faVCW6wNd10Ic9M4nCTct52NIA6PavIXeMO77ThSzzX8hdhudE7DR3dWvIucOnC9Snk_f3t8umbDtPDsUTskKM4I23ZTfPQHk4HG65EqWEsDiN9jgYFUUUEIBDjrRNA1zoeEigM_I9Q8pFEhHLS2bleWg-B8f1QOODTmtYRVGMHrS9z21jI_EUrPJ2yhjsrVuNIUC0iXZlbOdIbefbH2c8f5DDzj8X_7TZnDm1lpTNJ-eTgnQvdrX77xDfTOotHxXwIhUHfbPxpf-yu783fPTETGYVb-iXg_yqXFLKw95DHp3rok5BshH2ANi5rVShE3XABLv_TkbBxCo9hjz7WE5ds3upW1xc-NNH8ZNE1eauUGejROQSwJ1gCJSE0e00OlYv_QNuH4PjiOciJTH6KgrCRBorjIsR7sWDgb4x0L1HBTcTh3VSaIqoPAX7iMmOpVwIqEc-e3CMo--7pj-Ep3oEr-Dy38hWlXOeME9ttZmnzquEcsVxWT34A3Jej0Ku5abwNX1nE26Olk8WPOnmMvyqlJG7YkqCjDBBAR5rUyiApgH8J51_yayy23ZjvqxFaeDN4l3IZSvgffI_Vfvd7JL7HONeceCF0UaEZxQ_53zZnrahj9Az5HLfhhExBlqRv9BbBxYObJgncId0N-C5_2LXa1Mrqa_WRz0fB1s3emCNG_F4jfASrwa4CoQDs322rxE3PKYFSXc7fK72GIL7HdEFJu0K9qwdoGF6e5PE_H94yqGycwV9cXXexjmb2w1UsFvTMHI0O_KHPf5gf-gd0pMk3oZEr77wB3AxTjuemUNJ7YChLeLsEQZH4d7W4YJtUFm0qzs47fJ8cgaqslXK8gEbIghrJsR7KVIcs9qqQNwSTTPiNPCH4D0VYPb4p4xUBREzrfxFtIR7Pmv290-OelocMNm3V4r932hnLyrBRLJNEDd9kBcNEZ7IEAVa3gssZq4HFBEE-OSoeTifY6POx8VDm0f-kz5SufDGSHX1Hpt3w2KdSIZ6oluD0H57KSsEx59TIXpbwMADzurlVGt0pXd7HUd2g3T5rTuDsT_o44fslzqMKppbVK6x4G_Dl7shMJW_CK_gOWzGOAJMOFX8RMaThK8UwqRLzfflGUaoHMASu9Rdl6h8uPdCOQEorD_7f422lvX84ihmRiAn9ixwwY3FTgQbUynGOh5ECII48kd8.egrtPcPazKE4Y8M55qzxJw"
Das verschlüsselte Access-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
+}

body.id_token.content

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595498
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoidjI3M1lVeWdDaUJCMXhZalItZVB3dyIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoiNWpGQlVsNG14akxzcGdENlFmQXlhSEpkS2lEZTl5cFciLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcxNzU5NTE5MCwiZXhwIjoxNzE3NTk1NDk4LCJpYXQiOjE3MTc1OTUxOTgsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiN2UxNjg2OTU0OThiNWJjMSJ9.D_UKF7M8Khxk1WkkR4jThNsUAHr1-WREnrY66rOUmQ6ASFy9r558dfl_YNcabfIPdkkFOw2UH4FndW18vNFMxw"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390752
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiVmZ2cnAyT3RtLU9IMkFuREFlVHE5QSIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoid3ByZmkyVjRwV3JkekZzYm5IN3pmYmNJa3ZTRmw1Z1AiLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcxOTM5MDQ0NCwiZXhwIjoxNzE5MzkwNzUyLCJpYXQiOjE3MTkzOTA0NTIsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiNDQ3NTZiMTRlM2ZjNjA1YyJ9.QY0pwNUs1TmUjtTKIXX1-TVm44KzfBroDwwCQbtnxmEuIItrDLVzp-JgQxX019yXNRaENf1b4TtpA47ynyqO6w"
Ein verschachtelt enthaltenes JWT
+}

body.id_token.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "at_hash" : "v273YUygCiBB1xYjR-ePww",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
+}

Body

{
+  "at_hash" : "Vfvrp2Otm-OH2AnDAeTq9A",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
"sub" : "p2h-RT6EERghbjP8R1wnyz8k4xhOhwbesJRP0XnuSmo",
subject. Base64(sha256(audClaim + idNummerClaim + serverSubjectSalt))
"organizationName" : "Test GKV-SVNOT-VALID", "professionOID" : "1.2.276.0.76.4.49", @@ -851,27 +836,27 @@ "iss" : "https://idp.dev.gematik.solutions", "given_name" : "Darius Michael Brian Ubbo", "display_name" : "Darius Michael Brian Ubbo Bödefeld", - "nonce" : "5jFBUl4mxjLspgD6QfAyaHJdKiDe9ypW",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "wprfi2V4pWrdzFsbnH7zfbcIkvSFl5gP",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"aud" : "eRezeptApp", "acr" : "gematik-ehealth-loa-high", "azp" : "eRezeptApp", - "auth_time" : 1717595190,
Timestamp der Authentisierung
- "exp" : 1717595498,
Gültigkeit des Tokens
- "iat" : 1717595198,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1719390444,
Timestamp der Authentisierung
+ "exp" : 1719390752,
Gültigkeit des Tokens
+ "iat" : 1719390452,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld", - "jti" : "7e168695498b5bc1"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

body.access_token.content

JWE

Headers
{
+  "jti" : "44756b14e3fc605c"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
+}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

body.access_token.content

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595498
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcxNzU5NTE5MCwiZXhwIjoxNzE3NTk1NDk4LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxNzU5NTE5OCwianRpIjoiZDkxOWYxYWY4YjlhYjI5YSJ9.TTZuFLviacmbTEOcJ2tC4Y1XI4M2Vj9gJU0IPufq3m0kLiGWEum3WFlBVFEoJaKZTfbOGra1xgc0d1w2L7pkOA"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390752
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTcxOTM5MDQ0NCwiZXhwIjoxNzE5MzkwNzUyLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxOTM5MDQ1MiwianRpIjoiMTcxMWVkNjUyZGJiNzVhMiJ9.RRV-tvIw391e6y03TOPXao5aczjwyvfLCfTRp8Sa5wspO2hNFxxna_D8TErVCuBXMDZUsIUKXWl-tZNCP3pE5Q"
Ein verschachtelt enthaltenes JWT
+}

body.access_token.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "at+JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "sub" : "p2h-RT6EERghbjP8R1wnyz8k4xhOhwbesJRP0XnuSmo",
subject. Base64(sha256(audClaim + idNummerClaim + serverSubjectSalt))
"professionOID" : "1.2.276.0.76.4.49", "organizationName" : "Test GKV-SVNOT-VALID", @@ -884,38 +869,34 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "eRezeptApp", - "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595190,
Timestamp der Authentisierung
- "exp" : 1717595498,
Gültigkeit des Tokens
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390444,
Timestamp der Authentisierung
+ "exp" : 1719390752,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1717595198,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "d919f1af8b9ab29a"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

25 GET http://localhost:46199/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=J1-9KIYmWV7lPC7dYoUDBQl27Fr1wlmz&code_challenge=yCZyavYoDDZQA1K6SqTPXcbRJwOzPkMXh--c5J3T8XA&code_challenge_method=S256&scope=e-rezept+openid&nonce=4Y-9cD3jEbw_5YDI1-T_e3xvo1TJssob127.0.0.1:-1localhost:42791

REQ Headers

User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept
application/json
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Host
localhost:42791
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

25 GET http://localhost:43371/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=gbzyFzUJfbQ5-QTHwYjych8OsHrSI7k9&code_challenge=tisnEabT6Mu9i0jdSxfjBJVjB5a-pEIwE543lNk-llY&code_challenge_method=S256&scope=openid+e-rezept&nonce=dvVItjnRRalmgSR78YmZR5Et6JUP6DAL127.0.0.1:-1localhost:45067

REQ Headers

accept
application/json
accept-encoding
gzip
user-agent
IdP-Client
Empty body

26200localhost:42791127.0.0.1:-1

26200localhost:45067127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Date
Wed, 05 Jun 2024 13:46:41 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyNzkxIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJqUEtwUjEwX2F2VHBTRURYMzdTMHQ1SU1tYkozRk5oRVlwcHo2YUJaRlZZIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IjRZLTljRDNqRWJ3XzVZREkxLVRfZTN4dm8xVEpzc29iIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJKMS05S0lZbVdWN2xQQzdkWW9VREJRbDI3RnIxd2xteiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTc1OTUzODEsImlhdCI6MTcxNzU5NTIwMSwiY29kZV9jaGFsbGVuZ2UiOiJ5Q1p5YXZZb0REWlFBMUs2U3FUUFhjYlJKd096UGtNWGgtLWM1SjNUOFhBIiwianRpIjoiY2MyY2Y2NmYxZjZhYzFjMyJ9.IwBm2rrULfuvHNT6geQEtg_gp4TG170YXvSHW3s7VaRmTn1IRgdlQZwF05TgA6-ujwOeCRhx6-g7n0wH45MEkw",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Wed, 26 Jun 2024 08:27:35 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Date
Wed, 26 Jun 2024 08:27:35 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1MDY3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiIxOVpZRFpxSmZsMTRNcURVNTR3R2dtcHBlendueHVMQURHQlJzd2txOFJNIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImR2Vkl0am5SUmFsbWdTUjc4WW1aUjVFdDZKVVA2REFMIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJnYnp5RnpVSmZiUTUtUVRId1lqeWNoOE9zSHJTSTdrOSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTkzOTA2MzUsImlhdCI6MTcxOTM5MDQ1NSwiY29kZV9jaGFsbGVuZ2UiOiJ0aXNuRWFiVDZNdTlpMGpkU3hmakJKVmpCNWEtcEVJd0U1NDNsTmstbGxZIiwianRpIjoiY2NlZTliZDI5Y2NjNDdlZSJ9.YYGm4r5fDuPTT7Fl2s39TB3Jo3lLCRJQdXGHiHrhu8ZZiXkRop0CJJP8fl4Wvw6N-5PMQcH9V36bgQ97ssPs2A",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
"user_consent" : { "requested_scopes" : { "e-rezept" : "Zugriff auf die E-Rezept-Funktionalität.", @@ -930,55 +911,51 @@ "family_name" : "Zustimmung zur Verarbeitung des Nachnamens" } } -}

body.challenge.content

JWT

Headers
{
+}

body.challenge.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "iss" : "http://localhost:42791",
+}

Body

{
+  "iss" : "http://localhost:45067",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "jPKpR10_avTpSEDX37S0t5IMmbJ3FNhEYppz6aBZFVY",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "19ZYDZqJfl14MqDU54wGgmppezwnxuLADGBRswkq8RM",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"token_type" : "challenge", - "nonce" : "4Y-9cD3jEbw_5YDI1-T_e3xvo1TJssob",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "dvVItjnRRalmgSR78YmZR5Et6JUP6DAL",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "J1-9KIYmWV7lPC7dYoUDBQl27Fr1wlmz",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "gbzyFzUJfbQ5-QTHwYjych8OsHrSI7k9",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "exp" : 1717595381,
Gültigkeit des Tokens
- "iat" : 1717595201,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "yCZyavYoDDZQA1K6SqTPXcbRJwOzPkMXh--c5J3T8XA",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "cc2cf66f1f6ac1c3"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key puk_idp_sig

27 POST http://localhost:46199/sso_response127.0.0.1:-1localhost:42791

REQ Headers

Content-Type
application/x-www-form-urlencoded
User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept
application/json
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Content-Length
3992
Host
localhost:42791
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend

REQ Body

namevalue
ssotoken

JWE

Der SSO-Token. Mit diesem kann der Client sich wiederholt einloggen ohne erneut den Besitz der Karte durch unterschreiben einer Challenge beweisen zu müssen. Er ist vom IDP für den IDP verschlüsselt und dementsprechend vom Client nicht weiter zu verarbeiten.

Headers
{
+ssotoken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTQzMzY0NH0..VuHDhJymXXpz3LoY.RNVhWPlbs5USpfsBK7Bc82GqwVGfNB6vMGqXXM_xPYPtasM1_lnmaxl-tD1eulkmpnncaXVkPJ81OAP6oZWEYAympZh5eLJskqyYBAegtjclqxzDYoIFQiFaUd4Ht68YdrBjkJkBIYxhAcnqvKVyAKKa5QZIW8O-QeFY8K9TeZMLMd5txzo30VpSuyMwVn8pEaHUAFa8S_ziAZ8MzrfUuslYJk5HQBPRQm1hg_Agkqyad7RWmEBJr9WjA4IrWn9m0JZufD0TxlIlJnkTfqkSLnD-kELn5CGk27sfqmta9aYASLgEaxfN3LMisJfLgvtrxb5sR2736hc2bNbcblACi3j8Y4LagPsaXKyx2aUNMaaJNxAr2VFD4YV3QDgTp51T-4RhjTMwgZB9BEnLUhxa1g8ePsqF_5Loa6dEk5Kl7deBOsgQ3UVF0HHvskVI6vjPIt6hpjhlsC86ovY34AxDurQbsD1FM9JA-WpJvikL32VLYcRq2xtUCVFxdMeOoJAxWavsTFZPvpba-N5VjrJ3OcrgfZc_RqW500wcMDPixMcnQIGxxvX5Ke8eX8CVKbqQ5Z3JdrVXb2aLBYBpWXAq79leNnh4ISf3UZ10hM5p3tkL-XVFYjIVkbLIVr1rgJzlDrRxLRlZZjcFeQGFYn4G_emjx_voJgP8Q7kGdQkCZw-kgMNk_iT85Q6IdY8_KqSzc7aoJTVETAygyUoJPgc8Yq5QNIcayCm_-ucFCDo_G0xkyB3HrZK_aLMN8nPoZvaIcl1UWaAqUq_duV1Cd63h_TehBd3gHLh4FgPLfpTdf2VcK43rNddEAND3Pvwr1xYtn3nof6MGlZ0035SqJCUt0-wceceMXx-aLBUGw7Ov6pxacTbTwTbZsRttZ_7TtxQtQyPFMaB2et-Yd9x0Egsq_y8Rh5R2hxXQi5xuNmw1CxpGgLpOyrU_MqQsA7tjWt97Mhc87YKtxsWWFAy4HKezeQvNHFcn_QZ3VgZmM7ldvuK-aigNwN11wiRy_H3tr-p7CwKnwop3ZT3uhcMpZrig7h7JT7Xla8etUuyK5-6arv75v86ERJxbOBBJCIiR9ls91DjiQH9hAeqEitxEYxwr_W1mcEXtvMA9XGBMe6wKYPmxOp27YSdlFrbo7jM0dNF53Jbwz4rbLBoDXPMfKnnFcUE9d-_JijIC6K5DRKuy8wY7ntFI4m6s5orIvAMyHOpZokRaYI_K3DCsildiVeTpU1nH567cgPNYP1nL1IDHam077gNIqycbDMbNbtIli9cJ5YHYA95qajAh8CxIFQ1aQ7IJU21CtHiXIsC6ONuyT68UnXHwGlFlEuAOVHceus6TfCcUZJHfN3aAOmPrMbkck-XDmqA5JhJkGXo2ewjkcNyT6y8FY1dxGG4saZANRx8sm3lrd6R-DvkZjtjKaNc0-9LzjD-deqVVIJ1TeRV5uQzg4k-BCaEk0mpRnCjYk5iN9dBQZPXD8qoeU9NkvWYLzor5sMpDk62J-Q8R1by8oI72_Z6K6cmZiUe7mcdeQzGhtvT9_f6C4mLi2ma3KzqpVLD0-gNlU5I8LzY4VxmIz9wN1XeJhc4d5emqup_dtBG_Bqdy5kXXumUJBLAQ6Ix8liB1RGPTgFiaUz_8zxDcnbpvyO7SJtu9pQMlLgtbcduAI7oTxv_XANdMu-dobpa-RhTy4OOavJHnge__UqgnfjX_mw-2EoifMgyHAC05XJl1XdUsNuqK7OytRWC5ZKbCDNAWDgqrS37TYTF4xJVW7jS-E4TPmlpWNqe0QiVz80nKe3xYL3TeGefb4awC3rSUXu8Qkw2EYJkpc0UKHSszPGQeV0582l5dCUz3oIhzymv06tBc-hVaCqx5kDcOtCeijNioD3hpPNfEVsM26gqY3fdDP_7TYdaXOB3MTMyeTnpdoTZRjt_AwNEewn3umzheNHgY2-WHhsfnV3Rr1br5--ByClS5oXyBqegCP0Zjf0TdopwtXJ50B_vWXO2gGOL7sHp14wEXLr5bwRPCECBOYDkv4NpFGuJcJx0p0OShmrm5R78QPiWyIUfujOTeLUFKQ-EfqHF4i9_gWHoOCAarpTSM7pxIXJ89RxfuHBTsjcuqRgej5ORacXBWMIG9DA4OJZWtk6OEQwgpixmMsYqkEsXzYkvO9Jm6Sw6kYZGE0JGEaIme42A7fhTvbOk_K3IwXIpW2d-XKTSe4kRUcD2P0QFBQ1yAfuHnJ9JDhaAhfYhM103__AMMBRsRu0h0DIPLYaH1jm6OBK1kQFiXYUBfgUvxlQILi5_tXbx-zLC4Lce6fNFzd22aOdXBqzbRIyt7owrAbF3bNEeaKax2uHs6xYNCu4H-Bus7bhHgF9WAOsb8nptPdDlbFezaDJm-uv4ZN_JgXb03FYzwf8Ea7JXj_SCrEw55CIOQrFQPorhL6rMvHh3RcufFW3-k2nwx4WZWULKzqFhVavKSfB3aCzDk6z1iNvCAlX4lCUDyJrpwjYQOqGVvg6_1_6FQLikbcYrVLhrjJLNLIdCDnAK1AsL5TjfLjDXOx32t3oCnNsMxWdIeq0ZCIl07ASwqmG7CwOjYky7PYF7Co5AV3ixbr4EJtfohMKkek5jnOKtoEVc7DJV0tS_deANkloOVFQKq6guiFbRd0tfbl2HTFp8eEVQXC99ULgr2CCAS_1Wl8qhYiCYdOrqpZKd4PgUkxQg2SRkf8CZKd9M3O5UDHugPgPBmy4lBMtpALH_uDK0QSHJSGp5w4G0Co9cwhSvqfpdbnERucq2j3QP1L4R9X93tUYpDX293QUWg3MRxCi-ZNtp3w5rcZbO3QToQXmow_565NjWVT0ymoqDIzhWt_YjqF2Jcgw1jXwpG_Hm39CL48hj6GyZx0DLkPk89C700PHQXHJXFovnWtsLdQJzdWawL0_MMMySdLFhWj-3YdgJj_2BIt1MNNGBL8MslxVxjgboaosp6zAlJRJIjyANOA2CoPFGC-UqjnBTeaCL8KwGagKwN32nXPyApewKTE_w14RxYuzYX8oapqy2YFWOz60O7iB4Prv-F52UJ.MGrhfCZxSJUniH5lyDRAZg&unsigned_challenge=eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1MDY3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiIxOVpZRFpxSmZsMTRNcURVNTR3R2dtcHBlendueHVMQURHQlJzd2txOFJNIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImR2Vkl0am5SUmFsbWdTUjc4WW1aUjVFdDZKVVA2REFMIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJnYnp5RnpVSmZiUTUtUVRId1lqeWNoOE9zSHJTSTdrOSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTkzOTA2MzUsImlhdCI6MTcxOTM5MDQ1NSwiY29kZV9jaGFsbGVuZ2UiOiJ0aXNuRWFiVDZNdTlpMGpkU3hmakJKVmpCNWEtcEVJd0U1NDNsTmstbGxZIiwianRpIjoiY2NlZTliZDI5Y2NjNDdlZSJ9.YYGm4r5fDuPTT7Fl2s39TB3Jo3lLCRJQdXGHiHrhu8ZZiXkRop0CJJP8fl4Wvw6N-5PMQcH9V36bgQ97ssPs2A

27 POST http://localhost:43371/sso_response127.0.0.1:-1localhost:45067

REQ Headers

accept
application/json
accept-encoding
gzip
content-type
application/x-www-form-urlencoded
user-agent
IdP-Client
content-length
3992

REQ Body

namevalue
ssotoken

JWE

Der SSO-Token. Mit diesem kann der Client sich wiederholt einloggen ohne erneut den Besitz der Karte durch unterschreiben einer Challenge beweisen zu müssen. Er ist vom IDP für den IDP verschlüsselt und dementsprechend vom Client nicht weiter zu verarbeiten.

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717638390
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MTc1OTUxOTAsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzE3NjM4MzkwLCJpYXQiOjE3MTc1OTUxOTAsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.orjTFzJBO4g2t0DK2ASVbFkLzGjTmp8lwjhkPpn5ffKLoSR35M5vIfKWcJEUQiE0LTD5kJCfafhBsBCyLLpPPw"
Ein verschachtelt enthaltenes JWT
-}

body.ssotoken.body.njwt.content

JWT

Headers
{
+  "exp" : 1719433644
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MTkzOTA0NDQsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzE5NDMzNjQ0LCJpYXQiOjE3MTkzOTA0NDQsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.UV8Qj11_4gzqz4SwMsclNCOqjk-Nkd0NlWE_OpNus5t1HKtG0tGj0YeMXKsCuD5qvYJ2eoh_i2YQYpQHTFwKGA"
Ein verschachtelt enthaltenes JWT
+}

body.ssotoken.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : "Test GKV-SVNOT-VALID",
   "professionOID" : "1.2.276.0.76.4.49",
-  "auth_time" : 1717595190,
Timestamp der Authentisierung
+ "auth_time" : 1719390444,
Timestamp der Authentisierung
"amr" : [ "mfa", "sc", "pin" ], "idNummer" : "X110411675", "iss" : "https://idp.dev.gematik.solutions", @@ -991,168 +968,164 @@ "y" : "lgJUXP3xPwcoT3PyDi5ILGmZmyrjUIYXqROD0OKrWA0"
Y-Koordinate des öffentlichen Punkts des Schlüssels
}, "given_name" : "Darius Michael Brian Ubbo", - "exp" : 1717638390,
Gültigkeit des Tokens
- "iat" : 1717595190,
Zeitpunkt der Ausstellung des Tokens
+ "exp" : 1719433644,
Gültigkeit des Tokens
+ "iat" : 1719390444,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld" -}

body.ssotoken.body.njwt.content.body.cnf.x5c.0.content

X509 Certificate

Subject: C=DE,O=Test GKV-SVNOT-VALID,OU=X110411675,OU=109500969,SURNAME=Bödefeld,GIVENNAME=Darius Michael Brian Ubbo,CN=Darius Michael Brian Ubbo Graf von Bödefeld TEST-ONLY

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Elektronische Gesundheitskarte-CA der Telematikinfrastruktur,CN=GEM.EGK-CA10 TEST-ONLY

Serialnumber: 965736952618175

Valid From: 2022-11-24T00:00Z[UTC]

Valid Until: 2025-05-19T23:59:59Z[UTC]


Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Der SSO-Token. Mit diesem kann der Client sich wiederholt einloggen ohne erneut den Besitz der Karte durch unterschreiben einer Challenge beweisen zu müssen. Er ist vom IDP für den IDP verschlüsselt und dementsprechend vom Client nicht weiter zu verarbeiten.
unsigned_challenge

JWT

Headers
{
+}

body.ssotoken.body.njwt.content.body.cnf.x5c.0.content

X509 Certificate

Subject: C=DE,O=Test GKV-SVNOT-VALID,OU=X110411675,OU=109500969,SURNAME=Bödefeld,GIVENNAME=Darius Michael Brian Ubbo,CN=Darius Michael Brian Ubbo Graf von Bödefeld TEST-ONLY

Issuer: C=DE,O=gematik GmbH NOT-VALID,OU=Elektronische Gesundheitskarte-CA der Telematikinfrastruktur,CN=GEM.EGK-CA10 TEST-ONLY

Serialnumber: 965736952618175

Valid From: 2022-11-24T00:00Z[UTC]

Valid Until: 2025-05-19T23:59:59Z[UTC]


Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Der SSO-Token. Mit diesem kann der Client sich wiederholt einloggen ohne erneut den Besitz der Karte durch unterschreiben einer Challenge beweisen zu müssen. Er ist vom IDP für den IDP verschlüsselt und dementsprechend vom Client nicht weiter zu verarbeiten.
unsigned_challenge

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "iss" : "http://localhost:42791",
+}

Body

{
+  "iss" : "http://localhost:45067",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "jPKpR10_avTpSEDX37S0t5IMmbJ3FNhEYppz6aBZFVY",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "19ZYDZqJfl14MqDU54wGgmppezwnxuLADGBRswkq8RM",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"token_type" : "challenge", - "nonce" : "4Y-9cD3jEbw_5YDI1-T_e3xvo1TJssob",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "dvVItjnRRalmgSR78YmZR5Et6JUP6DAL",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "J1-9KIYmWV7lPC7dYoUDBQl27Fr1wlmz",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "gbzyFzUJfbQ5-QTHwYjych8OsHrSI7k9",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "exp" : 1717595381,
Gültigkeit des Tokens
- "iat" : 1717595201,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "yCZyavYoDDZQA1K6SqTPXcbRJwOzPkMXh--c5J3T8XA",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "cc2cf66f1f6ac1c3"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Signature

Was verified using Key puk_idp_sig

28302localhost:42791127.0.0.1:-1

28302localhost:45067127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Content-Length
0
Date
Wed, 05 Jun 2024 13:46:42 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Location
http://redirect.gematik.de/erezept?
Optional[code]=<Authorization Code in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
&state=J1-9KIYmWV7lPC7dYoUDBQl27Fr1wlmz
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Wed, 26 Jun 2024 08:27:37 GMT
+Location: http://redirect.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5NDA1N30..yWvFCgYzr4LBVVwV._lfKiGUsADnfKmt85X4q1fsw7P8iOWicGjNjBA_1oBvlR0Nlxf1y1tjmEcgIb9M2hRgj5jQMRU7y1iVka0vY-3lk6CgwsinqveCJjdHivvpW8RlkPmaIU0nNbIGguu_Na5hy1l2vx9V2fZjrCo94OgaM8ukEyFPmoalf7iqxjuxpJALa0M-2RSkPoKhLar4cwM_Yd-DqvaK5MyfYTTAxZ1Gb68v_VdIK2TMI2E0PQ1P9xetPl5ILxsmhZXKutmBduFytr_zg7FS_KVYO5-NYvo2gVmcZLmP6-OPP2iyRza6UpTT95SzLzetGMmEAEdEMKm9BqUHXPBxUj9x_MFj3eRhc6dEeD62FzMY5gmcBlyFoyYfVoLQYjXPH9_Vw9B5EdbkyN0RFNuwG0P84P8xnl74TmgDmlg7OQcJtcHwNe9uhpB7dwlQ_L0CJDMsLDeh3r3A7G0nKP-lDMrOwCbF5-2ezuSfrgkfrkBeYwNF9LuhCVqX3hcS0Kcr8sX9gxd4sroJr7Ey7j2qu04oSR2gXCfH_c3JNhs5s6ImsTchtQchntunpvxVFhe48-k2I8nF5MGI8schBdEP0hl8cF5ii6Og3BG7O86F7auhnqAQmNo4AjfS-pkB00C09J6T7YyBtNt3O8K9jV6tIbqisqc2DelUMbc8DBQeusQJAr_fbm25e-ZAPdPNBWC80m-eYLAjt6fXnZcpMeyfhz5KedKwbMfMIaGj5j3Vsiod2CWLxKKTIbZ2srwbC3viOmyBDkzPWsXvroR6RrZTQXY2DjCjce5I9ukoulpFFnX1JR-TFoaxM3R54XQ02yMosLHeFwWi2IWK9FOvrlFTsOG8HJTaKMaFUKMw7QrddnqmxqUf4DIHKRv_umX5dkigkozHUYore5MtZuJrZC00szEjqcXi7c5assN3MdM8L8xEJ4e1LtCzOaVRaOXtWAtNRrTwONqzQpnMQmT4swcdL-oLW0IQlx9PKUVd4VGIPnUjKyva5ekWgk7M1TLagxvThUDskrU7a2anqXLfp-WbFcqfvOjRA7drrSt66jq-zAWt8bB2OMSnMdmEouMImUiawsBJmlrOqcptJY9HLqtp6W8qhLxQEg32CfoW-h1X5X3x853sZ3uPm6MOs1zOWVn8S5wZLGE9x0Fo2FpyWOmiQjnAuvWb5XoFM_d7U5dcnyl4-9GeAfdfgpxKPZD18o_cAufE6pbTcnIy6EHbhy_g2h_tRvgHT0ol7MGwucvllFeDnapfywxYz9lNKRTI85gk1rZu7OuTIs6_4W3t7Cfpw9bm2MwoI7176lkzAVU9MCRjvvNpoAiW-TATXZ6gXYXscqTlDC-qN888AU-oNC32zyB6nFy19y0YykBQZfDOT.Q3aqy10r70NlBJpCsD0TWA&state=gbzyFzUJfbQ5-QTHwYjych8OsHrSI7k9

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Content-Length
0
Date
Wed, 26 Jun 2024 08:27:37 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Location
http://redirect.gematik.de/erezept?
Optional[code]=<Authorization Code in Base64-URL-Safe Encoding. Wird unten detaillierter aufgeführt>
Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
&state=gbzyFzUJfbQ5-QTHwYjych8OsHrSI7k9
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717598802
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyNzkxIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJQV1dtQXJpMm1DbXlZekl0VkpQSjF2NXVWaC01YllrQiIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiI0WS05Y0QzakVid181WURJMS1UX2UzeHZvMVRKc3NvYiIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcxNzU5NTIwMiwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiSjEtOUtJWW1XVjdsUEM3ZFlvVURCUWwyN0ZyMXdsbXoiLCJleHAiOjE3MTc1OTg4MDIsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzE3NTk1MjAyLCJjb2RlX2NoYWxsZW5nZSI6InlDWnlhdllvRERaUUExSzZTcVRQWGNiUkp3T3pQa01YaC0tYzVKM1Q4WEEiLCJqdGkiOiJjYzkyNWFiZjQyNzM4NWI1In0.Z2c3fKTwzMaOtErTsHSHmXV0GyShoMaTjIBA3UPwfn9U6CzdnlSM7ZVnLy8nMi8YxywKMd_66jlybUHQYB_z9g"
Ein verschachtelt enthaltenes JWT
-}

header.Location.code.value.body.njwt.content

JWT

Headers
{
+  "exp" : 1719394057
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1MDY3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJSVjh2SjBaa245eDBLQjJUWWJSeU1hTFg1WkNSbU50eSIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJkdlZJdGpuUlJhbG1nU1I3OFltWlI1RXQ2SlVQNkRBTCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTcxOTM5MDQ1NywicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiZ2J6eUZ6VUpmYlE1LVFUSHdZanljaDhPc0hyU0k3azkiLCJleHAiOjE3MTkzOTQwNTcsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzE5MzkwNDU3LCJjb2RlX2NoYWxsZW5nZSI6InRpc25FYWJUNk11OWkwamRTeGZqQkpWakI1YS1wRUl3RTU0M2xOay1sbFkiLCJqdGkiOiI0OTNlMjgwMzBkODhmNjU3In0.eZn7gi1E1hjNcRa1ewAVnWH2kc1_1A2VAyuJm5kSMz5ZvYb9laMbk309BJAafZpCKMxFYzREAIjm7kGmJbUpow"
Ein verschachtelt enthaltenes JWT
+}

header.Location.code.value.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : "Test GKV-SVNOT-VALID",
   "professionOID" : "1.2.276.0.76.4.49",
   "idNummer" : "X110411675",
-  "iss" : "http://localhost:42791",
+  "iss" : "http://localhost:45067",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "PWWmAri2mCmyYzItVJPJ1v5uVh-5bYkB",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "RV8vJ0Zkn9x0KB2TYbRyMaLX5ZCRmNty",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"given_name" : "Darius Michael Brian Ubbo", "token_type" : "code", - "nonce" : "4Y-9cD3jEbw_5YDI1-T_e3xvo1TJssob",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "dvVItjnRRalmgSR78YmZR5Et6JUP6DAL",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595202,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390457,
Timestamp der Authentisierung
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "state" : "J1-9KIYmWV7lPC7dYoUDBQl27Fr1wlmz",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1717598802,
Gültigkeit des Tokens
+ "state" : "gbzyFzUJfbQ5-QTHwYjych8OsHrSI7k9",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1719394057,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1717595202,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "yCZyavYoDDZQA1K6SqTPXcbRJwOzPkMXh--c5J3T8XA",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "cc925abf427385b5"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Empty body

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Empty body

29 POST http://localhost:46199/token127.0.0.1:-1localhost:42791

REQ Headers

Content-Type
application/x-www-form-urlencoded
User-Agent
IdP-Client
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Der User-Agent des Clients. Muss vorhanden sein. Wird gegen eine Blocklist geprüft
Accept
application/json
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
Content-Length
2067
Host
localhost:42791
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend

REQ Body

namevalue
client_id
eRezeptApp
Die client_id des Clients. Wird bei der Registrierung vergeben.
Die client_id des Clients. Wird bei der Registrierung vergeben.
code

JWE

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde

Headers
{
+client_id=eRezeptApp&code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5NDA1N30..yWvFCgYzr4LBVVwV._lfKiGUsADnfKmt85X4q1fsw7P8iOWicGjNjBA_1oBvlR0Nlxf1y1tjmEcgIb9M2hRgj5jQMRU7y1iVka0vY-3lk6CgwsinqveCJjdHivvpW8RlkPmaIU0nNbIGguu_Na5hy1l2vx9V2fZjrCo94OgaM8ukEyFPmoalf7iqxjuxpJALa0M-2RSkPoKhLar4cwM_Yd-DqvaK5MyfYTTAxZ1Gb68v_VdIK2TMI2E0PQ1P9xetPl5ILxsmhZXKutmBduFytr_zg7FS_KVYO5-NYvo2gVmcZLmP6-OPP2iyRza6UpTT95SzLzetGMmEAEdEMKm9BqUHXPBxUj9x_MFj3eRhc6dEeD62FzMY5gmcBlyFoyYfVoLQYjXPH9_Vw9B5EdbkyN0RFNuwG0P84P8xnl74TmgDmlg7OQcJtcHwNe9uhpB7dwlQ_L0CJDMsLDeh3r3A7G0nKP-lDMrOwCbF5-2ezuSfrgkfrkBeYwNF9LuhCVqX3hcS0Kcr8sX9gxd4sroJr7Ey7j2qu04oSR2gXCfH_c3JNhs5s6ImsTchtQchntunpvxVFhe48-k2I8nF5MGI8schBdEP0hl8cF5ii6Og3BG7O86F7auhnqAQmNo4AjfS-pkB00C09J6T7YyBtNt3O8K9jV6tIbqisqc2DelUMbc8DBQeusQJAr_fbm25e-ZAPdPNBWC80m-eYLAjt6fXnZcpMeyfhz5KedKwbMfMIaGj5j3Vsiod2CWLxKKTIbZ2srwbC3viOmyBDkzPWsXvroR6RrZTQXY2DjCjce5I9ukoulpFFnX1JR-TFoaxM3R54XQ02yMosLHeFwWi2IWK9FOvrlFTsOG8HJTaKMaFUKMw7QrddnqmxqUf4DIHKRv_umX5dkigkozHUYore5MtZuJrZC00szEjqcXi7c5assN3MdM8L8xEJ4e1LtCzOaVRaOXtWAtNRrTwONqzQpnMQmT4swcdL-oLW0IQlx9PKUVd4VGIPnUjKyva5ekWgk7M1TLagxvThUDskrU7a2anqXLfp-WbFcqfvOjRA7drrSt66jq-zAWt8bB2OMSnMdmEouMImUiawsBJmlrOqcptJY9HLqtp6W8qhLxQEg32CfoW-h1X5X3x853sZ3uPm6MOs1zOWVn8S5wZLGE9x0Fo2FpyWOmiQjnAuvWb5XoFM_d7U5dcnyl4-9GeAfdfgpxKPZD18o_cAufE6pbTcnIy6EHbhy_g2h_tRvgHT0ol7MGwucvllFeDnapfywxYz9lNKRTI85gk1rZu7OuTIs6_4W3t7Cfpw9bm2MwoI7176lkzAVU9MCRjvvNpoAiW-TATXZ6gXYXscqTlDC-qN888AU-oNC32zyB6nFy19y0YykBQZfDOT.Q3aqy10r70NlBJpCsD0TWA&grant_type=authorization_code&key_verifier=eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSIsImN0eSI6IkpTT04iLCJlcGsiOnsia3R5IjoiRUMiLCJ4IjoiWTA2U0h6XzZ6eExjLW9NU2NUR3hPRHMtV1VqQnpEa1B2dmRrU3Q5UlA4ayIsInkiOiJpNE40WFlKeHMwZTFpVGVFRWdxeVN3a0d5b0FFQzlOU0NhQ003VnlteGxRIiwiY3J2IjoiQlAtMjU2In19..r-wX5ZGXh0V2a3rs.fhJHlchiH_QSKU3X1ghIiT8r97RkGvvovsyrK0sw7UiJnxcBqDjNCB1Pk6lw5MqpliS4nbguEeqDXxcYXQvD0STE90bwVBTzM30q94LfbLi2kEkQv6AaZ3pop3-R4Q3NWMr9wUNAFSN1tVe7fTUmNrYkpWfXuUOqVw.FNlphrbMP6rub3DtA3UTUQ&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept

29 POST http://localhost:43371/token127.0.0.1:-1localhost:45067

REQ Headers

accept
application/json
accept-encoding
gzip
content-type
application/x-www-form-urlencoded
user-agent
IdP-Client
content-length
2067

REQ Body

namevalue
client_id
eRezeptApp
Die client_id des Clients. Wird bei der Registrierung vergeben.
Die client_id des Clients. Wird bei der Registrierung vergeben.
code

JWE

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717598802
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyNzkxIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJQV1dtQXJpMm1DbXlZekl0VkpQSjF2NXVWaC01YllrQiIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiI0WS05Y0QzakVid181WURJMS1UX2UzeHZvMVRKc3NvYiIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcxNzU5NTIwMiwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiSjEtOUtJWW1XVjdsUEM3ZFlvVURCUWwyN0ZyMXdsbXoiLCJleHAiOjE3MTc1OTg4MDIsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzE3NTk1MjAyLCJjb2RlX2NoYWxsZW5nZSI6InlDWnlhdllvRERaUUExSzZTcVRQWGNiUkp3T3pQa01YaC0tYzVKM1Q4WEEiLCJqdGkiOiJjYzkyNWFiZjQyNzM4NWI1In0.Z2c3fKTwzMaOtErTsHSHmXV0GyShoMaTjIBA3UPwfn9U6CzdnlSM7ZVnLy8nMi8YxywKMd_66jlybUHQYB_z9g"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

Headers
{
+  "exp" : 1719394057
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1MDY3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJSVjh2SjBaa245eDBLQjJUWWJSeU1hTFg1WkNSbU50eSIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJkdlZJdGpuUlJhbG1nU1I3OFltWlI1RXQ2SlVQNkRBTCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTcxOTM5MDQ1NywicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiZ2J6eUZ6VUpmYlE1LVFUSHdZanljaDhPc0hyU0k3azkiLCJleHAiOjE3MTkzOTQwNTcsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzE5MzkwNDU3LCJjb2RlX2NoYWxsZW5nZSI6InRpc25FYWJUNk11OWkwamRTeGZqQkpWakI1YS1wRUl3RTU0M2xOay1sbFkiLCJqdGkiOiI0OTNlMjgwMzBkODhmNjU3In0.eZn7gi1E1hjNcRa1ewAVnWH2kc1_1A2VAyuJm5kSMz5ZvYb9laMbk309BJAafZpCKMxFYzREAIjm7kGmJbUpow"
Ein verschachtelt enthaltenes JWT
+}

body.code.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "organizationName" : "Test GKV-SVNOT-VALID",
   "professionOID" : "1.2.276.0.76.4.49",
   "idNummer" : "X110411675",
-  "iss" : "http://localhost:42791",
+  "iss" : "http://localhost:45067",
   "response_type" : "code",
Referenziert den erwarteten Response-Type des Flows. Muss immer 'code' lauten. Damit wird angezeigt das es sich hierbei um einen Authorization Code Flow handelt. Für eine nähere Erläuterung siehe OpenID-Spezifikation.
- "snc" : "PWWmAri2mCmyYzItVJPJ1v5uVh-5bYkB",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "RV8vJ0Zkn9x0KB2TYbRyMaLX5ZCRmNty",
server-nonce. Wird verwendet um noise hinzuzufügen.
"code_challenge_method" : "S256",
Das Primärsystem generiert einen Code-Verifier und erzeugt darüber einen Hash im Verfahren SHA-256, hier abgekürzt als S256. Teil von PKCE.
"given_name" : "Darius Michael Brian Ubbo", "token_type" : "code", - "nonce" : "4Y-9cD3jEbw_5YDI1-T_e3xvo1TJssob",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "dvVItjnRRalmgSR78YmZR5Et6JUP6DAL",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595202,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390457,
Timestamp der Authentisierung
"redirect_uri" : "http://redirect.gematik.de/erezept",
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
- "state" : "J1-9KIYmWV7lPC7dYoUDBQl27Fr1wlmz",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1717598802,
Gültigkeit des Tokens
+ "state" : "gbzyFzUJfbQ5-QTHwYjych8OsHrSI7k9",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1719394057,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1717595202,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "yCZyavYoDDZQA1K6SqTPXcbRJwOzPkMXh--c5J3T8XA",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "cc925abf427385b5"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
grant_type
authorization_code
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
key_verifier

JWE

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.

Headers
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
{
+  "iat" : 1719390457,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "tisnEabT6Mu9i0jdSxfjBJVjB5a-pEIwE543lNk-llY",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "493e28030d88f657"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
+}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

Der Authorization-Code, so wie er vom Server in der vorigen Antwort auf POST /sign_response zurück gegeben wurde
grant_type
authorization_code
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
Muss exakt diesen Wert enthalten, da es sich um eine Implementierung des OIDC Authorization Code Flows handelt.
key_verifier

JWE

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.

Headers
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
{
   
Dieser Token wird für den Server mit dem puk_idp_enc verschlüsselt.
"alg" : "ECDH-ES", "enc" : "A256GCM", "cty" : "JSON", "epk" : { "kty" : "EC", - "x" : "kpiXb3m-YKqyu5jjDOG_pjsEoH8ewgbzAV33eoTq-xI",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "OgpufFlCcm-jOh0AYGlhEMKNLdkZnTUoGBsOh6uH9gI",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "Y06SHz_6zxLc-oMScTGxODs-WUjBzDkPvvdkSt9RP8k",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "i4N4XYJxs0e1iTeEEgqySwkGyoAEC9NSCaCM7VymxlQ",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).

{
+}

Body
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).

{
   
Enthalten ist der code_verifier (der zu dem code_challenge-Wert aus der initialen Anfrage passen muss) sowie der token_key. Dies ist ein vom Client zufällig gewürfelter AES256-Schlüssel in Base64-URL-Encoding. Der Server benutzt diesen Schlüssel zur Chiffrierung der beiden Token-Rückgaben in der Response (ID- und Access-Token).
- "token_key" : "4PlsDjelV2vgIVNbWYjbi-_I3FQYWAzrd6MqiLEQILo", - "code_verifier" : "KaoSw8CmLOf1bBC7Ne9X7og5czwEu7JEhsbveyPkVUI" -}

Encryption info

Was decrypted using Key prk_idp_enc

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.
redirect_uri
http%3A%2F%2Fredirect.gematik.de%2Ferezept
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.

Encryption info

Was decrypted using Key prk_idp_enc

JWE, welches den code_verifier sowie den token_key enthält. Dies ist ein AES-Schlüssel welcher vom Server zur Verschlüsselung der Token-Rückgaben verwendet wird.
redirect_uri
http%3A%2F%2Fredirect.gematik.de%2Ferezept
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.
Die für den Client beim Server hinterlegte redirect_uri. Muss dem bei der Registrierung hinterlegten Wert entsprechen.

30200localhost:42791127.0.0.1:-1

30200localhost:45067127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.1
Pragma
no-cache
Date
Wed, 05 Jun 2024 13:46:47 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Wed, 26 Jun 2024 08:27:42 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
28.0.2
Pragma
no-cache
Date
Wed, 26 Jun 2024 08:27:42 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxNzU5NTUwN30..6VBRCugol7nNQRh3.QUo_fvkovsOEKorUAKHUB3oSswUYGjRRUhZumqTM_ZULAn2Ey0Eeo-dBByIMmpa2kI-5ddHbNn1jj3ylsOBOIz56STI-Q6fLqXwGQ6q6RSbL2HzpuHulvB1A6a-M8EQTRo-IqtCCd1PPk_FcJh9_xCaFWegL5OakmDnfmlNOkAk57qFmoey8kqOCqq2Y-UJC9ELVE-wiLtcyCEW_JJdb_SI65I6CVKdeLOsBOKet9D750mnx7JcaZ2yUrw2Zj8F7aTcxueRMfa0Qvo9AH-hsHWZ8tpZSOtiBlxsZ6FK_5mpiAngkvjaqzbsUTihmZ5wabDaFQCnxaEnaQzprpmsWI_YsS9JIZq8R-aTtypnI38NUAq6JIheJUkZa7T-CYdgl_iYyQH5o5mZXO4vgJFLLL08qy-XIqo85qMAciAeDKQNYgKYOyAYLu1inDIw3_Snj993AgXwq-4nB02e_g5_1XLaA72HTtyt2_iq3EF1c8uEJt06107sHYxx2eDm2cxGTIZj-Vd9szea9Myq-tGEGlGo3UFdA_bgqJX0txbfywgPGpk4aRccJr44Bt8JLO1GsZlULxOd9DBq5HZVzNWHae8W9jG4-6m9e8eaa-deummawpbOXU27znyf9tEqAe237qoxrwhhug3miDwW7qfR44egBmrXiXcHJ0dqM7-iOes2BiWA2HUzyBUIsPFKJVeUqtbZA-8X_BVTVUL8nW589HivLgiJZ4Bk1BPNojgGUOrTpqR01VJ2AQMn--GTjmYIsi2W0369CpU3M3lOlTnwB5GcJ542o0-mzWzkivaaD7XT2Ug0wxSSHPVTKFaG_Tdtb77nF0LQPJxxiau9xWjVITexG8aF6ea07z6TUbIUC8qDNNRKsngRMJiglbjp5xS06-jJ_kpRBYN8ZAhYgvD_Y4AASDrcCSAz1KD_RrDNsjt-tMOfFRvaLpDRM7dottAOHjZQ-Fe3XZxyEu1hxDQDHxM0cljnzBDsh0dhBGG-aZnkIMd5Bl7Zk4nmZNmGu-YG-58eOkrf1qv0xfaek0ni9D_8gxsLrOZxC6AsVdM0DDOWdVqZKzXeAzQReRQw00Rqp4VWPeA2rXOTL7aVN5_nxoHB2Muv7ozQe2tVb5XJl6-EYeJ8RqlPzCX1DG47ijQ1IRWbIPdVH4-g1bR77xHbZvtzP7PklnfafGj0vHft82LbNRe04pefsjANsnIS_Y110MuVy468eJ7--gbfeTisZ1QY.9EsWPglG2rxXnI4iXQTPvw",
Das verschlüsselte ID-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
- "access_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxNzU5NTUwN30..l29F5-PyfG6f4Bku.AUr0jeHNSMhtdbnlyjhPhTLTMKmtdXAX3wf5FI9pHWnmmchDVHNbXV6C5RF0_WXQO1Pl9QgVEc7j1opKa6Oj8L86Dms41rBhn08Q91G98sY2hEmZIQYj9au265TNvq3pewpWowD1F4bVidsRM37x4svmwkeoiDgUOU2Cy5Z0RKlUAfMICQjc5QDMT1AxqnXFtOrWDGkmnScza4ryhOFvj5uaucML_Olmd_cpD4fmZaJUGsf0h544avsWyHuRZsi0cJrxphp-KnyDU0vnd1PjiSL12pFe9iU4YigVbAnc4PrKGbF_MHHTxBKfySWJQl2blxVEe5zZU8sJTCihqtsAJKxiLtz9wizrSzqadvrOi8XcT_BL87VdKH-XBO02gzmyQHgd8s8CuMpUuX5A7xNzgYKuByt-5TLph_v8RRuZ25Y8WTL8yoQ893uruePmxJfz7oUREsYoL7fE_2EiTUcad6QPy_cAh68MWeVbU7sXRrWwlaHB0nkRFwkLf4tfW5V6fkJDMcHKWOmwVACpGNS8I8EdrkAwMEP5EFVJVnACJq3LA_BmMJOH1fLzmDmtE4zDnj40S_vK7FSgedY0XLQgjweIFS_7IxvvGdcYp1-O2dovLyOYHZZ4FHf7SG2jqpybtE9cJ75rxmoo8OojTB5WBobjNKqzQ3FxnsOsRJ8VGEUF8ZUhsAFjd65X1F2k3eEHzErphNAnN-Oc96oNEHejvSBtSEeeQabSfNFz3Kv5a-kWDnsGP2nWlfrS4kg4h11IlvnSu2T5bBFhlbMDb60P4VDgCh790tQL03QrJ0mR97UOREj19HVmdCVwN3_dGnZsdjRnqGDLeWkpPoSjsDFEp-ntXKvFeyNF1H1vHG5I15-EDla9Scn8aUmBP2JzYXe4uONdkkTIGNfOokQ7x8yRpXLFpWk91fYuCaIhzpfaoASO_CmFovyJP2TQpMCzHL2Ucwlvve5sz7P8TEwPBBOkG3H0m8-gi1LJMKdYA7lxlAlTMNJ8SHcpUcO5xGXMHMvsCtV-OO_mmYxu2YHgvkWnMUEbPh-7FFP5ZgK1K-tSPjSj8jnBY1EreuXCfHk7lnORjQ9PPaONb4KG-h2NNi_RcHqbsNAhzr3rEix7jDwCoyiIhBBe2HI5xeFZqqN_eV1eThxrphD870_Lp9iOD8wmFNcPc3plHl0uyTURinLiRk4WKGse2LVpjND2-Jp6Raj_GQX5mx34DUWt3NOhxabb77VkbmdmyhpksOgXyKKMXlWUyEnUbubAA8U.-nH82atCtBqtxaiUgQL6HQ"
Das verschlüsselte Access-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
-}

body.id_token.content

JWE

Headers
{
+  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDc2Mn0..OR7eNX0hJyjAqQKD.L6xcZ0y9tvpV5nmCxOCyctprMgYiVwT5HGXzJbjGx8Qhb2h0HdvGZQhMg1vpg5TI1xTZIvGk1Y50W0qS27eWpcb3ElRq_lZln8L0LyQmQ4U53WdcXrxzYXbRgsFcJc9kU6gjBGr4y5io3mJu8CRLWGPCRMI9TmMS7_jLGLsfsC-v4Ln8TCLBEdajg-tqYRPam9Al0ach-QFYBIiyN9Zf2Cskb_08WGyZmvG1qXKxEZ4ZqQSOB2V9I5HZDj7I5P4TLWY5oFn_ByVAAqA5JdRLQTadExmAGWTlK3d_3Ceogns7_8-eevpcMofyhGmW6fv6sjdrJzimADRTI6FXIt-veODGxrqjIyGMfjt9QYePbH1GZHXOTvcGdo0hTyV5nYFWIDDmdsvQaBssmbCKKnL5nsmMiZorWfTuRXtmRSTtGxtneEdmml-1AmdH3c44aE-eYh2S_MB4XoEULnyh3As9Y56wuht5kMQoURoCub04-fuMoy-_ttXr--56kLGbX01HoFvwPq4vXw28CTqlodq-z8sjUqsP0uy8VrCTvBiUeG2TM8P74iHWLyj3x2iOa4O1hvqo_kX5DVoLlmpD2D612XlDBujKwTpwoMGCt1SDmprDD_tYX2_zO6dV7nWnKODEmt_-v_uOSp04jTQVesAIub53AnboyIJqZdB14DArimUEFtYxRdXYDYm2iRepy0Yy2ZEBQQ_a_H5yOynXTcbE6vN52e9gfreQQqs5foXN9UnhycunciWpsQ18hpVztOA8jUN2c8SF6hNmCkHFeeSedv8hL71N21-aoyUufrBtH_OAkGxYi9bIZ50uBaloK7gY8_85ZDktRaP1CSFlMU31GOVmBed9Yg2_BrHTW_0AiAAqG7VtVEePQNP9fYXnZ7fUfTiSrBX2NT49P-r1mInJnjmK8ffcvEj1o0eSOmE99lDWq7E-N9ukdxAj0hiM7wdKl7_PD8PsjTe_U6U7YKptd9220BdZjzmyHYHsLfHuBhlJlCnxdIn2IJxbXoBz6rg_sYcIQbTpU-td9LGTvWRAtyHPXwYNDim6-31xoTNXPD4o702oTLwbB3u5AOtyALGON7t7MUoPwfNEqqsZ8dyObI19-tbEJ2_qpIY2awSfankJHcS3WWQZ0x4ZumnzT3uQbAvEBAorizp2FtHQKYg5rgiWQ4Gaq91KydvE2rvIPkrdFLnUDdVAD8e8blFlFPSKUpZdwItO1gcXFbHs7PCFUjw.aQYSszR9Dov2qc4nedxOAw",
Das verschlüsselte ID-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
+ "access_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxOTM5MDc2Mn0..G0YeADWObxUAhJVg.bKKuQx-nJd84yYe_2-Ey_FeMfN70i54GqU-b3vOkYRRwHr42bGJorPkQuvyVoqp1yAcLt6si_qa-l_HVyP8bf3QxH9Lx7QeY5pDlqALVV31DjzQx5glUNJRsA3yhYT-V5TSaCet63kGBwfpPgSSxkZCmofS5KmflE7SmHat72CivkdFXYAJVuacRkntB5JAqx15qlyTOYSucGy2kxNftKM6MXSrt-aope0bT4t6MJzt9QccQNpt7Ir4cZLDyeNkhHTRdougcaMMVSLeQGQZmInLUnSROJ1ypw292rB2Nz23-pC8lYG2jZpjXPJmoG6SjQLzf_r-ghqwGXfKB8PBoZwwHlU2LIHaFaNJ3Ehvl6sz7pkQCktpW7ROKFoD00oNnagZsXciKTq07eLPuayinIs6JwxJJzc6sqmGJMy9FmCmhvVLdpz20_tYKcV7187uqUTmOhAH0STnaq3Bx6PGUvyqSgH5CRlQy29AKn2gojanHFkOXmb8QzyjcC3Clyx24M3ZvR13pUzeV1Q9x--m9iJ38ttqkHgTQ_b5fa_-VFoNpiwySn51IE_kZ2O9QBetydW7NN6L1Eo_24ATxOHsMru1zChOEAi-JcKD0lMoph7EIFxldbeXzxmxExbRe3WW9NTZ15GUjt0OFlwOISeJCfbkLaYlMnOARtKP1nNpjdXiGMuDxdSQ4Hqr3xbU0kKZxkoVMcmphyt4FaHP4V2QzkmKCal-R_Ay_Iuj81Jym_5lAdTEsYVldH-lY2hurusfl6CbW_OJ4k8OORHkQuwyQdArzlK3Uis-YqeVNYb2Ig0uKJG4H-zaplgSUMqtqpmOLpBUoBA4RbRPjMF_oR65TvUuC7VRLZKkluMP3a9nqcI6_tpnO7raG2O4o11Vox6VRienfQdjKZiOfDDCusGNmGNYNC0RjLyVDdvVF_PysK8R-jgWyJBqdnW1ExXD17Fa82MbdD3acfbzoL18kWDNWKDVyw29j3c0Ze3ynGeJL_elXE2lpbY6srYRlKdhesn3cS83xRFnY7V3eS2d6Ppb6GZ4dCKVuSWBr4nYs_VmIpaNTXJDbI27f6zd4S8_KWl7J2gVAHlLoB_ZXiQ1Wf75V8z0W9bgvHHdDGYM8Yx0fwtHeyNsg3CO9RhSKRt_pN6H-lf8V_tP1_VZyWdNAy_5l4YS0DJ9RXduX0WVkbjjEtxIySDvpvF5BlfQHd8JyKngCeQdggfN3RpwVQxzwgcbgt0c2t_2t_f08XId92ZXTx-mh6Bn4Rjf4ilQ.t-3ZHV5-iQdXtd2Jlyxhpg"
Das verschlüsselte Access-Token. Der Server chiffriert das Token selbst zur Sicherung des Transport-Weges. Zur Verschlüsselung verwendet wird hier der token_key aus der Anfrage des Clients.
+}

body.id_token.content

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595507
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiUzZjMlJZNFdlZUQ5ekJ4TWlxRVZqQSIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoiNFktOWNEM2pFYndfNVlESTEtVF9lM3h2bzFUSnNzb2IiLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcxNzU5NTIwMiwiZXhwIjoxNzE3NTk1NTA3LCJpYXQiOjE3MTc1OTUyMDcsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiODgwNDNkYWJlNGI2ZDE0MCJ9.D1cFAiUHPvCkQZ1r8JBnyVlVWv7JvZMZV8qklwNsdqhlqc-s4w7T6yFnwceN34lj3iskLiR7Vf58ZPGkuwm6ew"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390762
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiVWJydnFRRERpSFZNMUcxaU9ldXBQZyIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoiZHZWSXRqblJSYWxtZ1NSNzhZbVpSNUV0NkpVUDZEQUwiLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcxOTM5MDQ1NywiZXhwIjoxNzE5MzkwNzYyLCJpYXQiOjE3MTkzOTA0NjIsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiZjEyMjE1MDI4NzBmYzU5OCJ9.GAxkr4LXfVU84wvgnvXYbf0n4SbSFletXIx9DnE2KrQNQ6NNLkrJLW1IHXVufgGYNXtQ_6t-hVkhMk-SoS_Mdg"
Ein verschachtelt enthaltenes JWT
+}

body.id_token.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
-  "at_hash" : "S6c2RY4WeeD9zBxMiqEVjA",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
+}

Body

{
+  "at_hash" : "UbrvqQDDiHVM1G1iOeupPg",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
"sub" : "p2h-RT6EERghbjP8R1wnyz8k4xhOhwbesJRP0XnuSmo",
subject. Base64(sha256(audClaim + idNummerClaim + serverSubjectSalt))
"organizationName" : "Test GKV-SVNOT-VALID", "professionOID" : "1.2.276.0.76.4.49", @@ -1161,27 +1134,27 @@ "iss" : "https://idp.dev.gematik.solutions", "given_name" : "Darius Michael Brian Ubbo", "display_name" : "Darius Michael Brian Ubbo Bödefeld", - "nonce" : "4Y-9cD3jEbw_5YDI1-T_e3xvo1TJssob",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
+ "nonce" : "dvVItjnRRalmgSR78YmZR5Et6JUP6DAL",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"aud" : "eRezeptApp", "acr" : "gematik-ehealth-loa-high", "azp" : "eRezeptApp", - "auth_time" : 1717595202,
Timestamp der Authentisierung
- "exp" : 1717595507,
Gültigkeit des Tokens
- "iat" : 1717595207,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1719390457,
Timestamp der Authentisierung
+ "exp" : 1719390762,
Gültigkeit des Tokens
+ "iat" : 1719390462,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld", - "jti" : "88043dabe4b6d140"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

body.access_token.content

JWE

Headers
{
+  "jti" : "f1221502870fc598"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
+}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

body.access_token.content

JWE

Headers
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1717595507
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcxNzU5NTIwMiwiZXhwIjoxNzE3NTk1NTA3LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxNzU5NTIwNywianRpIjoiYjQ3YzI1NzRlMjg1MDk5YiJ9.KYe2amKxFGqKkO8uvXv3ndFvQlar_JBUL7_S25HYyw8GCPCCz4fVdmZT_9-GdmVmTwTIqUbuNw21pJXvfWiHOw"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

Headers
{
+  "exp" : 1719390762
Gültigkeit des Tokens
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTcxOTM5MDQ1NywiZXhwIjoxNzE5MzkwNzYyLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxOTM5MDQ2MiwianRpIjoiOWQ4ODk1OGY2Nzc4M2VjZSJ9.dTllHRaXXm7qw822t-Y5puSAKoUMYCcnFw70F3xrLZ4spko5G6mmj1s5OyWGp-o2ybKU_h9UtoZIvLNdNMQS5g"
Ein verschachtelt enthaltenes JWT
+}

body.access_token.content.body.njwt.content

JWT

Headers
{
   "alg" : "BP256R1",
   "typ" : "at+JWT",
   "kid" : "puk_idp_sig"
Identifiziert den hier beschriebenen Schlüssel. Beschreibung siehe https://tools.ietf.org/html/rfc7517#section-4.5
-}

Body

{
+}

Body

{
   "sub" : "p2h-RT6EERghbjP8R1wnyz8k4xhOhwbesJRP0XnuSmo",
subject. Base64(sha256(audClaim + idNummerClaim + serverSubjectSalt))
"professionOID" : "1.2.276.0.76.4.49", "organizationName" : "Test GKV-SVNOT-VALID", @@ -1194,13 +1167,13 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "eRezeptApp", - "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1717595202,
Timestamp der Authentisierung
- "exp" : 1717595507,
Gültigkeit des Tokens
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1719390457,
Timestamp der Authentisierung
+ "exp" : 1719390762,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1717595207,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "b47c2574e285099b"
A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
-}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key token_key

Created Wed, 5 Jun 2024 15:46:50 +0200
\ No newline at end of file + \ No newline at end of file diff --git a/idp-client/pom.xml b/idp-client/pom.xml index 2180902..a734a62 100644 --- a/idp-client/pom.xml +++ b/idp-client/pom.xml @@ -7,13 +7,13 @@ de.gematik.idp idp-global - 28.0.1 + 28.0.2 ../pom.xml de.gematik.idp idp-client - 28.0.1 + 28.0.2 jar @@ -55,7 +55,7 @@ com.konghq - unirest-java + unirest-java-core com.konghq @@ -73,6 +73,11 @@ ${project.version} test + + org.apache.httpcomponents + httpcore + 4.4.16 + diff --git a/idp-client/src/main/java/de/gematik/idp/client/AuthenticatorClient.java b/idp-client/src/main/java/de/gematik/idp/client/AuthenticatorClient.java index be6201e..742e4a7 100644 --- a/idp-client/src/main/java/de/gematik/idp/client/AuthenticatorClient.java +++ b/idp-client/src/main/java/de/gematik/idp/client/AuthenticatorClient.java @@ -66,16 +66,16 @@ import java.util.stream.Collectors; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; -import kong.unirest.BodyPart; -import kong.unirest.GetRequest; -import kong.unirest.Header; -import kong.unirest.HttpRequest; -import kong.unirest.HttpResponse; -import kong.unirest.JsonNode; -import kong.unirest.MultipartBody; -import kong.unirest.Unirest; +import kong.unirest.core.BodyPart; +import kong.unirest.core.GetRequest; +import kong.unirest.core.Header; +import kong.unirest.core.HttpRequest; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.JsonNode; +import kong.unirest.core.MultipartBody; +import kong.unirest.core.Unirest; +import kong.unirest.core.json.JSONObject; import kong.unirest.jackson.JacksonObjectMapper; -import kong.unirest.json.JSONObject; import lombok.extern.slf4j.Slf4j; import org.jose4j.jwt.JwtClaims; import org.springframework.http.MediaType; diff --git a/idp-client/src/main/java/de/gematik/idp/client/BiometrieClient.java b/idp-client/src/main/java/de/gematik/idp/client/BiometrieClient.java index 488050a..f894275 100644 --- a/idp-client/src/main/java/de/gematik/idp/client/BiometrieClient.java +++ b/idp-client/src/main/java/de/gematik/idp/client/BiometrieClient.java @@ -30,9 +30,9 @@ import java.security.KeyPair; import java.util.Base64; import java.util.List; -import kong.unirest.GenericType; -import kong.unirest.HttpResponse; -import kong.unirest.Unirest; +import kong.unirest.core.GenericType; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.Unirest; import lombok.Builder; import lombok.Data; import lombok.SneakyThrows; diff --git a/idp-client/src/main/java/de/gematik/idp/client/IdpClient.java b/idp-client/src/main/java/de/gematik/idp/client/IdpClient.java index 5f50d0c..736ff66 100644 --- a/idp-client/src/main/java/de/gematik/idp/client/IdpClient.java +++ b/idp-client/src/main/java/de/gematik/idp/client/IdpClient.java @@ -58,10 +58,10 @@ import java.util.Set; import java.util.function.Consumer; import java.util.function.UnaryOperator; -import kong.unirest.GetRequest; -import kong.unirest.HttpResponse; -import kong.unirest.JsonNode; -import kong.unirest.MultipartBody; +import kong.unirest.core.GetRequest; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.JsonNode; +import kong.unirest.core.MultipartBody; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/idp-commons/pom.xml b/idp-commons/pom.xml index 4b832af..7c25e4e 100644 --- a/idp-commons/pom.xml +++ b/idp-commons/pom.xml @@ -6,12 +6,12 @@ de.gematik.idp idp-global - 28.0.1 + 28.0.2 ../pom.xml idp-commons - 28.0.1 + 28.0.2 @@ -38,7 +38,7 @@ com.konghq - unirest-java + unirest-java-core @@ -74,6 +74,15 @@ + + commons-codec + commons-codec + 1.17.0 + + + com.konghq + unirest-objectmapper-jackson + diff --git a/idp-commons/src/main/java/de/gematik/idp/token/TokenClaimExtraction.java b/idp-commons/src/main/java/de/gematik/idp/token/TokenClaimExtraction.java index 4ad7ac8..11da1c4 100644 --- a/idp-commons/src/main/java/de/gematik/idp/token/TokenClaimExtraction.java +++ b/idp-commons/src/main/java/de/gematik/idp/token/TokenClaimExtraction.java @@ -23,7 +23,7 @@ import java.time.ZonedDateTime; import java.util.Map; import java.util.Objects; -import kong.unirest.json.JSONObject; +import kong.unirest.core.json.JSONObject; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.jose4j.json.JsonUtil; diff --git a/idp-commons/src/test/java/de/gematik/idp/authentication/AuthenticationChallengeVerifierTest.java b/idp-commons/src/test/java/de/gematik/idp/authentication/AuthenticationChallengeVerifierTest.java index 96baee9..80888ae 100644 --- a/idp-commons/src/test/java/de/gematik/idp/authentication/AuthenticationChallengeVerifierTest.java +++ b/idp-commons/src/test/java/de/gematik/idp/authentication/AuthenticationChallengeVerifierTest.java @@ -73,8 +73,7 @@ class AuthenticationChallengeVerifierTest { @BeforeEach public void init( - @PkiKeyResolver.Filename("idp_sig.p12") - final PkiIdentity serverIdentity, + @PkiKeyResolver.Filename("idp_sig.p12") final PkiIdentity serverIdentity, @PkiKeyResolver.Filename("109500969_X114428530-2_c.ch.aut-ecc.p12") final PkiIdentity clientIdentity, @PkiKeyResolver.Filename("833621999741600-2_c.hci.aut-apo-rsa.p12") diff --git a/idp-commons/src/test/java/de/gematik/idp/data/FederationPubKeyTest.java b/idp-commons/src/test/java/de/gematik/idp/data/FederationPubKeyTest.java index e28a51c..770e65e 100644 --- a/idp-commons/src/test/java/de/gematik/idp/data/FederationPubKeyTest.java +++ b/idp-commons/src/test/java/de/gematik/idp/data/FederationPubKeyTest.java @@ -44,8 +44,7 @@ void buildJwkWithX5c() { final X509Certificate certificate = CryptoLoader.getCertificateFromPem( FileUtils.readFileToByteArray( - ResourceReader.getFileFromResourceAsTmpFile( - "idp_sig.pem"))); + ResourceReader.getFileFromResourceAsTmpFile("idp_sig.pem"))); final FederationPubKey federationPubKey = new FederationPubKey(); federationPubKey.setCertificate(Optional.of(certificate)); diff --git a/idp-crypto/pom.xml b/idp-crypto/pom.xml index 8810a68..033d145 100644 --- a/idp-crypto/pom.xml +++ b/idp-crypto/pom.xml @@ -6,12 +6,12 @@ de.gematik.idp idp-global - 28.0.1 + 28.0.2 ../pom.xml idp-crypto - 28.0.1 + 28.0.2 diff --git a/idp-report/pom.xml b/idp-report/pom.xml index 183fd97..a9e2951 100644 --- a/idp-report/pom.xml +++ b/idp-report/pom.xml @@ -6,7 +6,7 @@ de.gematik.idp idp-global - 28.0.1 + 28.0.2 idp-report diff --git a/idp-sektoral/pom.xml b/idp-sektoral/pom.xml index 6ffe0d0..278e030 100644 --- a/idp-sektoral/pom.xml +++ b/idp-sektoral/pom.xml @@ -7,12 +7,12 @@ de.gematik.idp idp-global - 28.0.1 + 28.0.2 ../pom.xml idp-sektoral - 28.0.1 + 28.0.2 jar @@ -72,6 +72,11 @@ org.apache.logging.log4j log4j-slf4j2-impl + + org.apache.httpcomponents + httpclient + 4.5.14 + diff --git a/idp-server/pom.xml b/idp-server/pom.xml index 85f0f3d..8a3d85b 100644 --- a/idp-server/pom.xml +++ b/idp-server/pom.xml @@ -7,19 +7,19 @@ de.gematik.idp idp-global - 28.0.1 + 28.0.2 ../pom.xml idp-server - 28.0.1 + 28.0.2 jar undefined 2.4.0-b180830.0359 4.0.5 - 3.0.5 + 3.1.1 @@ -110,6 +110,10 @@ org.bouncycastle bcpkix-jdk15on + + com.konghq + unirest-java + @@ -141,7 +145,7 @@ org.wiremock wiremock-standalone - 3.6.0 + 3.7.0 test @@ -186,6 +190,7 @@ org.apache.logging.log4j log4j-slf4j2-impl + diff --git a/idp-server/src/main/java/de/gematik/idp/server/controllers/IdpController.java b/idp-server/src/main/java/de/gematik/idp/server/controllers/IdpController.java index cd7dc6f..23d5e33 100644 --- a/idp-server/src/main/java/de/gematik/idp/server/controllers/IdpController.java +++ b/idp-server/src/main/java/de/gematik/idp/server/controllers/IdpController.java @@ -51,9 +51,9 @@ import java.util.Map; import java.util.Map.Entry; import java.util.NoSuchElementException; -import kong.unirest.HttpResponse; -import kong.unirest.JsonNode; -import kong.unirest.Unirest; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.JsonNode; +import kong.unirest.core.Unirest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; diff --git a/idp-server/src/test/java/de/gematik/idp/server/AppListTest.java b/idp-server/src/test/java/de/gematik/idp/server/AppListTest.java index fdca8ac..35d0cc8 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/AppListTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/AppListTest.java @@ -19,9 +19,9 @@ import static de.gematik.idp.IdpConstants.APPLIST_ENDPOINT; import static org.assertj.core.api.Assertions.assertThat; -import kong.unirest.HttpResponse; -import kong.unirest.Unirest; -import kong.unirest.UnirestException; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.Unirest; +import kong.unirest.core.UnirestException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/idp-server/src/test/java/de/gematik/idp/server/AuthenticationCallTest.java b/idp-server/src/test/java/de/gematik/idp/server/AuthenticationCallTest.java index 2f7294e..215ea11 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/AuthenticationCallTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/AuthenticationCallTest.java @@ -32,8 +32,8 @@ import de.gematik.idp.server.controllers.IdpKey; import de.gematik.idp.tests.PkiKeyResolver; import de.gematik.idp.token.IdpJwe; -import kong.unirest.MultipartBody; -import kong.unirest.UnirestException; +import kong.unirest.core.MultipartBody; +import kong.unirest.core.UnirestException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/idp-server/src/test/java/de/gematik/idp/server/ClientSystemValidationTest.java b/idp-server/src/test/java/de/gematik/idp/server/ClientSystemValidationTest.java index 779aa8a..3a3b1b6 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/ClientSystemValidationTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/ClientSystemValidationTest.java @@ -22,8 +22,8 @@ import de.gematik.idp.server.configuration.IdpConfiguration; import de.gematik.idp.tests.Afo; import jakarta.ws.rs.core.HttpHeaders; -import kong.unirest.HttpResponse; -import kong.unirest.Unirest; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.Unirest; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; diff --git a/idp-server/src/test/java/de/gematik/idp/server/DiscoveryDocumentTest.java b/idp-server/src/test/java/de/gematik/idp/server/DiscoveryDocumentTest.java index d97032f..5a8481e 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/DiscoveryDocumentTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/DiscoveryDocumentTest.java @@ -33,9 +33,9 @@ import java.time.ZonedDateTime; import java.util.List; import java.util.Map; -import kong.unirest.HttpResponse; -import kong.unirest.Unirest; -import kong.unirest.UnirestException; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.Unirest; +import kong.unirest.core.UnirestException; import org.apache.http.HttpStatus; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/idp-server/src/test/java/de/gematik/idp/server/FederationIdpListControllerTest.java b/idp-server/src/test/java/de/gematik/idp/server/FederationIdpListControllerTest.java index fb294bf..8a15cdf 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/FederationIdpListControllerTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/FederationIdpListControllerTest.java @@ -22,9 +22,9 @@ import de.gematik.idp.server.data.FedIdpListEntry; import de.gematik.idp.token.JsonWebToken; import java.util.List; -import kong.unirest.HttpResponse; -import kong.unirest.Unirest; -import kong.unirest.UnirestException; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.Unirest; +import kong.unirest.core.UnirestException; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; diff --git a/idp-server/src/test/java/de/gematik/idp/server/IdpControllerExceptionHandlerTest.java b/idp-server/src/test/java/de/gematik/idp/server/IdpControllerExceptionHandlerTest.java index 633b3ba..c866e6d 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/IdpControllerExceptionHandlerTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/IdpControllerExceptionHandlerTest.java @@ -31,10 +31,10 @@ import de.gematik.idp.server.exceptions.handler.IdpServerExceptionHandler; import de.gematik.idp.server.services.IdpAuthenticator; import de.gematik.idp.tests.PkiKeyResolver; -import kong.unirest.HttpResponse; -import kong.unirest.JsonNode; -import kong.unirest.Unirest; -import kong.unirest.json.JSONObject; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.JsonNode; +import kong.unirest.core.Unirest; +import kong.unirest.core.json.JSONObject; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; diff --git a/idp-server/src/test/java/de/gematik/idp/server/IdpControllerParameterValidationTest.java b/idp-server/src/test/java/de/gematik/idp/server/IdpControllerParameterValidationTest.java index a34c196..ac203fc 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/IdpControllerParameterValidationTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/IdpControllerParameterValidationTest.java @@ -48,12 +48,12 @@ import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; import java.util.function.UnaryOperator; -import kong.unirest.GetRequest; -import kong.unirest.HttpRequest; -import kong.unirest.HttpResponse; -import kong.unirest.JsonNode; -import kong.unirest.MultipartBody; -import kong.unirest.Unirest; +import kong.unirest.core.GetRequest; +import kong.unirest.core.HttpRequest; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.JsonNode; +import kong.unirest.core.MultipartBody; +import kong.unirest.core.Unirest; import lombok.SneakyThrows; import org.apache.commons.lang3.tuple.Pair; import org.assertj.core.api.AssertionsForClassTypes; diff --git a/idp-server/src/test/java/de/gematik/idp/server/KeyRetrievalTest.java b/idp-server/src/test/java/de/gematik/idp/server/KeyRetrievalTest.java index 361badd..e2dd90d 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/KeyRetrievalTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/KeyRetrievalTest.java @@ -24,10 +24,10 @@ import de.gematik.idp.tests.Rfc; import de.gematik.idp.token.TokenClaimExtraction; import java.util.stream.Collectors; -import kong.unirest.HttpResponse; -import kong.unirest.JsonNode; -import kong.unirest.Unirest; -import kong.unirest.UnirestException; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.JsonNode; +import kong.unirest.core.Unirest; +import kong.unirest.core.UnirestException; import org.jose4j.jwk.JsonWebKey; import org.jose4j.jwk.JsonWebKeySet; import org.jose4j.lang.JoseException; diff --git a/idp-server/src/test/java/de/gematik/idp/server/PairingControllerAccessTest.java b/idp-server/src/test/java/de/gematik/idp/server/PairingControllerAccessTest.java index 273bade..656c697 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/PairingControllerAccessTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/PairingControllerAccessTest.java @@ -56,10 +56,10 @@ import java.security.cert.CertificateEncodingException; import java.util.Base64; import java.util.Set; -import kong.unirest.HttpResponse; -import kong.unirest.JsonNode; -import kong.unirest.Unirest; -import kong.unirest.UnirestException; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.JsonNode; +import kong.unirest.core.Unirest; +import kong.unirest.core.UnirestException; import org.jose4j.jws.JsonWebSignature; import org.jose4j.jwt.JwtClaims; import org.jose4j.lang.JoseException; diff --git a/idp-server/src/test/java/de/gematik/idp/server/PkceServerTest.java b/idp-server/src/test/java/de/gematik/idp/server/PkceServerTest.java index 339545e..6cb2e7a 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/PkceServerTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/PkceServerTest.java @@ -39,8 +39,8 @@ import de.gematik.idp.token.IdpJwe; import java.security.Key; import java.util.Map; -import kong.unirest.Unirest; -import kong.unirest.UnirestException; +import kong.unirest.core.Unirest; +import kong.unirest.core.UnirestException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/idp-server/src/test/java/de/gematik/idp/server/TokenRetrievalTest.java b/idp-server/src/test/java/de/gematik/idp/server/TokenRetrievalTest.java index ae97d04..6bf1202 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/TokenRetrievalTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/TokenRetrievalTest.java @@ -57,9 +57,10 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.function.UnaryOperator; -import kong.unirest.MultipartBody; -import kong.unirest.Unirest; -import kong.unirest.UnirestException; +import kong.unirest.core.HttpResponse; +import kong.unirest.core.MultipartBody; +import kong.unirest.core.Unirest; +import kong.unirest.core.UnirestException; import org.apache.http.HttpHeaders; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.json.JSONException; @@ -801,7 +802,7 @@ void verifyUserConsent() throws UnirestException { } private JsonWebToken extractAuthenticationTokenFromResponse( - final kong.unirest.HttpResponse response, final String parameterName) { + final HttpResponse response, final String parameterName) { return Optional.ofNullable(response.getHeaders().getFirst("Location")) .map(uri -> UriUtils.extractParameterValue(uri, parameterName)) .map(code -> new IdpJwe(code)) diff --git a/idp-server/src/test/java/de/gematik/idp/server/services/ServerVersionInterceptorTest.java b/idp-server/src/test/java/de/gematik/idp/server/services/ServerVersionInterceptorTest.java index 602e6d7..497f8ba 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/services/ServerVersionInterceptorTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/services/ServerVersionInterceptorTest.java @@ -20,7 +20,7 @@ import de.gematik.idp.IdpConstants; import de.gematik.idp.server.configuration.IdpConfiguration; -import kong.unirest.Unirest; +import kong.unirest.core.Unirest; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; diff --git a/idp-test/pom.xml b/idp-test/pom.xml index 82ecfd8..162a47d 100644 --- a/idp-test/pom.xml +++ b/idp-test/pom.xml @@ -6,11 +6,11 @@ de.gematik.idp idp-global - 28.0.1 + 28.0.2 ../pom.xml idp-test - 28.0.1 + 28.0.2 diff --git a/idp-testsuite/pom.xml b/idp-testsuite/pom.xml index 6000a4d..2a6cb7d 100644 --- a/idp-testsuite/pom.xml +++ b/idp-testsuite/pom.xml @@ -6,7 +6,7 @@ de.gematik.idp idp-testsuite - 28.0.1 + 28.0.2 jar @@ -18,20 +18,25 @@ 1.0.1 17 20240303 - 3.3.2 - 3.2.5 - 3.4.1 + 3.4.0 + 3.3.0 + 3.4.2 3.7.0 3.3.1 3.3.1 - 3.2.5 + 3.3.0 5.4.0 2.0.13 - 3.0.5 + 3.1.1 + + ch.qos.logback + logback-classic + 1.5.6 + @@ -185,7 +190,7 @@ maven-failsafe-plugin - 3.2.5 + 3.3.0 **/Driver*.java @@ -447,6 +452,49 @@ + + com.diffplug.spotless + spotless-maven-plugin + 2.43.0 + + + + + + + **/*.yml + + + **/target/**/* + + + + + + true + 2 + + + + + + + + ${version.spotless.google-java-format} + + true + + + + + **/*.md + + + **/target/**/* + + + + diff --git a/idp-testsuite/src/test/java/de/gematik/idp/test/steps/StepsGlue.java b/idp-testsuite/src/test/java/de/gematik/idp/test/steps/StepsGlue.java index 66d58dd..a6a4074 100644 --- a/idp-testsuite/src/test/java/de/gematik/idp/test/steps/StepsGlue.java +++ b/idp-testsuite/src/test/java/de/gematik/idp/test/steps/StepsGlue.java @@ -1266,6 +1266,7 @@ public void iAddTokenKeyFromConfig(final String tokenKeyLocation) { TigerGlobalConfiguration.resolvePlaceholders( TigerGlobalConfiguration.readString(tokenKeyLocation))); } + // ================================================================================================================= // // Z E N T R A L E R I D P F A S T T R A C K diff --git a/idp-testsuite/src/test/java/de/gematik/idp/test/steps/model/DiscoveryDocument.java b/idp-testsuite/src/test/java/de/gematik/idp/test/steps/model/DiscoveryDocument.java index 1dd79ff..22d8288 100644 --- a/idp-testsuite/src/test/java/de/gematik/idp/test/steps/model/DiscoveryDocument.java +++ b/idp-testsuite/src/test/java/de/gematik/idp/test/steps/model/DiscoveryDocument.java @@ -177,8 +177,12 @@ public void readPublicKeysFromURIs() { } private JSONObject getPuKFromJSONAttribute(String uri) - throws JSONException, KeyStoreException, CertificateException, NoSuchAlgorithmException, - IOException, URISyntaxException { + throws JSONException, + KeyStoreException, + CertificateException, + NoSuchAlgorithmException, + IOException, + URISyntaxException { if (uri.equals("$NULL")) { return null; } else if (uri.startsWith("http")) { diff --git a/pom.xml b/pom.xml index f67d89c..773a938 100644 --- a/pom.xml +++ b/pom.xml @@ -7,13 +7,13 @@ org.springframework.boot spring-boot-starter-parent - 3.3.0 + 3.3.1 de.gematik.idp idp-global - 28.0.1 + 28.0.2 pom IDP @@ -97,7 +97,7 @@ 3.4.2 5.4.0 3.2.4 - 3.14.5 + 4.4.0 3.6.0 0.44.0 @@ -106,28 +106,28 @@ 4.0.0 2.23.1 3.8.6 - 3.3.2 + 3.4.0 3.13.0 3.1.2 3.5.0 - 3.2.5 + 3.3.0 3.2.4 3.4.1 3.7.0 - 3.5.0 + 3.6.0 3.3.1 3.12.1 3.3.1 - 3.2.5 + 3.3.0 1.7.0 2.0.13 4.0.0.4121 2.43.0 1.15.0 - 3.3.0 + 3.3.1 false @@ -155,7 +155,7 @@ com.konghq - unirest-java + unirest-java-core ${version.unirest} @@ -194,6 +194,11 @@ org.apache.logging.log4j log4j-slf4j2-impl ${version.log4j2} + + + com.konghq + unirest-objectmapper-jackson + 4.2.9