From 77e825fd80c7bab4f178bca4f9e652ac56574491 Mon Sep 17 00:00:00 2001 From: Gematik Date: Thu, 14 Mar 2024 10:51:57 +0100 Subject: [PATCH] v27.0.2 --- README.md | 2 +- ReleaseNotes.md | 4 + doc/tokenFlowEgk.html | 396 +++++------ doc/tokenFlowPs.html | 378 +++++----- doc/tokenFlowSso.html | 664 +++++++++--------- idp-client/pom.xml | 4 +- .../java/de/gematik/idp/client/IdpClient.java | 17 +- idp-commons/pom.xml | 6 +- idp-crypto/pom.xml | 4 +- idp-report/pom.xml | 2 +- idp-sektoral/pom.xml | 4 +- idp-server/pom.xml | 6 +- .../de/gematik/idp/server/EpaClientTest.java | 26 + idp-test/pom.xml | 4 +- idp-testsuite/pom.xml | 4 +- pom.xml | 6 +- 16 files changed, 783 insertions(+), 744 deletions(-) diff --git a/README.md b/README.md index 54b4039..64c30bd 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=27.0.1 +$ export appVersion=27.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 bf4d3e2..356e4fd 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,3 +1,7 @@ +# Release 27.0.2 + +- adapt idp-client login for ePA (wip) + # Release 27.0.1 - add missing scope for gitHub diff --git a/doc/tokenFlowEgk.html b/doc/tokenFlowEgk.html index 8baef10..1039bb5 100644 --- a/doc/tokenFlowEgk.html +++ b/doc/tokenFlowEgk.html @@ -665,50 +665,50 @@ background-color: #469408!important; }
Gerendert mit https://github.com/gematik/app-RbelLogger
Created Tue, 5 Mar 2024 12:42:42 +0100
Created Thu, 14 Mar 2024 09:06:09 +0100

1 GET http://localhost:38497/.well-known/openid-configuration127.0.0.1:-1localhost:34983

1 GET http://localhost:33233/.well-known/openid-configuration127.0.0.1:-1localhost:44523

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:34983
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:44523
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

2200localhost:34983127.0.0.1:-1

2200localhost:44523127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Content-Length
3118
Date
Tue, 05 Mar 2024 11:42:17 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/jwt;charset=UTF-8

RES Body

JWT

Headers
{
+Date: Thu, 14 Mar 2024 08:05:44 GMT
+Content-Type: application/jwt;charset=UTF-8

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Content-Length
3118
Date
Thu, 14 Mar 2024 08:05:44 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:38497/sign_response",
URL des Authorization Endpunkts.
- "auth_pair_endpoint" : "http://localhost:38497/alt_response",
URL des Biometrie-Authorization Endpunkts.
- "sso_endpoint" : "http://localhost:38497/sso_response",
URL des SSO-Authorization Endpunkts.
- "uri_pair" : "http://localhost:38497/pairings",
URL des Pairing-Endpunkts
- "token_endpoint" : "http://localhost:38497/token",
URL des Authorization Endpunkts.
- "third_party_authorization_endpoint" : "http://localhost:38497/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:33233/sign_response",
URL des Authorization Endpunkts.
+ "auth_pair_endpoint" : "http://localhost:33233/alt_response",
URL des Biometrie-Authorization Endpunkts.
+ "sso_endpoint" : "http://localhost:33233/sso_response",
URL des SSO-Authorization Endpunkts.
+ "uri_pair" : "http://localhost:33233/pairings",
URL des Pairing-Endpunkts
+ "token_endpoint" : "http://localhost:33233/token",
URL des Authorization Endpunkts.
+ "third_party_authorization_endpoint" : "http://localhost:33233/extauth", "federation_authorization_endpoint" : "https://idpfadi.dev.gematik.solutions/auth", - "uri_disc" : "http://localhost:38497/.well-known/openid-configuration",
URL des Discovery-Dokuments
+ "uri_disc" : "http://localhost:33233/.well-known/openid-configuration",
URL des Discovery-Dokuments
"issuer" : "https://idp.dev.gematik.solutions", - "jwks_uri" : "http://localhost:38497/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
- "exp" : 1709725337,
Gültigkeit des Tokens
- "iat" : 1709638937,
Zeitpunkt der Ausstellung des Tokens
- "uri_puk_idp_enc" : "http://localhost:38497/idpEnc/jwk.json", - "uri_puk_idp_sig" : "http://localhost:38497/idpSig/jwk.json", + "jwks_uri" : "http://localhost:33233/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
+ "exp" : 1710489944,
Gültigkeit des Tokens
+ "iat" : 1710403544,
Zeitpunkt der Ausstellung des Tokens
+ "uri_puk_idp_enc" : "http://localhost:33233/idpEnc/jwk.json", + "uri_puk_idp_sig" : "http://localhost:33233/idpSig/jwk.json", "subject_types_supported" : [ "pairwise" ], "id_token_signing_alg_values_supported" : [ "BP256R1" ], "response_types_supported" : [ "code" ], @@ -718,27 +718,27 @@ "acr_values_supported" : [ "gematik-ehealth-loa-high" ], "token_endpoint_auth_methods_supported" : [ "none" ], "code_challenge_methods_supported" : [ "S256" ], - "kk_app_list_uri" : "http://localhost:38497/directory/kk_apps", - "fed_idp_list_uri" : "http://localhost:38497/fed_idp_list" -}

Signature

Was verified using Key puk_disc_sig

Signature

Was verified using Key puk_disc_sig

3 GET http://localhost:38497/idpSig/jwk.json127.0.0.1:-1localhost:34983

3 GET http://localhost:33233/idpSig/jwk.json127.0.0.1:-1localhost:44523

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:34983
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:44523
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

4200localhost:34983127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.1
Date
Tue, 05 Mar 2024 11:42: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"}

4200localhost:44523127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.2
Date
Thu, 14 Mar 2024 08:05:52 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
@@ -746,57 +746,57 @@ "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:38497/idpEnc/jwk.json127.0.0.1:-1localhost:34983

5 GET http://localhost:33233/idpEnc/jwk.json127.0.0.1:-1localhost:44523

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:34983
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:44523
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

6200localhost:34983127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.1
Date
Tue, 05 Mar 2024 11:42: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"}

6200localhost:44523127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.2
Date
Thu, 14 Mar 2024 08:05:54 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:38497/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=yROkmOYXz_3V83OY3S095p88zMbhIHP5&code_challenge=FVaRMlx0souj5y-jBaB4MAkhYJJmpLw5kdeHC93sr7s&code_challenge_method=S256&scope=openid+e-rezept&nonce=JMt0fIv21UaU0OGDkMmC5u9AwEWjNPhG127.0.0.1:-1localhost:34983

7 GET http://localhost:33233/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=jnSWkI-lt5nDVVpRVOhlaeB_jkD-39pS&code_challenge=AWVefZkkp6GY65a0oAzT6xOZX-yIoRa154eafgNxGyI&code_challenge_method=S256&scope=e-rezept+openid&nonce=zeL1ZG1Pk8LntoaZQr3o9GWJg6wLppco127.0.0.1:-1localhost:44523

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:34983
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:44523
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

8200localhost:34983127.0.0.1:-1

8200localhost:44523127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Date
Tue, 05 Mar 2024 11:42:28 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM0OTgzIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJWQ0ZfbUU2eVNFM0VJSEY3aDBWUDNwVXpkY0RBOTBOUXU3ZVZseWFkUW9VIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IkpNdDBmSXYyMVVhVTBPR0RrTW1DNXU5QXdFV2pOUGhHIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJ5Uk9rbU9ZWHpfM1Y4M09ZM1MwOTVwODh6TWJoSUhQNSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MDk2MzkxMjgsImlhdCI6MTcwOTYzODk0OCwiY29kZV9jaGFsbGVuZ2UiOiJGVmFSTWx4MHNvdWo1eS1qQmFCNE1Ba2hZSkptcEx3NWtkZUhDOTNzcjdzIiwianRpIjoiOTNlMzM3ZGQ2M2RhYzViMSJ9.YF1WALwBWl_mvps-Of-ITVYBwjoipu48jzFav8YWU3xTC0Q19NaACXiXNwd4xQL2eIDQr2Ln1HSxRqqwc8RIzw",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Thu, 14 Mar 2024 08:05:54 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Date
Thu, 14 Mar 2024 08:05:54 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ0NTIzIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJmeXJkaEJsTlloYUY0SV9FeGxBRTZRSlRxRXVxeGhCNXFVM0VSakRUSld3IiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6InplTDFaRzFQazhMbnRvYVpRcjNvOUdXSmc2d0xwcGNvIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJqblNXa0ktbHQ1bkRWVnBSVk9obGFlQl9qa0QtMzlwUyIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTA0MDM3MzUsImlhdCI6MTcxMDQwMzU1NSwiY29kZV9jaGFsbGVuZ2UiOiJBV1ZlZlpra3A2R1k2NWEwb0F6VDZ4T1pYLXlJb1JhMTU0ZWFmZ054R3lJIiwianRpIjoiZGQyNmE2ZjZiMzQzNjcxZiJ9.FKSKCvKgD4Pfi7hN66-JBmgQtmKZCiGEydF2J2Nj0dopnjk5Cz2alT-47gOxlKwi3YC5lcA9W40qjyzZkEy61w",
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.", @@ -811,140 +811,140 @@ "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:34983",
+}

Body

{
+  "iss" : "http://localhost:44523",
   "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" : "VCF_mE6ySE3EIHF7h0VP3pUzdcDA90NQu7eVlyadQoU",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "fyrdhBlNYhaF4I_ExlAE6QJTqEuqxhB5qU3ERjDTJWw",
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" : "JMt0fIv21UaU0OGDkMmC5u9AwEWjNPhG",
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" : "zeL1ZG1Pk8LntoaZQr3o9GWJg6wLppco",
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" : "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" : "yROkmOYXz_3V83OY3S095p88zMbhIHP5",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "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" : "jnSWkI-lt5nDVVpRVOhlaeB_jkD-39pS",
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" : 1709639128,
Gültigkeit des Tokens
- "iat" : 1709638948,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "FVaRMlx0souj5y-jBaB4MAkhYJJmpLw5kdeHC93sr7s",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "93e337dd63dac5b1"
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:38497/sign_response127.0.0.1:-1localhost:34983

9 POST http://localhost:33233/sign_response127.0.0.1:-1localhost:44523

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:34983
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
{
+Host: localhost:44523
+Connection: keep-alive

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:44523
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
{
   "alg" : "ECDH-ES",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1709639128,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
+ "exp" : 1710403735,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
"epk" : { "kty" : "EC", - "x" : "GICJD1rqN2Wl7nkXGVOgiGAf96kIKE1PdjuvQRyRdF4",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "AiqvZVEmJncmhpwOWnQPbxDMdsLzrsUp0O_1bkJjtk8",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "DDTmjD4JLajfLvQRgb3sQ_12ANG7I2GznkyPcaKDG1Q",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "otHJZDJzwlIbB91bMSeQ3ugt2X16CtuQ7VhPg9F5L8c",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body

{
-  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pNME9UZ3pJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKV1EwWmZiVVUyZVZORk0wVkpTRVkzYURCV1VETndWWHBrWTBSQk9UQk9VWFUzWlZac2VXRmtVVzlWSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklrcE5kREJtU1hZeU1WVmhWVEJQUjBSclRXMUROWFU1UVhkRlYycE9VR2hISWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pYjNCbGJtbGtJR1V0Y21WNlpYQjBJaXdpYzNSaGRHVWlPaUo1VWs5cmJVOVpXSHBmTTFZNE0wOVpNMU13T1RWd09EaDZUV0pvU1VoUU5TSXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM01EazJNemt4TWpnc0ltbGhkQ0k2TVRjd09UWXpPRGswT0N3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lKR1ZtRlNUV3g0TUhOdmRXbzFlUzFxUW1GQ05FMUJhMmhaU2twdGNFeDNOV3RrWlVoRE9UTnpjamR6SWl3aWFuUnBJam9pT1RObE16TTNaR1EyTTJSaFl6VmlNU0o5LllGMVdBTHdCV2xfbXZwcy1PZi1JVFZZQndqb2lwdTQ4anpGYXY4WVdVM3hUQzBRMTlOYUFDWGlYTndkNHhRTDJlSURRcjJMbjFIU3hScXF3YzhSSXp3In0.gBs9vMhOqrqHMTkh48bkOLb2kL0z8s7zfSZrH5d9jEGZv9IdM50eGTqYgZFI-tq3HkWkKiIwhQjdCVEn3GcD-g"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pRME5USXpJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKbWVYSmthRUpzVGxsb1lVWTBTVjlGZUd4QlJUWlJTbFJ4UlhWeGVHaENOWEZWTTBWU2FrUlVTbGQzSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklucGxUREZhUnpGUWF6aE1iblJ2WVZwUmNqTnZPVWRYU21jMmQweHdjR052SWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pWlMxeVpYcGxjSFFnYjNCbGJtbGtJaXdpYzNSaGRHVWlPaUpxYmxOWGEwa3RiSFExYmtSV1ZuQlNWazlvYkdGbFFsOXFhMFF0TXpsd1V5SXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM01UQTBNRE0zTXpVc0ltbGhkQ0k2TVRjeE1EUXdNelUxTlN3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lKQlYxWmxabHByYTNBMlIxazJOV0V3YjBGNlZEWjRUMXBZTFhsSmIxSmhNVFUwWldGbVowNTRSM2xKSWl3aWFuUnBJam9pWkdReU5tRTJaalppTXpRek5qY3haaUo5LkZLU0tDdktnRDRQZmk3aE42Ni1KQm1nUXRtS1pDaUdFeWRGMkoyTmowZG9wbmprNUN6MmFsVC00N2dPeGxLd2kzWUM1bGNBOVc0MHFqeXpaa0V5NjF3In0.HFqVjYdj5Cvv6r4W7hSV75iFbj6CkZ9ZeECKosxVBwwNzjqdA_r9YGLmGrB8TdTvjtPx20SXq_zu0UtV-Hulkw"
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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM0OTgzIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJWQ0ZfbUU2eVNFM0VJSEY3aDBWUDNwVXpkY0RBOTBOUXU3ZVZseWFkUW9VIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IkpNdDBmSXYyMVVhVTBPR0RrTW1DNXU5QXdFV2pOUGhHIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJ5Uk9rbU9ZWHpfM1Y4M09ZM1MwOTVwODh6TWJoSUhQNSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MDk2MzkxMjgsImlhdCI6MTcwOTYzODk0OCwiY29kZV9jaGFsbGVuZ2UiOiJGVmFSTWx4MHNvdWo1eS1qQmFCNE1Ba2hZSkptcEx3NWtkZUhDOTNzcjdzIiwianRpIjoiOTNlMzM3ZGQ2M2RhYzViMSJ9.YF1WALwBWl_mvps-Of-ITVYBwjoipu48jzFav8YWU3xTC0Q19NaACXiXNwd4xQL2eIDQr2Ln1HSxRqqwc8RIzw"
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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ0NTIzIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJmeXJkaEJsTlloYUY0SV9FeGxBRTZRSlRxRXVxeGhCNXFVM0VSakRUSld3IiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6InplTDFaRzFQazhMbnRvYVpRcjNvOUdXSmc2d0xwcGNvIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJqblNXa0ktbHQ1bkRWVnBSVk9obGFlQl9qa0QtMzlwUyIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTA0MDM3MzUsImlhdCI6MTcxMDQwMzU1NSwiY29kZV9jaGFsbGVuZ2UiOiJBV1ZlZlpra3A2R1k2NWEwb0F6VDZ4T1pYLXlJb1JhMTU0ZWFmZ054R3lJIiwianRpIjoiZGQyNmE2ZjZiMzQzNjcxZiJ9.FKSKCvKgD4Pfi7hN66-JBmgQtmKZCiGEydF2J2Nj0dopnjk5Cz2alT-47gOxlKwi3YC5lcA9W40qjyzZkEy61w"
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:34983",
+}

Body

{
+  "iss" : "http://localhost:44523",
   "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" : "VCF_mE6ySE3EIHF7h0VP3pUzdcDA90NQu7eVlyadQoU",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "fyrdhBlNYhaF4I_ExlAE6QJTqEuqxhB5qU3ERjDTJWw",
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" : "JMt0fIv21UaU0OGDkMmC5u9AwEWjNPhG",
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" : "zeL1ZG1Pk8LntoaZQr3o9GWJg6wLppco",
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" : "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" : "yROkmOYXz_3V83OY3S095p88zMbhIHP5",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "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" : "jnSWkI-lt5nDVVpRVOhlaeB_jkD-39pS",
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" : 1709639128,
Gültigkeit des Tokens
- "iat" : 1709638948,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "FVaRMlx0souj5y-jBaB4MAkhYJJmpLw5kdeHC93sr7s",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "93e337dd63dac5b1"
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:34983127.0.0.1:-1

10302localhost:44523127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Content-Length
0
Date
Tue, 05 Mar 2024 11:42: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=yROkmOYXz_3V83OY3S095p88zMbhIHP5
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Thu, 14 Mar 2024 08:05:57 GMT
+Location: http://redirect.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzYxN30..oKRqjLcDWCzGW6Xh.MtTDGRp9VQe4XCddSLzaVNffMW4Rr7Grw4xMLSQ6YoscIYHHxToHg_06ehxErO-S5hjqeR8S1kU_EE4WfDf1jAQGXYZha1Yu7sJx0Aj3deU1U_T0-uGCYexctxJ3ufFKEQX54WmEjGf9Tkum4kpLJMWqNFjBwtcggcbBMWF5TO1mW-9963bXW-RUPz2rSit4654Sg4n_H_vAsfdZezFbNr7zY-epEnrJjtlmJQZ1XpN_A_Z-USJITcEisbGWGX1aRHk2hEbFNBDXm0X35b38LwIFQsYooJ9NYennImyUfZ7n3vRaaK0avtjfk1JBx_5o2ao-Urnsj_o147jGcPp8pUuix51Zq5sC1KuDCVh3soVcbb-FwLYC9dFWP2aImhIepXRptkFDZ5pNge8bU2jDF106v_0ZAja35d62NUxiI3OPee2wtT7t4BIr2AW_Eh6Q6zXy2HPjVACPcHpR5c6jvR4oe7T7uHDvLT7jaJLlxct4axkw6hUb7oyYcBM_sLs-FilxNWUMilWVX3hpsKPr3T1JbHcSz1_GPuM_VeTa4y4xnlSyc4mKrovFLLVofLBKVgIsv4lpEi10vAUhNi04JKt5OYv1mL9vQ9Jownikce6GDCKd9Kd7PUM_IkBnW5a8K89N8qXffuitLO398TW9mLUMYOf3HKc8sR5L07WUiOZSFV_494SAhX0khEEgDziolp6ZzIQkpLY1GoG2gj_pxRFkAs7Cm39Na8QlEmbCPRRhBIiO_YImP1yeHmXm1GGBYkCQ0hHHILSV-f0DjsbBhKWPTIW7jOuKH8lrTOfvjeZYRTwSOeaOb4xo8A4yo4mxQny8xpRUsPwE85eRNQ96Iu6POTJgwUWXaLgkRbq4X5glcGjmII6l2qugXRTr6kH-_v65XONXxi0IHV3XZHQBfcViiQEF8Yi8ieVUhJPhUdMv_MDNddC5_7nwBL-CTEHFTAA5CXq5vzeElF4ONmVkA__9MbQkSpsUJvo8kyMwmTPOJTmjxU7muKV-esh7f5S8SWjApke-bdZ12qkao-_Hu_lZV7DBeO5troWNzefBN8Jq7QYg_2Oauf5qRiuAAIvQRIYgpfK4m2aNnJb2hKJen-JIsaWRrOoIJkAmD4P6rN9r7Y6pdIyyXRLA007IAZ4rj4a-5WiTva7P2wTjmguOCh32dPXAfTMkB7vJyGx1f28T5H2ZweaOuBECib8ybTkesBIw0je7H2-gRkATVhP5zhO_9cMxHr8-CnVufZkwCNXkT0A_nNkleZ9mqpTmSU8rIo6xRhl-Y4B_1nJsJhQh5fbESz7B3t08d6iC7VIUU1IGG0q26BWqWJpuan1Gt6DnH67AwP9ozJ-1HhwKDlvJ8Js9tC1w-XOSSrW3ab69b_Jd59MRuL7lQx4KEyNUUmI3ShJHS15GaKgr.baAL94LAPUeWk1uwmv9DSA&ssotoken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQ0Njc1N30..ziz-_wMWBGPX27JB.Vn11cRLty8BwgoxIZrFxlRX27hme825pG7anvAwmNhwZtZUozAtPk4-PPAkmVvnfK-cg-7SSzT1kaEfovTd2NAF9FqSTiX0g684msZQEwY6HtChUND39YPNkOdVKYp8_GaPd-7ukFPNcEvLqu35V9xga0pxmah0mMTLuzYUh-kxIhb5__WI38HHCWKMynIu4EEUXbGB_SzeaIu1waS51HvkA964kvIGb08C7uoGKRdRzbyvs4LZVvyhwQIXPEOpIw9fOr_JmSkdFdHKT7R4xLVwicPzAiYC4NoYD3Z9NPbKc53HZSQ5If8EEhAH0v-ucBYClPXTHdr0HQU3gW4IYexir_iGeACYzPHQCwhyxQ2TE-pwVaiscP-HnPFUBVDwruU3PwKb0ZDpjYB1_GgzGmIaDftczE6zKgngRxuvXgCUTtpcY0gJI6zoR2ihs6FsrmO6QIehUfraLqXMuGPPgvCiSbIRglR5qTh0U-6kW0wBXq5ifmoV9dkZO_HeH9vqUc8EbMSDyFlQrNqRDfBbRw_O7R8TncVMy3f0LR-jEmJLtOh9ldh1SoCIPwPMA3M89HGAsBMRWW1F7j4RlcnEPwdGAmnd7zrNalP9gjxuL-LRVvnsQ_XmGP8lxuZImSSCdR6Lp1B2V3Ykwb4-zD8CBuoN5luoBwAiYatSaUjz3X1DOjNOryjF8QQBeE7VJKXnznZZZ93UJyP0ecm0HAaRYdkOPKv_YbZCcnu5e63B0tFSD1bOv13PDndPzWUEUYpjk1PuDZRZSPAJEBepVGrwxzNjE_L5sPkUjDKtYK_qp3Tw8MZw8OYmwLFbJ6L3oy8qE-HmB9I1Cf9GHycmrE04JrXTyK4cQqLhLr1Xu6Tff3G6rB2UPgT-yOubd3vn5RLnQFfPlGe3ZzmwjAFZJox6P6-GzKGbip5S0ecAsBJOUWeLKlUKuABFUJEP4ad6piXUNM1kBW48lByri-5UZTm8HCuDW-Vr6aiOpR9qinvIC7rikdnVT_-6_o7tqC0AaHNJvGmpxEAqZ7EA7X9iZflvUDClGQAMp1xxuubSSuzdBvVrCFMIXd87uXRPBgHF_ls3c7wK1roU5hu3xBg28ELiZOpdDcOP4CxZhlGz08x5yLPMrSxkijm0faBQIqI7tRGshZvNaPdnvhLWqKoNOzC9bgenwQ87x4wVyKds1M4uRtWCFZquDpKBJ-V8VwZ3nMeUPbGHzl2O6sp_7Wnbl2h_yL5qUPaBGmCOR1qNmIXdLjZj7f4Vz69L9kEK8T4cMzZUS7_bp6dJO18jurEZKnyLbwJ8mAeehnFTZcD5r8ohf0sJIxtTX6FU5v1kcIC5OgqODjqfH_a0HCM_7ZIXUrFC2PtPrUjx8Z4TRww8wKIJCxwSGJrsWpXcKu4WPDHsnDiMSR8Ma2oJRV6PlW7Gh-Hi2Y4wtPwRCfnf6HiVvO8Li99vjViq5-k7VLzlQgOX5YKkVFBYG-6vachWbC9atia1ibyVfYOKe7orn3S1YwqsOj8M7UfgpFOO7UYoMt6tjEKx86w5fHiZkLdiBj6VDAsJZ5F2zVM8e5gBwn9RfXzL0LTDeeLk03iQPE58w9z6wximFgjnuvn2gcpy4CLsKXvt_ClgsrKG-U9Jks3m_GpfleaaOXR_83RVfGuoAb4wEa1aAtttd2OC9xa4Cos2-lWE_x_zT4rc5jGINom88qMMMJCVNIoDtylMREwFBxGMJzHE9IjijVVL2ZJ_McZbuAtK6xkip89GqXPH6BWrhs5S29Jeak4f_Mbb3jd0VPWenATekGHws8fHD2YMxoOHIYOl-kafFoi1Rn0HG00PeLqibNzn3KXkVFa1cdMWBGnVuaBhCS1M_EgkZu45_eBYrLey43prdTnQEddopQW8R15UCDU94XOiHHfDnLQpjbsvaCv5lYeHv7n4-d_3_gUI-jWIm1koi-7P_MhnkSz8S38DeF0cvSY1Jp8aPIxUrkb5HbtbGO8d5hv4ueI6plFbMEXNWcotPPWXmXE03ttnpwmqa8alFAYVi_fhIQvKdVxr2Abg4D437EIf82G5n-L4WD5V_wJrgdSxQBY_oSmZPPt5qHy4WMSvO-c_mS2-hdlSfr5ODG5mLTRCwSm2vMAtIJFWkpWW5PzxA0D_9T9SgNhNFiriTzQCmhc74YW8tJ85P7Kl7UhIiPFjsjeqa_WqQj5NmImL_yvkMe0Cjmkr-ghLNclzO7Zbyhph8Q8yQWB5ypnV8ssp98duO5IILLxXC_Ra-wotkW8ZXRD8Q7DDn7Lzsk2y2hkKVQXu0hWkG8MMIWAOVpNq7eVlQ47r6nf2AwlxZ57C6RXbVxO7V0ILHfI_jlyTXMNuGjKq33GWiuoWZEO5lmkzojwq2re8r2qz0keZ0OuwLQmkzw89ePJXhpUdmZL7v_xPu_vAgaTetgvk6Cuj2HK7RZkwEYq3wPOIv87IJp_SeHTQBusEpijmv508-a4aJx5YRjTyykD2FG-I3HFEngff8sYpwXVnYQN-k0B209Offvz8a6GNZ03SSYJ3j4j7o1ON5fhxVAASavqPN-JnoKtKtYVXtQzD6ieJRSUDiDRPX2E2jAl0ObzhN-ahT1NHDjqjfr0RymoocUw9cao1b_L8tRCyZpEd6pcbjKVC6m7LPzXblYR_znfhRk76ZGoYT5WFyKEECOtp_ITg4WHKn7X9YJG4woSIK6KxGKGf4rUJFiwmPK226qoVtWPuciTbh7cFjZzcVcWKUKvhJGXZiCT-CQsZczld-XfeT9F6wSm-nvyV3Rd4HfMcj9ASUe6K6YIbRcyVp1uflXJN3wnOHbqEKE5Ks_F5O0nceYUgXbyFPpfUpRxYnLs3mr1TEGg6WA7AEl2UWsAfxuqxaoK6EL4KYPD2r08ovh3E60Yl5tgUJMmfmqtgoIuER9zgBKrXgOpZBto-AViZTeAot1fUWkDvGKqhdGGGgcY7_hlFfJj_MOuj4_DgXKxgiGTHlcdlMR-kK8pW2BfIVO4OafEOh3zt2ulEAwhfxdh1066j-T4mdp9Cgi4YpBTSMmtb2kvdaiToG.X9vqIQdEDXJcbuHs8hLneQ&state=jnSWkI-lt5nDVVpRVOhlaeB_jkD-39pS

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Content-Length
0
Date
Thu, 14 Mar 2024 08:05:57 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=jnSWkI-lt5nDVVpRVOhlaeB_jkD-39pS
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" : 1709639010
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNDk4MyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiZWNKdm9UWUQydWdGTnUtMnplV1E0aDFEdjNvdDJyRkoiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiSk10MGZJdjIxVWFVME9HRGtNbUM1dTlBd0VXak5QaEciLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MDk2Mzg5NTAsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6InlST2ttT1lYel8zVjgzT1kzUzA5NXA4OHpNYmhJSFA1IiwiZXhwIjoxNzA5NjM5MDEwLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcwOTYzODk1MCwiY29kZV9jaGFsbGVuZ2UiOiJGVmFSTWx4MHNvdWo1eS1qQmFCNE1Ba2hZSkptcEx3NWtkZUhDOTNzcjdzIiwianRpIjoiZjRjYWIxZmIwZGI1NWUwZSJ9.TL4iZ1YzTmhwisvK8MJQBPp7QvgDrExZubUoaq_K9NBKyhPwtCAT3a3xXwvKI3mNI8UhRT1pnHdVgMOq-q6miA"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NDUyMyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiQXBoQzFGdFMtNmJqNW5KZktYSmstdHFGbTI5amd3N3QiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiemVMMVpHMVBrOExudG9hWlFyM285R1dKZzZ3THBwY28iLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTA0MDM1NTcsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6ImpuU1drSS1sdDVuRFZWcFJWT2hsYWVCX2prRC0zOXBTIiwiZXhwIjoxNzEwNDAzNjE3LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxMDQwMzU1NywiY29kZV9jaGFsbGVuZ2UiOiJBV1ZlZlpra3A2R1k2NWEwb0F6VDZ4T1pYLXlJb1JhMTU0ZWFmZ054R3lJIiwianRpIjoiODJkYWI4NjhiM2I2MGM5YSJ9.K3bcTWOlyE79pFod1lPxiSyI07qqdN7JZkgFJTTtwX823xxpFBSapUy4He3NQ0ONL0qAl9g5keyO5SFEnMVqtA"
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:34983",
+  "iss" : "http://localhost:44523",
   "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" : "ecJvoTYD2ugFNu-2zeWQ4h1Dv3ot2rFJ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "AphC1FtS-6bj5nJfKXJk-tqFm29jgw7t",
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" : "JMt0fIv21UaU0OGDkMmC5u9AwEWjNPhG",
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" : "zeL1ZG1Pk8LntoaZQr3o9GWJg6wLppco",
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" : "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" : 1709638950,
Timestamp der Authentisierung
+ "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" : 1710403557,
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" : "yROkmOYXz_3V83OY3S095p88zMbhIHP5",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1709639010,
Gültigkeit des Tokens
+ "state" : "jnSWkI-lt5nDVVpRVOhlaeB_jkD-39pS",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1710403617,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1709638950,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "FVaRMlx0souj5y-jBaB4MAkhYJJmpLw5kdeHC93sr7s",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "f4cab1fb0db55e0e"
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" : 1710403557,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "AWVefZkkp6GY65a0oAzT6xOZX-yIoRa154eafgNxGyI",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "82dab868b3b60c9a"
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" : 1709682150
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MDk2Mzg5NTAsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzA5NjgyMTUwLCJpYXQiOjE3MDk2Mzg5NTAsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.WQGydZr38KflCAOkNXcPSFb5Gf1FQtAZs2sHnItUWvJgceys6czzXjc-tEvCczlDHu1jMNrALe1lqVrXKnx4WA"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MTA0MDM1NTcsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzEwNDQ2NzU3LCJpYXQiOjE3MTA0MDM1NTcsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.X2Fe2OYtOUIm9TfX0tXINPHXApEEQDjipOVG4mqe1JFaLBGWLTRlMjJPWL8eM7jNEQiQDIic8PmumDCHHDxP9g"
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" : 1709638950,
Timestamp der Authentisierung
+ "auth_time" : 1710403557,
Timestamp der Authentisierung
"amr" : [ "mfa", "sc", "pin" ], "idNummer" : "X110411675", "iss" : "https://idp.dev.gematik.solutions", @@ -957,103 +957,103 @@ "y" : "lgJUXP3xPwcoT3PyDi5ILGmZmyrjUIYXqROD0OKrWA0"
Y-Koordinate des öffentlichen Punkts des Schlüssels
}, "given_name" : "Darius Michael Brian Ubbo", - "exp" : 1709682150,
Gültigkeit des Tokens
- "iat" : 1709638950,
Zeitpunkt der Ausstellung des Tokens
+ "exp" : 1710446757,
Gültigkeit des Tokens
+ "iat" : 1710403557,
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:38497/token127.0.0.1:-1localhost:34983

11 POST http://localhost:33233/token127.0.0.1:-1localhost:44523

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:34983
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
{
+Host: localhost:44523
+Connection: keep-alive

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:44523
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
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1709639010
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNDk4MyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiZWNKdm9UWUQydWdGTnUtMnplV1E0aDFEdjNvdDJyRkoiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiSk10MGZJdjIxVWFVME9HRGtNbUM1dTlBd0VXak5QaEciLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MDk2Mzg5NTAsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6InlST2ttT1lYel8zVjgzT1kzUzA5NXA4OHpNYmhJSFA1IiwiZXhwIjoxNzA5NjM5MDEwLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcwOTYzODk1MCwiY29kZV9jaGFsbGVuZ2UiOiJGVmFSTWx4MHNvdWo1eS1qQmFCNE1Ba2hZSkptcEx3NWtkZUhDOTNzcjdzIiwianRpIjoiZjRjYWIxZmIwZGI1NWUwZSJ9.TL4iZ1YzTmhwisvK8MJQBPp7QvgDrExZubUoaq_K9NBKyhPwtCAT3a3xXwvKI3mNI8UhRT1pnHdVgMOq-q6miA"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NDUyMyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiQXBoQzFGdFMtNmJqNW5KZktYSmstdHFGbTI5amd3N3QiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiemVMMVpHMVBrOExudG9hWlFyM285R1dKZzZ3THBwY28iLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTA0MDM1NTcsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6ImpuU1drSS1sdDVuRFZWcFJWT2hsYWVCX2prRC0zOXBTIiwiZXhwIjoxNzEwNDAzNjE3LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxMDQwMzU1NywiY29kZV9jaGFsbGVuZ2UiOiJBV1ZlZlpra3A2R1k2NWEwb0F6VDZ4T1pYLXlJb1JhMTU0ZWFmZ054R3lJIiwianRpIjoiODJkYWI4NjhiM2I2MGM5YSJ9.K3bcTWOlyE79pFod1lPxiSyI07qqdN7JZkgFJTTtwX823xxpFBSapUy4He3NQ0ONL0qAl9g5keyO5SFEnMVqtA"
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:34983",
+  "iss" : "http://localhost:44523",
   "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" : "ecJvoTYD2ugFNu-2zeWQ4h1Dv3ot2rFJ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "AphC1FtS-6bj5nJfKXJk-tqFm29jgw7t",
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" : "JMt0fIv21UaU0OGDkMmC5u9AwEWjNPhG",
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" : "zeL1ZG1Pk8LntoaZQr3o9GWJg6wLppco",
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" : "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" : 1709638950,
Timestamp der Authentisierung
+ "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" : 1710403557,
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" : "yROkmOYXz_3V83OY3S095p88zMbhIHP5",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1709639010,
Gültigkeit des Tokens
+ "state" : "jnSWkI-lt5nDVVpRVOhlaeB_jkD-39pS",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1710403617,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1709638950,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "FVaRMlx0souj5y-jBaB4MAkhYJJmpLw5kdeHC93sr7s",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "f4cab1fb0db55e0e"
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" : 1710403557,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "AWVefZkkp6GY65a0oAzT6xOZX-yIoRa154eafgNxGyI",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "82dab868b3b60c9a"
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" : "O5HNALrwO1eKP-xUu2dxaAObrlV4RKTsTn-Hf2CEFNc",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "ihIdvyEkxGPOxoSHFo-6kuZqjArwm8Y3v9GgqYOZLho",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "YDXGvRo-XKCOgPTv9jyZH__UuZbGXb_j86usbgxddY4",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "k56Q6bhCIqpf83jmLMWiWyY_j_Oo4UQ_dgJ5UhgkRk4",
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" : "8vZYcUN7Frj9zN8YKejFY-MrWp6ZPphx8h13GaYisb8", - "code_verifier" : "tISfEa3zC42w2MUa-nwdZr46r4nyK0vQh7cAbth4ZsU" -}

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:34983127.0.0.1:-1

12200localhost:44523127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Date
Tue, 05 Mar 2024 11:42:39 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Thu, 14 Mar 2024 08:06:06 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Date
Thu, 14 Mar 2024 08:06:06 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcwOTYzOTI1OX0..493tKeU8ui_NZi8B.KyQh1R26ZILu37Jqp8EkeTJEpub5Dk1EtdFinNFc0CoAc1T2JzRmJsW3EQMjlFUoH_GMh2nRts1mRmE6aDITYb465YKWHnAj7jgGo5nt4M61AwXCE2X1-U_tVBBUmCSUau5NVc0TOEU2k9ACbflteSLkeiBOUW91ptflYKmp48B5Zz6d5KYTrKsRvWJSlPkLukkCjp5TmDotQJSM8PLrP39CAKHpWMRbPooLbH4_xOd3tti8yXxGIXbYkpaPMn1svVByvE7WtsISaC5DwI1J1KE7fEgAp0udrsDW2nI-Uk7YhsbmEiduvDjmfODHs68lTUb8wir-BI8P4QuxDuomj1tpRcAtLO9RGBY_BFFHmTNsQM0WYxBCD4h9r3HsAts_tOEPjSXj6Uv7AANXRsqnK-kkFeMRt6PlalDTZDWe5pj0J9NhBnJAO5_mt4OFkyKOVKPmY7wUDcvpELprI6j_q7sjsjOmarnbLbajh3Z-uowNUfBs48jVnmguttvNOsRxXqRcPZ43lfmn-ftRavW8JViJVcuxdWHa7eIqr_y-H9Y30HWCTPyVX_eJZ_I92D79B5Hez5sT0giJuXl_PO_7jv-tBadBCA4bAZQkMJqlb887vXye9VjdUNVX8opzSr1-YlRgPJ8SEdO3bVXpO_QKo1I53lW3uMKUB0D7OO10uyIvef1npEk1BkFkE4jRit5_OhByJzJJ0irfS128kCtCE3Q7HvC5yZS5JKPGz8DXegIBWZdTEPhxaj1zpQBLeKRCMmnpdOgZxg7ZWjNljSmEqH3AaGYinnTrrj7TjYOxaAmF3tR8E7ZujZ31zIlDHsVGGe8EoHAZMxKjTY_w8f1va6elPOe1Qg00qgRLzjjzh8uktsu5tZTSprJjuDtihAMhyHg5sgOUSuYaK4tXobhYluSukzrdlIGw8SskeOmro2DCVoKp_4NHyrJviTQ986fPcZBN-XQCmTL36qjE7_eu9cSL2_qWDhMGPetcNSy3PGFgnXKeoZ4whhJ49MDqJMCnfPl-RHdstsFZ-om3dSYgL1Am5GVTAx6xgbRy6Fx1yuEplYKe4XETKZG5eeHrCbpxd22nSdzvXzx8RK9nvZ1G--JBw8hQ5wG4jFyqyG0crjwR3O-pb-RK3w6KnOQG1ZdDnuRg3Y7MeZDMcXYLw09iaDOPFmHpE3YL4jp3G3KPb5C7qcp20SegCVYwEu3-0FfOtkr7zOQ8o_20Zlk61mCi-7k.ByVtgZlVWxD2erAjFwXAdg",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcwOTYzOTI1OX0.._Rt-XLRR0wCJ1GE1.x3-K6mhO12isXodyR38oZziDXszUM0RpVQj_NCPNCG8xrIcWjdiJZ7lpRs47Ulu0FTM8062FtVqOwyG37KRSHdGihfItxuK1gMZ4dwO8VY1d83uLm69vBk7aKiS20uuZzM8IKRuW-MIqhXXjMQJA2ddPh8SukSCkBDhh7XmmzXRYfmrxABsx2StX4iVTUc4k0_VzvQEYhNf7DZqnGj4SXKNhQTiLjr2Hx1nIxXFTRSoc59MRc22sKUKmU8ykYDON5Jd2Abt__JEQo9HRpzaah7Qyw87SW1LEum1HT_6InjFuiA48WhjQY_mTEa5cErkwjLWWf6LzOBlDrXUqWKYxyO7UYyPkw6uJW9AE0ENY8AHW1rGeATPNXt8fhWdwil7-cJt29ihpKVc8W7ze5iYlyGVB_Z-lYJ7PW1jrHV02B--xGpdr7z0G16QMhKD_NhtryrYDVBogxMeglud9LmPY-Dgs4_vySdHCFIzUpgQm6kgNLgCPoAlAeaZep8xpRV7kjibr2WKMx8b7RQDfLcEBlWB7raPFYGOb5KX6aj5KTm0S61gH89ry_jx2Q3ZLu65Zg_2LbJe34XB2aqNEzMD9wRGlJsygoEqdPvWTm3I1_zmnBojZvMIt6TTFid1W3j0RNdUYUUS5l_NZVUH-03SpwTlYvWp0QykqLD9GSQOB45eHktnrY10slimQT6wVsu8KqD9dbgciFkq5YEMk6O8Lkukj2i7i52Ueai8bhZchCquULZWUBgEA6iHFXPrCsErmMrF8hYKP8bBGsAi_kBNwgwX-FhL4fr9D2b5RVddNWExW3LY5jXmJQ07J6bfZsbPd0Z08Sm3eSbowx3Dt0znjTE4zf44kM4j3z_Qz1LGdlwl2Tf8vulD1HG-JmPkVfL_8tezovgwSGx00NKDLK-sl3XCBCl8rlkUA0PEFYMSrFpJyjB78unmh-bi0L2RoK7iVV-uCjT18qrcBT6TaLO-iSS8GDrtqdTUSzel9CBV9b24sO-q28Y5LEOygKdfUIGEPlUFHkMYNb7kBLaB8Cgcv-kpfKdX8-ZkLZrtpUOQL_vCxNuPAzH-0nE8PEYjtLtAWaTt0Vsw08OnUYsh7LHCoPgfo7J-vH2c-v_pujz9DsjS2OLU7q-eW_W8dFjgzFcl_nKiXFeh_Vt-uJ093dIZz4FFo9d45d-_iOCTQZlN8it71Ef9qvbeU0ZKmRhulCNb2MD5BOpldxwy5IptpqI8CwzFI4as8Kz-4c7HG12LaiMa6z7R1Lt4W5B4.-r1klH7bFravpeqI_q2pYw"
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzg2Nn0..t1-8wYod6vpoL-Ds.ZoWhgd2oX_Sj71lF-6MbBDN-S1NtqRlT2x4Y-EEv199Rzc8OU5OaToit2PnvdBYxZCnRfOS3ioIaqTDAaLQ1QGUjJdtKpD2VrV05iBWkLZ7_mKTfXKbTdIZxWEgqEreja32c-OlBcGxe2tGuUb7IGlPpbQTuhkIC5JpBb9H0SGDnrteY5QU3bRWSADKd4Pn_SrKhdtDEuoNbC_-nS0ZKD6LwOgMK3L872Uybri6FOYmfYdqqhkkFkUnGu0I8iWCZZkiBqAPyiQVgYdir1awhQUOphf4bDnagXu29vOLuXWOpYRkiQrwYcOoVjNn7bKfAQji9HknxBhws1ljwd8jcNU4EiewaSBxEKQn13uKQnykei6ovQ5zzqV8yMIQPe3dZLNBvOFBvQ8akH_xRqh7vI6Dn4L9Z4-AhD-jevdyElS4m4DvqudG7qUIf4T_5h8ZAGpyS4QQFOWbFYVh9bg1E9dUhEzkmI3b3uzmUaSDYQUzZ9L2BxyUV0BLoyCAEwL2AyHvX1Cvbu78EukunrD0di9DeG_mJswkfdHTVjAfjzQ5JCrGVDYm3h43bjhXcw8VPSFihSxar52-Fh1r1qS8lBQ1AdIP6qc-ot_XBaLs1GyhSePIWrgeoyC85FY_h4B-fks7lYXe_k4pUfWVjIOKr_gLOxcd5xb7bN6Sc4hG4feZ9K6pX3tB9_5U9mVbnEFX6oX0dGh8yt3jLNppTxw14gBBHdRIGPQ9PLA1NM6-Se77CpYJbuL-aR_YVRPcySC4Je1NkJ0n4En2IPwFa0HOgnFicsKS3DuR1RrUHrP3nxUigoWkM-YpsG0wWVdAMkeq-VTn4jTXlDydDbNMxZo5j7cqthrm2ppXI_yL4LY50HO0rjQSfXnNZIkUsVeRU8-9A3oW85lqWgcmDvk2LSh2vZ5CPcYh6Rzb4NpOehhWRDK9Kctq0qI3BQ8G0KSA7Iazsk-grAuX3gWcT0u5_pSdjIpBUqc7WPUdwBelL_nYd15BNjW-7hbIwngb5aMpMdcDvG47b5RkOv6WYaC9ixiE0cCJfMqffj1Vm8R8BUizll_G2R-fW8vcX38sBnFk1-zfvcAxKZhZrSRo657uZPtLL4p9VFeUEBNv9AHwuGjS0DFcYL4qOOuBaHk7u1H200Bqkmuh9pgTH_zotcJIkrvKZEuf34F1nFAkpSDOqwAhuO7VlSFoDuqGo7uG997fyyTL69GjhP7l9sBwKslkSA68T-jg.OLP6Zi5AjBv5sJE0Y9TaOw",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzg2Nn0..U5_oY4L6FKZ2ehyL.WdVqqUA0fE84Xdq9AuXudPD_w-gLoVFo6uD3PDycNuaDhe-nOSQ66OUSYmg8mZGpvferztxpEEWvfb3swG9y0KKq7jcwy6yUdPlktQqVR9BCHW4cnELKT6nRvje7TjOOHU6XKmCNTnehSWkFLPGUq-xz_d6y4wFbWqegfkEb3CtRlTanFMVWaU0vyeOPa3PrwSKZzon8490M0Mvj4gvMA4Hfg_W4wAs10YWZf80W7FPu2I8npx38GHSYV-3M09p7HF_Xek7X4Omo_4BqWcx-2d57YiYtnJ2cwQ_o_roryufQ0aXKDl7_H-SDtULQp5dtstf-9P2EiaKy2EzQLwjko-VPJIX8tIXgidFN9Bih8Dx9a09_sqHYQYmfEQy1zQBhL22rebwWWn8tLl7TsgXi-0IPMrqxIj4fyV1NbbepM0TRc0A3p_flxehZonhEN9KcC7s7lg6BVQqs7MANGlhQ50ZLuqM2QinoExMrbFa2o3jkNelzrasH9auva6T2cnkm6ZrmV4GM0mTJJXrkAH7MIEmoXwY-VMQ8el6z_z8nssUQAeQtsa5xyZna6fwGFr3Jzht7f_tGXZdeZ6ekhicrHY2AQh2vqSC4kovmrtTAoJ_8THe7I8-JB-R5Urqoj66Z-ou4oHfookKY0GgsF9SdvZ9xo7Vouf8homkqgi-kH9iIV4cJDFuzXFhcWhicd57hb7UAzvCEQrUU5MrFBi1-OJrL7QrtgR8mEGMw19emNsacdJlMYAcnifmCoioO14e3XuAHfrGhZSDJQ6shyIT-QTyAg5kYTFfIvhwUYcgTw2rGZGvNZAFgJ4xDhaOD3h6PdAfV29SQ6Ycx4o7rg_wvm9cT5Q4zZlPYpjQvdtvHihqSvW6-FUcDaxJKLCAsE6NtqLM_w20IpCVbd-bicNa5YOyyhd6NJryLAFST07Aw5rA4r1kjGIraF2hfJTjOoilO7YCtLHDpyfAFifYUg3t7fSXbANhwjcPqdJTbS5e8-D3zTlbxEylzZVl2wRZm3KKo7kRJ7SIiD0tAp0AhFtSFPErop0hei2NNfWhfk5J4r6R_XIIQzFmeJ5gpGC-WiDCO4X5R239gmLLmImQnciDA1R_9R2C1mxJUB_aoLfTGni_vCE2C2Nm-kdwOXn1wAN5CwPbabCg851IcDXEdkiMj6V6D5HNmYTpaIuHH7x0yQAbV8geu--lCjFwOfEQdWSpzfd93nh3TNfSgvEG_DEu-3aOk8zTH0Q4Kc5prNJrBvQyi9-eQSv6A_6Q.llrguBSLBqYMHFUPdCWvfA"
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" : 1709639259
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoibEYwVnF2d3Fac0xqNjVyb0t2blY1QSIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoiSk10MGZJdjIxVWFVME9HRGtNbUM1dTlBd0VXak5QaEciLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcwOTYzODk1MCwiZXhwIjoxNzA5NjM5MjU5LCJpYXQiOjE3MDk2Mzg5NTksImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiYWI2NDBlMWY5YTZkOWEzYiJ9.lguyvz3QDz3MvHRLOY2vIzYPcDeWlRveHB_0i71q41pQiGsjSeD0xEyp_zTi2FNFJrWHSmr4VSLFocw5nrb4lg"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiRDFZd2NaYjY1QncwNTJ5cFZBbklLQSIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoiemVMMVpHMVBrOExudG9hWlFyM285R1dKZzZ3THBwY28iLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcxMDQwMzU1NywiZXhwIjoxNzEwNDAzODY2LCJpYXQiOjE3MTA0MDM1NjYsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiNzkxZmViMTIyYWZhZjQ2MyJ9.dxxVfTK3v3UIGUADJGpDXXBPXIQ0_mfRK_SbQYJ8INt28_dCTaTpu6I1csY2UNThWD7jjbt5tnsolSiN_hWDPA"
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" : "lF0VqvwqZsLj65roKvnV5A",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
+}

Body

{
+  "at_hash" : "D1YwcZb65Bw052ypVAnIKA",
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", @@ -1062,27 +1062,27 @@ "iss" : "https://idp.dev.gematik.solutions", "given_name" : "Darius Michael Brian Ubbo", "display_name" : "Darius Michael Brian Ubbo Bödefeld", - "nonce" : "JMt0fIv21UaU0OGDkMmC5u9AwEWjNPhG",
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" : "zeL1ZG1Pk8LntoaZQr3o9GWJg6wLppco",
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" : 1709638950,
Timestamp der Authentisierung
- "exp" : 1709639259,
Gültigkeit des Tokens
- "iat" : 1709638959,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1710403557,
Timestamp der Authentisierung
+ "exp" : 1710403866,
Gültigkeit des Tokens
+ "iat" : 1710403566,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld", - "jti" : "ab640e1f9a6d9a3b"
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" : "791feb122afaf463"
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" : 1709639259
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTcwOTYzODk1MCwiZXhwIjoxNzA5NjM5MjU5LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcwOTYzODk1OSwianRpIjoiN2I0MTAxZjZhMmRlZGJiMSJ9.V8dD1DeD7e_HJRXqWG90IO6E-Kj9IjM6lzF-Y4Ipdvpul9xLv1CioWFBMvNepxG1Hj7RTozY-du2NGBWqG_iAQ"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcxMDQwMzU1NywiZXhwIjoxNzEwNDAzODY2LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxMDQwMzU2NiwianRpIjoiZmIzYjQyOWIzOTFlOGUyYSJ9.Y2f2iYB-swrw2VQJI0_sXkwCGX29Q9ekA7qsijZOi_Q-Uu0JvC9iLB2k1m1IjT69Lsi-YEEiaq7BToec2Ot--Q"
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", @@ -1095,13 +1095,13 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "eRezeptApp", - "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" : 1709638950,
Timestamp der Authentisierung
- "exp" : 1709639259,
Gültigkeit des Tokens
+ "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" : 1710403557,
Timestamp der Authentisierung
+ "exp" : 1710403866,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1709638959,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "7b4101f6a2dedbb1"
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 Tue, 5 Mar 2024 12:42:42 +0100
\ No newline at end of file + \ No newline at end of file diff --git a/doc/tokenFlowPs.html b/doc/tokenFlowPs.html index df58a85..74edda8 100644 --- a/doc/tokenFlowPs.html +++ b/doc/tokenFlowPs.html @@ -665,50 +665,50 @@ background-color: #469408!important; }
Gerendert mit https://github.com/gematik/app-RbelLogger
Created Tue, 5 Mar 2024 12:43:27 +0100
Created Thu, 14 Mar 2024 09:06:56 +0100

31 GET http://localhost:38497/.well-known/openid-configuration127.0.0.1:-1localhost:44639

31 GET http://localhost:33233/.well-known/openid-configuration127.0.0.1:-1localhost:35209

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:44639
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:35209
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

32200localhost:44639127.0.0.1:-1

32200localhost:35209127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Content-Length
3118
Date
Tue, 05 Mar 2024 11:43:11 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/jwt;charset=UTF-8

RES Body

JWT

Headers
{
+Date: Thu, 14 Mar 2024 08:06:40 GMT
+Content-Type: application/jwt;charset=UTF-8

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Content-Length
3118
Date
Thu, 14 Mar 2024 08:06:40 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:38497/sign_response",
URL des Authorization Endpunkts.
- "auth_pair_endpoint" : "http://localhost:38497/alt_response",
URL des Biometrie-Authorization Endpunkts.
- "sso_endpoint" : "http://localhost:38497/sso_response",
URL des SSO-Authorization Endpunkts.
- "uri_pair" : "http://localhost:38497/pairings",
URL des Pairing-Endpunkts
- "token_endpoint" : "http://localhost:38497/token",
URL des Authorization Endpunkts.
- "third_party_authorization_endpoint" : "http://localhost:38497/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:33233/sign_response",
URL des Authorization Endpunkts.
+ "auth_pair_endpoint" : "http://localhost:33233/alt_response",
URL des Biometrie-Authorization Endpunkts.
+ "sso_endpoint" : "http://localhost:33233/sso_response",
URL des SSO-Authorization Endpunkts.
+ "uri_pair" : "http://localhost:33233/pairings",
URL des Pairing-Endpunkts
+ "token_endpoint" : "http://localhost:33233/token",
URL des Authorization Endpunkts.
+ "third_party_authorization_endpoint" : "http://localhost:33233/extauth", "federation_authorization_endpoint" : "https://idpfadi.dev.gematik.solutions/auth", - "uri_disc" : "http://localhost:38497/.well-known/openid-configuration",
URL des Discovery-Dokuments
+ "uri_disc" : "http://localhost:33233/.well-known/openid-configuration",
URL des Discovery-Dokuments
"issuer" : "https://idp.dev.gematik.solutions", - "jwks_uri" : "http://localhost:38497/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
- "exp" : 1709725391,
Gültigkeit des Tokens
- "iat" : 1709638991,
Zeitpunkt der Ausstellung des Tokens
- "uri_puk_idp_enc" : "http://localhost:38497/idpEnc/jwk.json", - "uri_puk_idp_sig" : "http://localhost:38497/idpSig/jwk.json", + "jwks_uri" : "http://localhost:33233/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
+ "exp" : 1710490000,
Gültigkeit des Tokens
+ "iat" : 1710403600,
Zeitpunkt der Ausstellung des Tokens
+ "uri_puk_idp_enc" : "http://localhost:33233/idpEnc/jwk.json", + "uri_puk_idp_sig" : "http://localhost:33233/idpSig/jwk.json", "subject_types_supported" : [ "pairwise" ], "id_token_signing_alg_values_supported" : [ "BP256R1" ], "response_types_supported" : [ "code" ], @@ -718,27 +718,27 @@ "acr_values_supported" : [ "gematik-ehealth-loa-high" ], "token_endpoint_auth_methods_supported" : [ "none" ], "code_challenge_methods_supported" : [ "S256" ], - "kk_app_list_uri" : "http://localhost:38497/directory/kk_apps", - "fed_idp_list_uri" : "http://localhost:38497/fed_idp_list" -}

Signature

Was verified using Key puk_disc_sig

Signature

Was verified using Key puk_disc_sig

33 GET http://localhost:38497/idpSig/jwk.json127.0.0.1:-1localhost:44639

33 GET http://localhost:33233/idpSig/jwk.json127.0.0.1:-1localhost:35209

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:44639
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:35209
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

34200localhost:44639127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.1
Date
Tue, 05 Mar 2024 11:43:15 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:35209127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.2
Date
Thu, 14 Mar 2024 08:06:44 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
@@ -746,57 +746,57 @@ "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:38497/idpEnc/jwk.json127.0.0.1:-1localhost:44639

35 GET http://localhost:33233/idpEnc/jwk.json127.0.0.1:-1localhost:35209

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:44639
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:35209
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

36200localhost:44639127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.1
Date
Tue, 05 Mar 2024 11:43:17 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:35209127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.2
Date
Thu, 14 Mar 2024 08:06:46 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:38497/sign_response?client_id=gematikTestPs&response_type=code&redirect_uri=http%3A%2F%2Ftest-ps.gematik.de%2Ferezept&state=iKT89r3VokD1JTRBbDOpmgKSPCbD24Rp&code_challenge=BQh_gg_oIuu7tlRkW_f1X_63DQCDDkm0oB6QthTDfGo&code_challenge_method=S256&scope=openid+e-rezept&nonce=A7UhwqKg3iqwJegdIkaDxHUVJpaO7ddZ127.0.0.1:-1localhost:44639

37 GET http://localhost:33233/sign_response?client_id=gematikTestPs&response_type=code&redirect_uri=http%3A%2F%2Ftest-ps.gematik.de%2Ferezept&state=ZDUQJglyoujag9jyfyC_Xt0TFSl45QwK&code_challenge=V0lqX8xgpqRGh_1dbMSG2KnWwG4XTJxAZZIeKAsQyWU&code_challenge_method=S256&scope=e-rezept+openid&nonce=C-O1J0BF-9qId2iuXSHmeasFTOK41BIB127.0.0.1:-1localhost:35209

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:44639
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:35209
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

38200localhost:44639127.0.0.1:-1

38200localhost:35209127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Date
Tue, 05 Mar 2024 11:43:17 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ0NjM5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJacFd3VUs4ZUtfa0luR1V5ZTc4cWJPVm9LNTBVY0swbjcyeldPdWJDRWpRIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IkE3VWh3cUtnM2lxd0plZ2RJa2FEeEhVVkpwYU83ZGRaIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJpS1Q4OXIzVm9rRDFKVFJCYkRPcG1nS1NQQ2JEMjRScCIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTcwOTYzOTE3OCwiaWF0IjoxNzA5NjM4OTk4LCJjb2RlX2NoYWxsZW5nZSI6IkJRaF9nZ19vSXV1N3RsUmtXX2YxWF82M0RRQ0REa20wb0I2UXRoVERmR28iLCJqdGkiOiJjM2Y0YzQ1MmNlZjgzYmE4In0.dM25cxnWfUDmyHRao7GYN7JVyuhy7jZN5PuJRbxcaSl4JcJ9vRAhTw7sUyZoZ0K6Ztn1vgMLXvJddztNZpXBZg",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Thu, 14 Mar 2024 08:06:46 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Date
Thu, 14 Mar 2024 08:06:46 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM1MjA5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJQSjJpN0xJRzVhVUh4bWV0MGJrUE9UZndidzJzTUo4YkhUTG5rdTJfdWgwIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IkMtTzFKMEJGLTlxSWQyaXVYU0htZWFzRlRPSzQxQklCIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJaRFVRSmdseW91amFnOWp5ZnlDX1h0MFRGU2w0NVF3SyIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTcxMDQwMzc4NywiaWF0IjoxNzEwNDAzNjA3LCJjb2RlX2NoYWxsZW5nZSI6IlYwbHFYOHhncHFSR2hfMWRiTVNHMktuV3dHNFhUSnhBWlpJZUtBc1F5V1UiLCJqdGkiOiIwYzA0YzIzYTkxMjU1ZjhiIn0.Z-I_V8vwsXLehYiCs-tV8OMh8Dg6Nk_acfpV26rmans26l5S2uMRUM76O4Clo3tpK6gtaGSB4BkNJ0c-c5ojog",
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.", @@ -811,219 +811,219 @@ "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:44639",
+}

Body

{
+  "iss" : "http://localhost:35209",
   "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" : "ZpWwUK8eK_kInGUye78qbOVoK50UcK0n72zWOubCEjQ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "PJ2i7LIG5aUHxmet0bkPOTfwbw2sMJ8bHTLnku2_uh0",
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" : "A7UhwqKg3iqwJegdIkaDxHUVJpaO7ddZ",
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" : "C-O1J0BF-9qId2iuXSHmeasFTOK41BIB",
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" : "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" : "iKT89r3VokD1JTRBbDOpmgKSPCbD24Rp",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "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" : "ZDUQJglyoujag9jyfyC_Xt0TFSl45QwK",
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" : 1709639178,
Gültigkeit des Tokens
- "iat" : 1709638998,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "BQh_gg_oIuu7tlRkW_f1X_63DQCDDkm0oB6QthTDfGo",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "c3f4c452cef83ba8"
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:38497/sign_response127.0.0.1:-1localhost:44639

39 POST http://localhost:33233/sign_response127.0.0.1:-1localhost:35209

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:44639
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
{
+Host: localhost:35209
+Connection: keep-alive

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:35209
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
{
   "alg" : "ECDH-ES",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1709639178,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
+ "exp" : 1710403787,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
"epk" : { "kty" : "EC", - "x" : "ljPoIUEqFvydUIm49KY3ZFaWM1HjMfsnKa1hHUwgghM",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "kjtKGkmUpqDKB-GLU2hglHXmrXo6yumn2k4b_KFxTY8",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "ltn0W4cixPU01-uEbFcDrrr8dycv18SMEIvdWRGzPsc",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "l9gDAn0SV7Gm1cgmFVB2osNNZic5IZeFKDEsmDT192A",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body

{
-  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURWekNDQXY2Z0F3SUJBZ0lIQUlvMS92bkxtREFLQmdncWhrak9QUVFEQWpDQmlURUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhPREEyQmdOVkJBc01MMGhsYVd4aVpYSjFabk5oZFhOM1pXbHpMVU5CSUdSbGNpQlVaV3hsYldGMGFXdHBibVp5WVhOMGNuVnJkSFZ5TVI4d0hRWURWUVFEREJaSFJVMHVTRUpCTFVOQk1UTWdWRVZUVkMxUFRreFpNQjRYRFRJd01EWXhNREF3TURBd01Gb1hEVEkxTURZd09USXpOVGsxT1Zvd2NERUxNQWtHQTFVRUJoTUNSRVV4WVRBTUJnTlZCQVFNQlU5MHc2MXpNQlFHQTFVRUtnd05SOE84Ym5Sb1pYSWdSM0poWmpBYkJnTlZCQVVURkRnd01qYzJPRGd6TVRFd01EQXdNVEk1TURnME1CNEdBMVVFQXd3WFI4TzhiblJvWlhJZ1QzVERyWE5VUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFVS84bVlMM3lsQS9USnNWSHhhYXhqaHpZUG9keGJxR2VqelhibHBaMzYrMEJ2TDZkLzlLSWVva3plc3JLRTBnNjZhTDBXK3Nwc3FwWFNUYVlQQnFMMDZPQ0FXWXdnZ0ZpTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdPSU1CMEdBMVVkRGdRV0JCU1kzMFRwZjBYY2pvdFdTOVBYVXY5RERENnBrVEE0QmdnckJnRUZCUWNCQVFRc01Db3dLQVlJS3dZQkJRVUhNQUdHSEdoMGRIQTZMeTlsYUdOaExtZGxiV0YwYVdzdVpHVXZiMk56Y0M4d0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3SUdDQ3NHQVFVRkJ3TUVNQzRHQTFVZElBUW5NQ1V3Q1FZSEtvSVVBRXdFU3pBTUJnb3JCZ0VFQVlMTk13RUJNQW9HQ0NxQ0ZBQk1CSUVSTUI4R0ExVWRJd1FZTUJhQUZBcjdETlhVazFROVpZQStlaUFDbFRTV2dCdkFNSGtHQlNza0NBTURCSEF3YnFRb01DWXhDekFKQmdOVkJBWVRBa1JGTVJjd0ZRWURWUVFLREE1blpXMWhkR2xySUVKbGNteHBiakJDTUVBd1BqQThNQTRNRE1PRWNucDBhVzR2UVhKNmREQUpCZ2NxZ2hRQVRBUWVFeDh4TFVoQ1FTMVVaWE4wYTJGeWRHVXRPRGd6TVRFd01EQXdNVEk1TURnME1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFT2xHd3VmRjJIWjJuWkF3Qm41cXJXeVNKMWpXSVNVcjBmZUFiZjBNNUxyQWlCRyt2T2lhR2wyYUZQd0Y5UXp4a0ZOZTAvb2QxdVEzbEdVL2sxVWtGdTFQdz09Il0sImFsZyI6IkJQMjU2UjEifQ.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pRME5qTTVJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKYWNGZDNWVXM0WlV0ZmEwbHVSMVY1WlRjNGNXSlBWbTlMTlRCVlkwc3diamN5ZWxkUGRXSkRSV3BSSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklrRTNWV2gzY1V0bk0ybHhkMHBsWjJSSmEyRkVlRWhWVmtwd1lVODNaR1JhSWl3aVkyeHBaVzUwWDJsa0lqb2laMlZ0WVhScGExUmxjM1JRY3lJc0luTmpiM0JsSWpvaWIzQmxibWxrSUdVdGNtVjZaWEIwSWl3aWMzUmhkR1VpT2lKcFMxUTRPWEl6Vm05clJERktWRkpDWWtSUGNHMW5TMU5RUTJKRU1qUlNjQ0lzSW5KbFpHbHlaV04wWDNWeWFTSTZJbWgwZEhBNkx5OTBaWE4wTFhCekxtZGxiV0YwYVdzdVpHVXZaWEpsZW1Wd2RDSXNJbVY0Y0NJNk1UY3dPVFl6T1RFM09Dd2lhV0YwSWpveE56QTVOak00T1RrNExDSmpiMlJsWDJOb1lXeHNaVzVuWlNJNklrSlJhRjluWjE5dlNYVjFOM1JzVW10WFgyWXhXRjgyTTBSUlEwUkVhMjB3YjBJMlVYUm9WRVJtUjI4aUxDSnFkR2tpT2lKak0yWTBZelExTW1ObFpqZ3pZbUU0SW4wLmRNMjVjeG5XZlVEbXlIUmFvN0dZTjdKVnl1aHk3alpONVB1SlJieGNhU2w0SmNKOXZSQWhUdzdzVXlab1owSzZadG4xdmdNTFh2SmRkenROWnBYQlpnIn0.mkALiZBf8jdhvHzqwetCHb541h-f629tY81m6p3VOfqDoMyEy_flTfU6EZaqMWZ5jQuIhlvQM6wM7dUH0aBDzA"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURWekNDQXY2Z0F3SUJBZ0lIQUlvMS92bkxtREFLQmdncWhrak9QUVFEQWpDQmlURUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhPREEyQmdOVkJBc01MMGhsYVd4aVpYSjFabk5oZFhOM1pXbHpMVU5CSUdSbGNpQlVaV3hsYldGMGFXdHBibVp5WVhOMGNuVnJkSFZ5TVI4d0hRWURWUVFEREJaSFJVMHVTRUpCTFVOQk1UTWdWRVZUVkMxUFRreFpNQjRYRFRJd01EWXhNREF3TURBd01Gb1hEVEkxTURZd09USXpOVGsxT1Zvd2NERUxNQWtHQTFVRUJoTUNSRVV4WVRBTUJnTlZCQVFNQlU5MHc2MXpNQlFHQTFVRUtnd05SOE84Ym5Sb1pYSWdSM0poWmpBYkJnTlZCQVVURkRnd01qYzJPRGd6TVRFd01EQXdNVEk1TURnME1CNEdBMVVFQXd3WFI4TzhiblJvWlhJZ1QzVERyWE5VUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFVS84bVlMM3lsQS9USnNWSHhhYXhqaHpZUG9keGJxR2VqelhibHBaMzYrMEJ2TDZkLzlLSWVva3plc3JLRTBnNjZhTDBXK3Nwc3FwWFNUYVlQQnFMMDZPQ0FXWXdnZ0ZpTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdPSU1CMEdBMVVkRGdRV0JCU1kzMFRwZjBYY2pvdFdTOVBYVXY5RERENnBrVEE0QmdnckJnRUZCUWNCQVFRc01Db3dLQVlJS3dZQkJRVUhNQUdHSEdoMGRIQTZMeTlsYUdOaExtZGxiV0YwYVdzdVpHVXZiMk56Y0M4d0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3SUdDQ3NHQVFVRkJ3TUVNQzRHQTFVZElBUW5NQ1V3Q1FZSEtvSVVBRXdFU3pBTUJnb3JCZ0VFQVlMTk13RUJNQW9HQ0NxQ0ZBQk1CSUVSTUI4R0ExVWRJd1FZTUJhQUZBcjdETlhVazFROVpZQStlaUFDbFRTV2dCdkFNSGtHQlNza0NBTURCSEF3YnFRb01DWXhDekFKQmdOVkJBWVRBa1JGTVJjd0ZRWURWUVFLREE1blpXMWhkR2xySUVKbGNteHBiakJDTUVBd1BqQThNQTRNRE1PRWNucDBhVzR2UVhKNmREQUpCZ2NxZ2hRQVRBUWVFeDh4TFVoQ1FTMVVaWE4wYTJGeWRHVXRPRGd6TVRFd01EQXdNVEk1TURnME1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFT2xHd3VmRjJIWjJuWkF3Qm41cXJXeVNKMWpXSVNVcjBmZUFiZjBNNUxyQWlCRyt2T2lhR2wyYUZQd0Y5UXp4a0ZOZTAvb2QxdVEzbEdVL2sxVWtGdTFQdz09Il0sImFsZyI6IkJQMjU2UjEifQ.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pNMU1qQTVJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKUVNqSnBOMHhKUnpWaFZVaDRiV1YwTUdKclVFOVVabmRpZHpKelRVbzRZa2hVVEc1cmRUSmZkV2d3SWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklrTXRUekZLTUVKR0xUbHhTV1F5YVhWWVUwaHRaV0Z6UmxSUFN6UXhRa2xDSWl3aVkyeHBaVzUwWDJsa0lqb2laMlZ0WVhScGExUmxjM1JRY3lJc0luTmpiM0JsSWpvaVpTMXlaWHBsY0hRZ2IzQmxibWxrSWl3aWMzUmhkR1VpT2lKYVJGVlJTbWRzZVc5MWFtRm5PV3A1Wm5sRFgxaDBNRlJHVTJ3ME5WRjNTeUlzSW5KbFpHbHlaV04wWDNWeWFTSTZJbWgwZEhBNkx5OTBaWE4wTFhCekxtZGxiV0YwYVdzdVpHVXZaWEpsZW1Wd2RDSXNJbVY0Y0NJNk1UY3hNRFF3TXpjNE55d2lhV0YwSWpveE56RXdOREF6TmpBM0xDSmpiMlJsWDJOb1lXeHNaVzVuWlNJNklsWXdiSEZZT0hobmNIRlNSMmhmTVdSaVRWTkhNa3R1VjNkSE5GaFVTbmhCV2xwSlpVdEJjMUY1VjFVaUxDSnFkR2tpT2lJd1l6QTBZekl6WVRreE1qVTFaamhpSW4wLlotSV9WOHZ3c1hMZWhZaUNzLXRWOE9NaDhEZzZOa19hY2ZwVjI2cm1hbnMyNmw1UzJ1TVJVTTc2TzRDbG8zdHBLNmd0YUdTQjRCa05KMGMtYzVvam9nIn0.I3ih5qtHuBNO6msEnJBlG3U4AHDgdyG9xUXa18_HwWya4bpg-wpgwDKuvogOOxOjkbXRsI5SsNk3vcZh9CB02Q"
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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ0NjM5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJacFd3VUs4ZUtfa0luR1V5ZTc4cWJPVm9LNTBVY0swbjcyeldPdWJDRWpRIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IkE3VWh3cUtnM2lxd0plZ2RJa2FEeEhVVkpwYU83ZGRaIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJpS1Q4OXIzVm9rRDFKVFJCYkRPcG1nS1NQQ2JEMjRScCIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTcwOTYzOTE3OCwiaWF0IjoxNzA5NjM4OTk4LCJjb2RlX2NoYWxsZW5nZSI6IkJRaF9nZ19vSXV1N3RsUmtXX2YxWF82M0RRQ0REa20wb0I2UXRoVERmR28iLCJqdGkiOiJjM2Y0YzQ1MmNlZjgzYmE4In0.dM25cxnWfUDmyHRao7GYN7JVyuhy7jZN5PuJRbxcaSl4JcJ9vRAhTw7sUyZoZ0K6Ztn1vgMLXvJddztNZpXBZg"
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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM1MjA5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJQSjJpN0xJRzVhVUh4bWV0MGJrUE9UZndidzJzTUo4YkhUTG5rdTJfdWgwIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IkMtTzFKMEJGLTlxSWQyaXVYU0htZWFzRlRPSzQxQklCIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJaRFVRSmdseW91amFnOWp5ZnlDX1h0MFRGU2w0NVF3SyIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTcxMDQwMzc4NywiaWF0IjoxNzEwNDAzNjA3LCJjb2RlX2NoYWxsZW5nZSI6IlYwbHFYOHhncHFSR2hfMWRiTVNHMktuV3dHNFhUSnhBWlpJZUtBc1F5V1UiLCJqdGkiOiIwYzA0YzIzYTkxMjU1ZjhiIn0.Z-I_V8vwsXLehYiCs-tV8OMh8Dg6Nk_acfpV26rmans26l5S2uMRUM76O4Clo3tpK6gtaGSB4BkNJ0c-c5ojog"
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:44639",
+}

Body

{
+  "iss" : "http://localhost:35209",
   "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" : "ZpWwUK8eK_kInGUye78qbOVoK50UcK0n72zWOubCEjQ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "PJ2i7LIG5aUHxmet0bkPOTfwbw2sMJ8bHTLnku2_uh0",
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" : "A7UhwqKg3iqwJegdIkaDxHUVJpaO7ddZ",
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" : "C-O1J0BF-9qId2iuXSHmeasFTOK41BIB",
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" : "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" : "iKT89r3VokD1JTRBbDOpmgKSPCbD24Rp",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "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" : "ZDUQJglyoujag9jyfyC_Xt0TFSl45QwK",
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" : 1709639178,
Gültigkeit des Tokens
- "iat" : 1709638998,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "BQh_gg_oIuu7tlRkW_f1X_63DQCDDkm0oB6QthTDfGo",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "c3f4c452cef83ba8"
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:44639127.0.0.1:-1

40302localhost:35209127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Content-Length
0
Date
Tue, 05 Mar 2024 11:43:19 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=iKT89r3VokD1JTRBbDOpmgKSPCbD24Rp
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Thu, 14 Mar 2024 08:06:48 GMT
+Location: http://test-ps.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzY2OH0..bpn9VE0Z58HsZ-u8.GK24OyzbD-agwjABMwnKFQuqFm6vnYcQO_l5DjT-QTp2f18TOZIJYhj6VimxQj0Zt0pkgvh2G2EBb5HnSEAGMoy_nm0FlkdvDUs3bQrROBxth9uUY12TOhFELBVKIXhEEMpc42pUS94sutXvb2CDrv6_VHLrIlKwzryOu8x6PUXvEVAoQ2DhnuWisF2ywh3KmEyxzhLTv6GvKUWbpFQFYwAgbJwAcaxscDKnMalUEbd3ZGgPKH4Bo5n1-PC4UJJnrRWpgffdtEOnDIYU0DEh9zDrMs5WBfYbB4bFCFP-vq7h8YhNX_CFkZYzjfBuEfktn7_VHfeVSkNfYtX3lKSHjkJkA629RMrunOX7jNoEtBhQkn1R1oNQZz-BgKb7GWxzFiWJVwi-c-8T364k9m9mUGQw3zGFXCH1V5_aR3xdFvEPDEHVEeM7URFKo-Nrn7PbLbLdwOK5JjaQjnap2J2lSaivwSl1vcpyVSFslJS0lf51oMDjWmtV5Z4HRzsj1lVNG7dX0mElHUEd45I8RxpNP4WDTySTpt_8y6t5RnL_VKXYCbBuwqWDGXDNDx2ROt4efn_DI6UEJnO3TLDrbha6VadLZ3Eh57jqJC2sY1kDixT7VZUx4o6ek0jqFPiuLb0lu_RHiFy0WKT_q8uUV3-tjmfc7U_xAz3rT7DEDg8e30fPxb-FtBR-BAZsbcuVXvSJboz79CpJeDBKIS-_x9RgJXKVhwJ2Ugyrc9ceRm20tzoHOCQeaL3VORPaGmDenH8MWgXGSS1GMJ9sicahCa2MXZV7sSkvHM5sdO2h-80Ep4TzaPoUWbfBG1L5bwn0k5q-3EnLaRsUXAsMjNH-k7TRaxtQsrZVrwnZPTH0zYU0upms498Lf8asZJYs3Oyqb901dgnYm-rVsvIMwr32vdp7-0OgK3AGNpt0Y0V4TOUi3-iiuMyvGkR-iuQi_xf2MROcU1Gr2RsM0J6_Cn0tqj3a8jMIqqjmtWjVXo9fiuAbJyI24BSw6sNllxwoiwHEIxMoq8wDzyWNm13LaqmHRoaFGwwN0SbK0kLlcfzufPl_zUFZGBMIq4GvZwX9uIvAuF60t5Ccy9R1q0xlDC2ipho7vs_0LE6D9eO0pGCSuZuVpTq7YRNuDKQ62l6TfMxmBTm66KLcSVJ7XzX3gcrF82bRHVkxB9fp_ubVaEKUunW5mPv7a-P2_ynZAFvpuEiOypmSuNWzcL1jXQdQS1mKuA44RaLqSEmADXsxiNWutAeMLkUudlBb9ooEcPUOztcGya9l89vuFAyj4p1XQoDzmwEfDlK2aXh9vc0aa0EnL24uYVh7tBv6wNkVs4ugKBpASiXxpQSYoJVOU2r_SOXBnJi6B2MwOSwsPFf1qURZNjQIuklr_SuAQvl2nD_xcQ.HglvEnwUTWzYnwrRJrn7Kw&state=ZDUQJglyoujag9jyfyC_Xt0TFSl45QwK

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Content-Length
0
Date
Thu, 14 Mar 2024 08:06:48 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=ZDUQJglyoujag9jyfyC_Xt0TFSl45QwK
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" : 1709639059
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NDYzOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiVHhNdy1WLTJ6RzBaaTJiLVVnRkZqR1hDdVB0cVlCS2UiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiQTdVaHdxS2czaXF3SmVnZElrYUR4SFVWSnBhTzdkZFoiLCJjbGllbnRfaWQiOiJnZW1hdGlrVGVzdFBzIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MDk2Mzg5OTksInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiaUtUODlyM1Zva0QxSlRSQmJET3BtZ0tTUENiRDI0UnAiLCJleHAiOjE3MDk2MzkwNTksImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MDk2Mzg5OTksImNvZGVfY2hhbGxlbmdlIjoiQlFoX2dnX29JdXU3dGxSa1dfZjFYXzYzRFFDRERrbTBvQjZRdGhURGZHbyIsImp0aSI6IjY1MTBiNTY0MmU3NTM2ZGEifQ.Nt1aldZ0Znb7aX2yQVQQDMz1BkQpESEgLoq6u2z_zXKYwBTCBxsscHdk14NuoKzC-z8LPaV0vYscyc7fpkTyXg"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNTIwOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiQWxOZGVjcXBoV0RDZ1hHT3g0eXVjdDBwRDEtS2N0ZEkiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiQy1PMUowQkYtOXFJZDJpdVhTSG1lYXNGVE9LNDFCSUIiLCJjbGllbnRfaWQiOiJnZW1hdGlrVGVzdFBzIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTA0MDM2MDgsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiWkRVUUpnbHlvdWphZzlqeWZ5Q19YdDBURlNsNDVRd0siLCJleHAiOjE3MTA0MDM2NjgsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MTA0MDM2MDgsImNvZGVfY2hhbGxlbmdlIjoiVjBscVg4eGdwcVJHaF8xZGJNU0cyS25Xd0c0WFRKeEFaWkllS0FzUXlXVSIsImp0aSI6IjRjMTViMTFhMWQ2ZWVlNmMifQ.XhEm3gS9C3RzlNKJdtAKEaZsE0TDky2cAUCCBYZwoRJtLibbSwz3-o7b_IZvXh3JT4uG4oT-ztnk20nwldDv_g"
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:44639",
+  "iss" : "http://localhost:35209",
   "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" : "TxMw-V-2zG0Zi2b-UgFFjGXCuPtqYBKe",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "AlNdecqphWDCgXGOx4yuct0pD1-KctdI",
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" : "A7UhwqKg3iqwJegdIkaDxHUVJpaO7ddZ",
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" : "C-O1J0BF-9qId2iuXSHmeasFTOK41BIB",
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" : "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" : 1709638999,
Timestamp der Authentisierung
+ "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" : 1710403608,
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" : "iKT89r3VokD1JTRBbDOpmgKSPCbD24Rp",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1709639059,
Gültigkeit des Tokens
+ "state" : "ZDUQJglyoujag9jyfyC_Xt0TFSl45QwK",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1710403668,
Gültigkeit des Tokens
"family_name" : "Otís", - "iat" : 1709638999,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "BQh_gg_oIuu7tlRkW_f1X_63DQCDDkm0oB6QthTDfGo",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "6510b5642e7536da"
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:38497/token127.0.0.1:-1localhost:44639

41 POST http://localhost:33233/token127.0.0.1:-1localhost:35209

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:44639
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
{
+Host: localhost:35209
+Connection: keep-alive

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:35209
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
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1709639059
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NDYzOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiVHhNdy1WLTJ6RzBaaTJiLVVnRkZqR1hDdVB0cVlCS2UiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiQTdVaHdxS2czaXF3SmVnZElrYUR4SFVWSnBhTzdkZFoiLCJjbGllbnRfaWQiOiJnZW1hdGlrVGVzdFBzIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MDk2Mzg5OTksInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiaUtUODlyM1Zva0QxSlRSQmJET3BtZ0tTUENiRDI0UnAiLCJleHAiOjE3MDk2MzkwNTksImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MDk2Mzg5OTksImNvZGVfY2hhbGxlbmdlIjoiQlFoX2dnX29JdXU3dGxSa1dfZjFYXzYzRFFDRERrbTBvQjZRdGhURGZHbyIsImp0aSI6IjY1MTBiNTY0MmU3NTM2ZGEifQ.Nt1aldZ0Znb7aX2yQVQQDMz1BkQpESEgLoq6u2z_zXKYwBTCBxsscHdk14NuoKzC-z8LPaV0vYscyc7fpkTyXg"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNTIwOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiQWxOZGVjcXBoV0RDZ1hHT3g0eXVjdDBwRDEtS2N0ZEkiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiQy1PMUowQkYtOXFJZDJpdVhTSG1lYXNGVE9LNDFCSUIiLCJjbGllbnRfaWQiOiJnZW1hdGlrVGVzdFBzIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTA0MDM2MDgsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiWkRVUUpnbHlvdWphZzlqeWZ5Q19YdDBURlNsNDVRd0siLCJleHAiOjE3MTA0MDM2NjgsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MTA0MDM2MDgsImNvZGVfY2hhbGxlbmdlIjoiVjBscVg4eGdwcVJHaF8xZGJNU0cyS25Xd0c0WFRKeEFaWkllS0FzUXlXVSIsImp0aSI6IjRjMTViMTFhMWQ2ZWVlNmMifQ.XhEm3gS9C3RzlNKJdtAKEaZsE0TDky2cAUCCBYZwoRJtLibbSwz3-o7b_IZvXh3JT4uG4oT-ztnk20nwldDv_g"
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:44639",
+  "iss" : "http://localhost:35209",
   "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" : "TxMw-V-2zG0Zi2b-UgFFjGXCuPtqYBKe",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "AlNdecqphWDCgXGOx4yuct0pD1-KctdI",
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" : "A7UhwqKg3iqwJegdIkaDxHUVJpaO7ddZ",
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" : "C-O1J0BF-9qId2iuXSHmeasFTOK41BIB",
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" : "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" : 1709638999,
Timestamp der Authentisierung
+ "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" : 1710403608,
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" : "iKT89r3VokD1JTRBbDOpmgKSPCbD24Rp",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1709639059,
Gültigkeit des Tokens
+ "state" : "ZDUQJglyoujag9jyfyC_Xt0TFSl45QwK",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1710403668,
Gültigkeit des Tokens
"family_name" : "Otís", - "iat" : 1709638999,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "BQh_gg_oIuu7tlRkW_f1X_63DQCDDkm0oB6QthTDfGo",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "6510b5642e7536da"
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" : 1710403608,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "V0lqX8xgpqRGh_1dbMSG2KnWwG4XTJxAZZIeKAsQyWU",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "4c15b11a1d6eee6c"
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" : "ksx8oDGKvipeebhgN58vDN3evwC1l3OIBZ1LZREmfpI",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "O4caxZNM-I9oCnM811c9iMSvn2rpgPg9zk0z_kgwJRs",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "pWZxMfwzOX6vyJznBE_Dp-nYQ37ELqJ_JoCXOVuOvEs",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "m4UJMU8qf1bAF_UJOSLxdOL-JiYQ9oZxAgLrx7rBOYE",
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" : "PIq3WlpeSh3UFdSG2kNRGKhf6cvHCeIa6P_7FsUJG-Q", - "code_verifier" : "kO6CIaS-b_SMuSEwOJ4Dw8xk374KIDP-1ei2j9b-t4M" -}

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:44639127.0.0.1:-1

42200localhost:35209127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Date
Tue, 05 Mar 2024 11:43:24 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Thu, 14 Mar 2024 08:06:53 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Date
Thu, 14 Mar 2024 08:06:53 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcwOTYzOTMwNH0..Gk1GtXv57My7Y63Y.YGdBJt-67VlMA19GYZg8a54nNdqDPtp31xTGWSzOZ6Upl5Aroa4Y_gDZudzvyQ1nQ7_XHaPgiLI-uD6StM4dHTIJ791A7wY6Lnt-dXUK5pD8mMBivVaBgqKdvxGn6tSXccpXzBGGNr7bvFJfT9k268AN4Wb9BHNTiW_WBZ-Su6PHMeQr_6g2xqJ4nMc_5Go0Cxp0PAxi1efDyCcG1uwfjQ5ZqQFLawUzICy6zW6dCp4nBQJh9li4DBw6Ygq3eGMS1gueMb-woR9CEgTfkC3ZTGGl2XsmQjPoZ-3-uyYz0XCvS-uVPxAAnyBimGiXQuMOw9JoVwGw5uQzZY4X22HcZf2ZzyJG8kMs4qSdPBlFXW-Qq0j3OWCzjeAK_IMA8y1mbilspugel5wIXMx9aD-jn1oT_-z8Inci7n0H-yHrdOH4hrGlww_pIK6cGKtU3cToJrK4-tzWpUN9zDmHnU_hgprBxDXUrxgB-ipyIIWmNlmt0er3r5qeFGN-FvCOshbAYTTNkwv2H3uSaBNWdu5tEOOiU0XJsSHg8HJSYDmjHoVW-nXoOfI38m9BVfVU6NYfMmGdGa9n33hI69napHaSFd805mXdw3M9R8BDzrewo1fZ13BK_o7_20kJTe1qjVb3B_uWn3qcMJIg_ey5IwHl8o0WtYMDdEvJMxGKpX2R7QKWn79GuME3HcxroBzriu-OeGQQB-8MYNTSIYCf4986vNIeD445VzSZPl2zLJqDeGAOilQy4JUT00lCea58LKlW6-eab03QFIO0vxjQtVPCVJWAla5jwIPgvxWCKC-0qrs-h6CDxg-8k0Hlj9LORGzV1obZVTwVGghpJhrfck-LSewlWMMq3Y2cYoPa8-dJYtPI4pMEN4KKVlXicql2DX9Zd11KU2kLQrEDCI0FmlhFf16L6PRjBil1Sk2AQbq3-JaarF9xuFb_ii2K3AjMQEEooYdE5KC0BzGIYgco2GCaKvA9tPCcZUmBk51IpJZhCbwsGP9S0F4iD-JDfVjkCunsM58LDK1iFlxkM9TyPAMEi28rFP99d3deoIRFH14Ha6n6FEdTnJFY-eXU82V89-NBQs3AbAhW7FjoZbBlzM_CytZ-As9NVlXHOqj-iQ4yjSAp8q21pyWjKX-ZxXApR5ldwxyeyRxMCU1L1bxBpbfm3-V48zU_5TRBUCjFIgDtYJEYWjg.FFVRbQQ7PYRpOI4PCOaAAg",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcwOTYzOTMwNH0..YYGDgC9MXEua4qA_.0zj2IPTNu2dHZsaNrhlroaTFSk2wqi34O0G-WXZxfpAtyWdavXGASlRrZZQQQkjh_JYRCzm1J9tunog_lIIv-g52nWrO0brwpVU-1-wPzRKXEbUfmoQ4QhP9f93gCILCKmPTEdGHCXb-gjvxI0UwjRrlGzD6ZiPPnrBHuzM1aqQUrWBwxLfoGDZwncBp0zYMYXdTcwskcNxKTNbg3Xx5YFCtaoCHNMd9nC_4MUrSoG_2PMWG4oOAnGFfpjQ0bBEeoeRXPR3IL0V0A2TfcE3kqaAI-fDkRldaIcKXSDEJpBBEVOFE-Lqqkqj0Xv5X79bPKfV8X17U3HAUGcrqPmIjZfJ_bZvnBeBr89xL4j70a28QHYgzulV5Qbs8NcCNVt2nS8soc6qjnv3AtfkQmqVDAQqCpFRrHscOKG3epiXv6UhA_8cpSFVUntJ-A0s7FlnpNJow5HSYJTsv8BQcJxLxMDyjlQLz6GG-lYUigsvR_ArxC2tORH2d0Zb-QbKqjDvxNXvvpPkrQQWmUQ_kNplCFLXif81Dfiw3zR59VuoMWce2bE6eSTS4JNt7yE6GDdo8myqag11_IitkwUCVo-ETeDAzqRWMkwtSYTNRtUZGcTd4oedQypeOAExXqtozP14wwWV_p2mHEMbKCAE0LbdJWrRP8uqTVmqcfMFAzJyot0ZnrzIjT7plZ-mjHwUkUMRIxbtFrxfY864LdthQsCnEF2PiQSPeFnICawNb-AKx1hCLF4N-8f7JV_upqBYOHhiq5sAE4qyoMjssoqv14H4h_YieeLZfBuxnPj__XFY5MXtKjulgy-zduNGov9sCh8kmi3fqw3QCoN2deHub4sZHDq26YZ-ZHzabCbfciM5ZOFuwIDqhgufD-mmCp-YVCgyjaP-zrV29N7eRXVLrPQILNRoG3g2sJ2m1pdw-i-wL6sr18FIxAObonaJ9-uv9iFrn_wekrBQ1eW6FLFZvSbIPuHLi9jRiHz-xsVXtfw6Z9u-8Pbz67hzKP8agyUdrDonweKei824Iw3johxywD0Sj4WF5kh-BJs6XmS5muhq8fAPuzBWPEfLVwZkBODEV9U5HaBhUZc2sv41j_uAOVs7H9Lshxd8Rmziz6cKqYIyI5NOXRjSMQKBlJ8Dhv0sItIH3Kh8JoearCw8Dm_bdEE6gertl1ya-iCO22hM1_MHYf_2TW60JEeZjTKf4Fs5awiCnqLb2vKiglt5HTik.Deu5wlLo5r2kRPleyuyFBQ"
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzkxM30..CAa13ybpCRLJKVJS.1MVUCMD5MY7Ss1SiJg9yxqjfY3cXdCDYVxGINfq1qNs1TOeDxUlPy8Ii2adWQg1LBRGUpqr_lB4F7eYXSy2YsZCFMCJ-3Tw7RGt5V1GDRe7trHOdT2nAoSRUua9B66pE9O6GAaS1bNbuwaSlGyYM4QHOboZ8s8G6GyxuPi_q1KXwj8S6j7FVVP90PRn4QiRgqxToz0do_NRSzRQwB6tW87VORvEfU_umpRgK40cjPOT_1tmc1eJVHTrgLpWT8YAFwmRx8XdVPqgbWpUA-q4gyVI1T5sx5bnwYjxVzT-OkE8gZ3JwtPhy-4UCNCVvNLxbotk1_Ouq-yDa8vcnj50frXqzz_oz-z_cbFzgsq3anGI8ekQAhmcHE4eeigDgx_GU9FsDMGjUv8u-DXZE8D53iw4rWHSOdchVjh_018wRdBHn4Z8uFBpHTMAeZxukQ-1G539AvrXbqgNCpChCH5Pz91H58IfqwoSNVsOsAdw1hS0UsFayYETRJcK-ZdKCdQsPzO--OlXAamta801LRxMkX8xk0v4T6EtB7DL3RHLO-Q-xxQwx2nb06WQeYB4keabta9WTPUsPdLX3ATT7l2dxbYPVXz5ABAAgUWtCHUZCHs9CJhodtIDneYS-Pa65UyQ3bWoDyo2qu4ZMqgKLvVwohZw3NiactR3QVCeoQofU-8zGc8LQpCc5h900Zvz1HdlDdXHYGRn0VcZRSfTsDqaNYIcWBeRC-fvjq3N148LyEunjAfrv0tmZjCOouSg45HYsc6hM_2uDpoMUfJ0ISslq-ZkhXqjIRkRDMElq0WXaPNSre2Shi3aw5dzQXUqFSsmiHNib5SUayGDbXmSDSvT-B_PnfqQF9NFFhaz0j_Dg5w243rmHpdH1NmuIJtW7u3vRoGAuW54vxjfyvsMNfMZ1EmfO9pVwbuY6ieiFdk6uMPf3lKcVBMkhhhmLWkiRDz8hBEQvmD-TJtw0kAjLK3o2jxDO1DxeIXFv1EpKmXBkLAIOOLIP4fabfYlox0_1brKnxHsVJ9FWJT1PFSbOGtMA9duhVKBRTmEhnoE4oqnMeOgl0wpjF27CODthIjGlmv-z_ikY6Ch7CsNtar5nevrYsZTyyAYO5jJZN11z9RlvoDqhTDhSFcwm4KZKF1euk_65GJSj54nwkkwsF0-a__mqWoTxLzYO_xB7ifQAgHcDyJANKZ4.MEo4MFnhJEAJeYr3J7zvsw",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzkxM30..fs4Hz47kH31knwWT.p_BYxT_2KYmwddbC3oSFkMJM4kQCCau9XPSNjr0xSTFcAbgd2BEgZJeRk9CmEXWptwXWuTjMa14k6MHKbqtPmnb-Ha6cff4SdSZgRfglvsx2nU11a3Bjgrwr-BhFV6WiahY8lDD4rhjyX9NqkkMv1U5ygxVKShN6IT9iQeV81dc1QVqRUfvBRHDTToNbghE6z7xxOLtCvKFxYQofq5enfquVpNSqspSGgyAgAZXYzEuvhzZFvgv6OGpG3NMIgmkvvpjdxXlJjjP37TL_FvmOco4sKCuOTWTda6Plyhp57o9wFaWB5KZsn7fGOpbhonz23g3gymB3xSGErsxn33OIWp3K1jCg94NympIHhETmrWbtoLny89LxQjYXSB-6zLgqkpQFw-qum1T-YOSbl9qmFNxhm38Sus2pEqt9uMjKXUJDLhH8H9Ty1R2mElxVoBj6KYVJUZ1K9xTYByw3aPB-QdSZ4sZC0MijReLxu0Q8axWUB9u0Y7538SsPIVEF1OeWjpuly-k0y3ce6KJ4xX_OkqoGyKmG24VXJdrlN7eyXBHgIstj7ttGuRte4NCA5dKr6WVTy_rajSUmljgpF1GtoenNzeTSkdFGMFtSEY2KWxTOhMZksgq794V6595cMvpusgg3hW0HiOsShdwT_9Ua_IbGQkNqLekW42eSU7iBoQwcKuj_MQrxd61mwcvknuSjaq3pGn1MKVxMgll50NiCuvk16Ej2Jqo-2a4MRCUCHGZsh8qhV0WZCkywywdjYE9cMGKVibf-5c8syipGQtg4IVEmJgCReGQnzRPBdVrH-uSNsgNuo3sE4p2RCB70zITJ8Rfg8UFDHDVQWxHbHgNYU16aUKN0XfW9cX6NgfvHC3eNrm6vF9QRnTifyEOrVSBwVtEkh1d6DcS9tuRYFrGEvU-v4i78E-jle2fsCY5ymGUqQe3BSQzjQ8mI6rYU27mE_9iERolmpUM7nM12qcJFa64knl_8xFCnnisazII7TjFDMTZVNApRkkVC4bPJKUNX_PIrFxBGY_cJ1E5Cr7t8K33D5uHJSgtBcb4OHMpqejooKbCEi4xQIrDbb1ZsGksJdf6GLbw0a-nNEEYQiQ9YI4_esR2RXar3OjWnQ9juPpO_20dlwXVOK2mSS1JB3pTwyoaJPbHz2zCbXhP9fXVT4j0orHxARnwO0EVardqdyUuiEpr7paheJur8sad4FVYC7U6xilLur_0DVME.DxrVHlG9hCmXG01dh1tuOQ"
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" : 1709639304
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoicExhMzVMazQxTTVvRDVJOURnQjRDQSIsInN1YiI6InhtTnlFdDBxR3pTT3M4Q0dORXRDUkNaa1ctbW5kdnVxV2hFWDdmU1FOODAiLCJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJkaXNwbGF5X25hbWUiOiJHw7xudGhlciBHcmFmIE90w61zIiwibm9uY2UiOiJBN1Vod3FLZzNpcXdKZWdkSWthRHhIVVZKcGFPN2RkWiIsImF1ZCI6ImdlbWF0aWtUZXN0UHMiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhenAiOiJnZW1hdGlrVGVzdFBzIiwiYXV0aF90aW1lIjoxNzA5NjM4OTk5LCJleHAiOjE3MDk2MzkzMDQsImlhdCI6MTcwOTYzOTAwNCwiZmFtaWx5X25hbWUiOiJPdMOtcyIsImp0aSI6ImM5ZWVjN2U4NjA0ZWQ0ZTMifQ.Mtmb8Y97aSiBfVCuVVYpmeEvwOwQ7HCFBl2Rza4IsXwjtNSuRokCwqHZVJeFgSuLeeohI0e9vrqzoR3VbshNzg"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiRGxxOFhGSE9wV0xEajFMOGdtNlpzdyIsInN1YiI6InhtTnlFdDBxR3pTT3M4Q0dORXRDUkNaa1ctbW5kdnVxV2hFWDdmU1FOODAiLCJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkfDvG50aGVyIEdyYWYiLCJkaXNwbGF5X25hbWUiOiJHw7xudGhlciBHcmFmIE90w61zIiwibm9uY2UiOiJDLU8xSjBCRi05cUlkMml1WFNIbWVhc0ZUT0s0MUJJQiIsImF1ZCI6ImdlbWF0aWtUZXN0UHMiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhenAiOiJnZW1hdGlrVGVzdFBzIiwiYXV0aF90aW1lIjoxNzEwNDAzNjA4LCJleHAiOjE3MTA0MDM5MTMsImlhdCI6MTcxMDQwMzYxMywiZmFtaWx5X25hbWUiOiJPdMOtcyIsImp0aSI6Ijg2NmVkZGZjMzFjYmI0OTQifQ.AqTrOvZLMsyfNN721tXCHnMREZBR9Dio4x7mIXJpoPgLpUQhudIEpTk5oRpO3wIHypy2Xn8tjN8SNUdNbYkhRg"
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" : "pLa35Lk41M5oD5I9DgB4CA",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
+}

Body

{
+  "at_hash" : "Dlq8XFHOpWLDj1L8gm6Zsw",
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", @@ -1032,27 +1032,27 @@ "iss" : "https://idp.dev.gematik.solutions", "given_name" : "Günther Graf", "display_name" : "Günther Graf Otís", - "nonce" : "A7UhwqKg3iqwJegdIkaDxHUVJpaO7ddZ",
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" : "C-O1J0BF-9qId2iuXSHmeasFTOK41BIB",
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" : 1709638999,
Timestamp der Authentisierung
- "exp" : 1709639304,
Gültigkeit des Tokens
- "iat" : 1709639004,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1710403608,
Timestamp der Authentisierung
+ "exp" : 1710403913,
Gültigkeit des Tokens
+ "iat" : 1710403613,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Otís", - "jti" : "c9eec7e8604ed4e3"
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" : "866eddfc31cbb494"
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" : 1709639304
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJ4bU55RXQwcUd6U09zOENHTkV0Q1JDWmtXLW1uZHZ1cVdoRVg3ZlNRTjgwIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjMwIiwib3JnYW5pemF0aW9uTmFtZSI6bnVsbCwiaWROdW1tZXIiOiIxLUhCQS1UZXN0a2FydGUtODgzMTEwMDAwMTI5MDg0IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJHw7xudGhlciBHcmFmIiwiZGlzcGxheV9uYW1lIjoiR8O8bnRoZXIgR3JhZiBPdMOtcyIsImNsaWVudF9pZCI6ImdlbWF0aWtUZXN0UHMiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhdWQiOiJodHRwczovL2VycC10ZXN0LnplbnRyYWwuZXJwLnNwbGl0ZG5zLnRpLWRpZW5zdGUuZGUvIiwiYXpwIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0IiwiYXV0aF90aW1lIjoxNzA5NjM4OTk5LCJleHAiOjE3MDk2MzkzMDQsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MDk2MzkwMDQsImp0aSI6ImU5ZDJhZThmNjhjYjhjMzIifQ.QJ_Dprp1bz7nTKaay5qXvwXs3I70rW0dWHwBEuRgiGOjLTEVAFR_XbcdOP8VJt0f0d4tArqbETzKTx7iWyQdEg"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJ4bU55RXQwcUd6U09zOENHTkV0Q1JDWmtXLW1uZHZ1cVdoRVg3ZlNRTjgwIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjMwIiwib3JnYW5pemF0aW9uTmFtZSI6bnVsbCwiaWROdW1tZXIiOiIxLUhCQS1UZXN0a2FydGUtODgzMTEwMDAwMTI5MDg0IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJHw7xudGhlciBHcmFmIiwiZGlzcGxheV9uYW1lIjoiR8O8bnRoZXIgR3JhZiBPdMOtcyIsImNsaWVudF9pZCI6ImdlbWF0aWtUZXN0UHMiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhdWQiOiJodHRwczovL2VycC10ZXN0LnplbnRyYWwuZXJwLnNwbGl0ZG5zLnRpLWRpZW5zdGUuZGUvIiwiYXpwIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwiYXV0aF90aW1lIjoxNzEwNDAzNjA4LCJleHAiOjE3MTA0MDM5MTMsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJpYXQiOjE3MTA0MDM2MTMsImp0aSI6IjVmZDMzNDliZDY3Y2Y1OGUifQ.c98KDpQmy2_Tt2a-YMmTnEXQVSUUxEOWE6mkHSrIAlqiThzEwlwGvCVJt0iPDj76a8ZULuI1DL0YN0pdzhHKAg"
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, @@ -1065,13 +1065,13 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "gematikTestPs", - "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" : 1709638999,
Timestamp der Authentisierung
- "exp" : 1709639304,
Gültigkeit des Tokens
+ "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" : 1710403608,
Timestamp der Authentisierung
+ "exp" : 1710403913,
Gültigkeit des Tokens
"family_name" : "Otís", - "iat" : 1709639004,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "e9d2ae8f68cb8c32"
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 Tue, 5 Mar 2024 12:43:27 +0100
\ No newline at end of file + \ No newline at end of file diff --git a/doc/tokenFlowSso.html b/doc/tokenFlowSso.html index eb6a3a7..ebaa76d 100644 --- a/doc/tokenFlowSso.html +++ b/doc/tokenFlowSso.html @@ -665,50 +665,50 @@ background-color: #469408!important; }
Gerendert mit https://github.com/gematik/app-RbelLogger
Created Tue, 5 Mar 2024 12:43:11 +0100
Created Thu, 14 Mar 2024 09:06:40 +0100

13 GET http://localhost:38497/.well-known/openid-configuration127.0.0.1:-1localhost:35977

13 GET http://localhost:33233/.well-known/openid-configuration127.0.0.1:-1localhost:34959

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:35977
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:34959
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

14200localhost:35977127.0.0.1:-1

14200localhost:34959127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Content-Length
3118
Date
Tue, 05 Mar 2024 11:42:42 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/jwt;charset=UTF-8

RES Body

JWT

Headers
{
+Date: Thu, 14 Mar 2024 08:06:10 GMT
+Content-Type: application/jwt;charset=UTF-8

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Content-Length
3118
Date
Thu, 14 Mar 2024 08:06:10 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:38497/sign_response",
URL des Authorization Endpunkts.
- "auth_pair_endpoint" : "http://localhost:38497/alt_response",
URL des Biometrie-Authorization Endpunkts.
- "sso_endpoint" : "http://localhost:38497/sso_response",
URL des SSO-Authorization Endpunkts.
- "uri_pair" : "http://localhost:38497/pairings",
URL des Pairing-Endpunkts
- "token_endpoint" : "http://localhost:38497/token",
URL des Authorization Endpunkts.
- "third_party_authorization_endpoint" : "http://localhost:38497/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:33233/sign_response",
URL des Authorization Endpunkts.
+ "auth_pair_endpoint" : "http://localhost:33233/alt_response",
URL des Biometrie-Authorization Endpunkts.
+ "sso_endpoint" : "http://localhost:33233/sso_response",
URL des SSO-Authorization Endpunkts.
+ "uri_pair" : "http://localhost:33233/pairings",
URL des Pairing-Endpunkts
+ "token_endpoint" : "http://localhost:33233/token",
URL des Authorization Endpunkts.
+ "third_party_authorization_endpoint" : "http://localhost:33233/extauth", "federation_authorization_endpoint" : "https://idpfadi.dev.gematik.solutions/auth", - "uri_disc" : "http://localhost:38497/.well-known/openid-configuration",
URL des Discovery-Dokuments
+ "uri_disc" : "http://localhost:33233/.well-known/openid-configuration",
URL des Discovery-Dokuments
"issuer" : "https://idp.dev.gematik.solutions", - "jwks_uri" : "http://localhost:38497/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
- "exp" : 1709725362,
Gültigkeit des Tokens
- "iat" : 1709638962,
Zeitpunkt der Ausstellung des Tokens
- "uri_puk_idp_enc" : "http://localhost:38497/idpEnc/jwk.json", - "uri_puk_idp_sig" : "http://localhost:38497/idpSig/jwk.json", + "jwks_uri" : "http://localhost:33233/jwks",
URL einer JWKS-Struktur mit allen vom Server verwendeten Schlüsseln
+ "exp" : 1710489970,
Gültigkeit des Tokens
+ "iat" : 1710403570,
Zeitpunkt der Ausstellung des Tokens
+ "uri_puk_idp_enc" : "http://localhost:33233/idpEnc/jwk.json", + "uri_puk_idp_sig" : "http://localhost:33233/idpSig/jwk.json", "subject_types_supported" : [ "pairwise" ], "id_token_signing_alg_values_supported" : [ "BP256R1" ], "response_types_supported" : [ "code" ], @@ -718,27 +718,27 @@ "acr_values_supported" : [ "gematik-ehealth-loa-high" ], "token_endpoint_auth_methods_supported" : [ "none" ], "code_challenge_methods_supported" : [ "S256" ], - "kk_app_list_uri" : "http://localhost:38497/directory/kk_apps", - "fed_idp_list_uri" : "http://localhost:38497/fed_idp_list" -}

Signature

Was verified using Key puk_disc_sig

Signature

Was verified using Key puk_disc_sig

15 GET http://localhost:38497/idpSig/jwk.json127.0.0.1:-1localhost:35977

15 GET http://localhost:33233/idpSig/jwk.json127.0.0.1:-1localhost:34959

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:35977
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:34959
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

16200localhost:35977127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.1
Date
Tue, 05 Mar 2024 11:42:46 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:34959127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.2
Date
Thu, 14 Mar 2024 08:06:13 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
@@ -746,57 +746,57 @@ "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:38497/idpEnc/jwk.json127.0.0.1:-1localhost:35977

17 GET http://localhost:33233/idpEnc/jwk.json127.0.0.1:-1localhost:34959

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:35977
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:34959
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

18200localhost:35977127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.1
Date
Tue, 05 Mar 2024 11:42:48 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:34959127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
27.0.2
Date
Thu, 14 Mar 2024 08:06:16 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:38497/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=p_y9jlAfQU7UO_1GrDP9hgjzYzkO_SGK&code_challenge=62CPsvsuHjE-pS5KBLXUQQMefydFy82ejXl4t00q1hk&code_challenge_method=S256&scope=openid+e-rezept&nonce=aU2RjDutS968d2Jj6Duk-_XyH1MVEt-E127.0.0.1:-1localhost:35977

19 GET http://localhost:33233/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=DODrJxdprKZGyO_LJdASLdHuJs0rjnp6&code_challenge=fsPhuap-bGnZYXEdhCh_-O9ykw67zPigxmPltExzopk&code_challenge_method=S256&scope=e-rezept+openid&nonce=vrs9_Rs97A2ZylOGXUiCNNB-2U_2rXvu127.0.0.1:-1localhost:34959

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:35977
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:34959
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

20200localhost:35977127.0.0.1:-1

20200localhost:34959127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Date
Tue, 05 Mar 2024 11:42:48 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM1OTc3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJyTUNod214cGZkSTNGTE1rc0E3X0VlTWJjWjh5UDFRTnBfbzg1WVAydXAwIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImFVMlJqRHV0Uzk2OGQySmo2RHVrLV9YeUgxTVZFdC1FIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJwX3k5amxBZlFVN1VPXzFHckRQOWhnanpZemtPX1NHSyIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MDk2MzkxNDgsImlhdCI6MTcwOTYzODk2OCwiY29kZV9jaGFsbGVuZ2UiOiI2MkNQc3ZzdUhqRS1wUzVLQkxYVVFRTWVmeWRGeTgyZWpYbDR0MDBxMWhrIiwianRpIjoiZWRhMmEwZjJiMWUyNDlmZiJ9.oUHwfkGOOloG3g-FWddIVzqwVvaguxpTZpVb-ec_SdRkryK_2UTwB_AUzG0g0kD3IqTBi4IEXAqvy_N1LeYjfw",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Thu, 14 Mar 2024 08:06:16 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Date
Thu, 14 Mar 2024 08:06:16 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM0OTU5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJkaXU1SlJhaEdfenZXSkRyR0hFZ3FrS3BKdDM2Vk82Q2hvaVNLQm54QmZvIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6InZyczlfUnM5N0EyWnlsT0dYVWlDTk5CLTJVXzJyWHZ1IiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJET0RySnhkcHJLWkd5T19MSmRBU0xkSHVKczByam5wNiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTA0MDM3NTYsImlhdCI6MTcxMDQwMzU3NiwiY29kZV9jaGFsbGVuZ2UiOiJmc1BodWFwLWJHblpZWEVkaENoXy1POXlrdzY3elBpZ3htUGx0RXh6b3BrIiwianRpIjoiNmI3OTAxNGIzZWIxMTk0ZSJ9.CV9mTyhdo_C_91Dj3DGoUkHJtK7lZ4ZLjQDtlxXSSk8lVBFykKvuQXKnHrWBFatsGz7XCiGJVvxA-Yr-NXB52A",
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.", @@ -811,140 +811,140 @@ "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:35977",
+}

Body

{
+  "iss" : "http://localhost:34959",
   "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" : "rMChwmxpfdI3FLMksA7_EeMbcZ8yP1QNp_o85YP2up0",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "diu5JRahG_zvWJDrGHEgqkKpJt36VO6ChoiSKBnxBfo",
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" : "aU2RjDutS968d2Jj6Duk-_XyH1MVEt-E",
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" : "vrs9_Rs97A2ZylOGXUiCNNB-2U_2rXvu",
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" : "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" : "p_y9jlAfQU7UO_1GrDP9hgjzYzkO_SGK",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "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" : "DODrJxdprKZGyO_LJdASLdHuJs0rjnp6",
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" : 1709639148,
Gültigkeit des Tokens
- "iat" : 1709638968,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "62CPsvsuHjE-pS5KBLXUQQMefydFy82ejXl4t00q1hk",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "eda2a0f2b1e249ff"
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:38497/sign_response127.0.0.1:-1localhost:35977

21 POST http://localhost:33233/sign_response127.0.0.1:-1localhost:34959

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:35977
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
{
+Host: localhost:34959
+Connection: keep-alive

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:34959
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
{
   "alg" : "ECDH-ES",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1709639148,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
+ "exp" : 1710403756,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
"epk" : { "kty" : "EC", - "x" : "Yft8Q4GcmdEv0Y2jNAUBpItyvSr5rAOwL0mqabPbs4o",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "GMAnQ7KCk-QKFiLQiHIZSLiTQOfUjPPpVbq8-5hVLLU",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "UEogutbKYhhYDW_ej1YJTZ_GK-L9RJZ9byvsY8GPcsg",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "GWxVVck7vhRGJwWssPJiku9eChddgY3_c8boajCBYHs",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body

{
-  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pNMU9UYzNJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKeVRVTm9kMjE0Y0daa1NUTkdURTFyYzBFM1gwVmxUV0pqV2poNVVERlJUbkJmYnpnMVdWQXlkWEF3SWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNkltRlZNbEpxUkhWMFV6azJPR1F5U21vMlJIVnJMVjlZZVVneFRWWkZkQzFGSWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pYjNCbGJtbGtJR1V0Y21WNlpYQjBJaXdpYzNSaGRHVWlPaUp3WDNrNWFteEJabEZWTjFWUFh6Rkhja1JRT1dobmFucFplbXRQWDFOSFN5SXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM01EazJNemt4TkRnc0ltbGhkQ0k2TVRjd09UWXpPRGsyT0N3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lJMk1rTlFjM1p6ZFVocVJTMXdVelZMUWt4WVZWRlJUV1ZtZVdSR2VUZ3laV3BZYkRSME1EQnhNV2hySWl3aWFuUnBJam9pWldSaE1tRXdaakppTVdVeU5EbG1aaUo5Lm9VSHdma0dPT2xvRzNnLUZXZGRJVnpxd1Z2YWd1eHBUWnBWYi1lY19TZFJrcnlLXzJVVHdCX0FVekcwZzBrRDNJcVRCaTRJRVhBcXZ5X04xTGVZamZ3In0.GXo5L--y2S3-a1IiOe3yoNmWCoGf_lZt7iCs42gmiYyjmk8n7oV9KSRSzeinFDUHOA9eT9iaTHpTaoX9K1PL-g"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pNME9UVTVJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKa2FYVTFTbEpoYUVkZmVuWlhTa1J5UjBoRlozRnJTM0JLZERNMlZrODJRMmh2YVZOTFFtNTRRbVp2SWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNkluWnljemxmVW5NNU4wRXlXbmxzVDBkWVZXbERUazVDTFRKVlh6SnlXSFoxSWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pWlMxeVpYcGxjSFFnYjNCbGJtbGtJaXdpYzNSaGRHVWlPaUpFVDBSeVNuaGtjSEpMV2tkNVQxOU1TbVJCVTB4a1NIVktjekJ5YW01d05pSXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM01UQTBNRE0zTlRZc0ltbGhkQ0k2TVRjeE1EUXdNelUzTml3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lKbWMxQm9kV0Z3TFdKSGJscFpXRVZrYUVOb1h5MVBPWGxyZHpZM2VsQnBaM2h0VUd4MFJYaDZiM0JySWl3aWFuUnBJam9pTm1JM09UQXhOR0l6WldJeE1UazBaU0o5LkNWOW1UeWhkb19DXzkxRGozREdvVWtISnRLN2xaNFpMalFEdGx4WFNTazhsVkJGeWtLdnVRWEtuSHJXQkZhdHNHejdYQ2lHSlZ2eEEtWXItTlhCNTJBIn0.pAy0BzOjGkVsoVd65qLvdwIPfsJrbHRVU0Pm1bBwuBswZxwDaEpKoBohZoon0AdQ3RbQ1W02HtWjBAEflqYBew"
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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM1OTc3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJyTUNod214cGZkSTNGTE1rc0E3X0VlTWJjWjh5UDFRTnBfbzg1WVAydXAwIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImFVMlJqRHV0Uzk2OGQySmo2RHVrLV9YeUgxTVZFdC1FIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJwX3k5amxBZlFVN1VPXzFHckRQOWhnanpZemtPX1NHSyIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MDk2MzkxNDgsImlhdCI6MTcwOTYzODk2OCwiY29kZV9jaGFsbGVuZ2UiOiI2MkNQc3ZzdUhqRS1wUzVLQkxYVVFRTWVmeWRGeTgyZWpYbDR0MDBxMWhrIiwianRpIjoiZWRhMmEwZjJiMWUyNDlmZiJ9.oUHwfkGOOloG3g-FWddIVzqwVvaguxpTZpVb-ec_SdRkryK_2UTwB_AUzG0g0kD3IqTBi4IEXAqvy_N1LeYjfw"
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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM0OTU5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJkaXU1SlJhaEdfenZXSkRyR0hFZ3FrS3BKdDM2Vk82Q2hvaVNLQm54QmZvIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6InZyczlfUnM5N0EyWnlsT0dYVWlDTk5CLTJVXzJyWHZ1IiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJET0RySnhkcHJLWkd5T19MSmRBU0xkSHVKczByam5wNiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTA0MDM3NTYsImlhdCI6MTcxMDQwMzU3NiwiY29kZV9jaGFsbGVuZ2UiOiJmc1BodWFwLWJHblpZWEVkaENoXy1POXlrdzY3elBpZ3htUGx0RXh6b3BrIiwianRpIjoiNmI3OTAxNGIzZWIxMTk0ZSJ9.CV9mTyhdo_C_91Dj3DGoUkHJtK7lZ4ZLjQDtlxXSSk8lVBFykKvuQXKnHrWBFatsGz7XCiGJVvxA-Yr-NXB52A"
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:35977",
+}

Body

{
+  "iss" : "http://localhost:34959",
   "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" : "rMChwmxpfdI3FLMksA7_EeMbcZ8yP1QNp_o85YP2up0",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "diu5JRahG_zvWJDrGHEgqkKpJt36VO6ChoiSKBnxBfo",
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" : "aU2RjDutS968d2Jj6Duk-_XyH1MVEt-E",
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" : "vrs9_Rs97A2ZylOGXUiCNNB-2U_2rXvu",
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" : "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" : "p_y9jlAfQU7UO_1GrDP9hgjzYzkO_SGK",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "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" : "DODrJxdprKZGyO_LJdASLdHuJs0rjnp6",
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" : 1709639148,
Gültigkeit des Tokens
- "iat" : 1709638968,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "62CPsvsuHjE-pS5KBLXUQQMefydFy82ejXl4t00q1hk",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "eda2a0f2b1e249ff"
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:35977127.0.0.1:-1

22302localhost:34959127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Content-Length
0
Date
Tue, 05 Mar 2024 11:42:50 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=p_y9jlAfQU7UO_1GrDP9hgjzYzkO_SGK
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Thu, 14 Mar 2024 08:06:18 GMT
+Location: http://redirect.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzYzOH0..8unzqrRAxYsPGvfX.NdB-C-dLlA2MXKelgU4346boCGd4WwBbc6qbcAoYJmPI5fGcymI5hu8ISKQNkef_S0NUXlQXqmRK3GZhu_-2aZLf1Kvo7Ny-_Dg9KoBDQPYXkQorlPGp5ARxpZpeW54iCVq0UDSLiIkvcHgFyvUnQ6k5jKn2ujUga1Z07D-ESbN_O706U2ULRiwRKye1ILL9aWQHRkrTExw-YEbGslTvKIvlggdJQjT60rqefaDDX_pQcvbfulHqjV1Tevyn5bz9A2LIei-WCh1N-X9-OYEGAaSYBpkeAjGeT7Bx4JdaQlpk3SGot5wMRV4wFoeeYd0OuTnrJRFQAxQMxRh06rzZQ_KdjmSC5fP2boNWOISieTAO-4dVjzvful8gekhK3C4UZlghLbZBkAs01fdIPrgjofw7EyonnpLyJ7UjYeI6RSIXPrU-Vx9ZhNSljf-c44ZUqLqn2K-ShLezu1-_xRlNAYTV32XkfeaTrmG_f_wtf8V4jCcc2PB0tvNn5r19Lj0QooCyKXDy9lcv6j4WjHheX5lGjIiS-XglyVQdu_AC6zlZontsmIzaCLC8BYVVUc7IO2lzl8IFr5h6HN2mOxKKwAwyBg4aYLvV5qZP7XDlxSAlJW0AVSkt2l5e6XApX3B8j1NbNby0WvxOgm0HLsM2ZBP5TiQCl9yhOv1l32jSobu45SEcV4Se3f-KagyNfLvuk1JtoIKv3IFkSI8cBT4gTDElDtOpJUYJ3rveMf2IN6USom924xPD_IBNS8PLDm-0MCoqvZSI4uT79Ldm_muYGLW2P-MqLxZ0-1s0eZjNwafik4BShRLiQ6usIkxVpGHxP_AQlDJUDw7L4Pt0HlNzEzIwC3h51FJMk8T-Irle5rBU5Wa2lFrJWO-zqrz3aS3G7gnvhNNfFxb99v8CmfW3A2syMRGTZsUZ6kk-tHyDjTVQ_H_wnUf4So5meWtu0I_8SgbWK8z4_wKFvguaq1OliqhBsriDy8Hs_KybNhNxl3BdfhLwXwicF2D8VzxHIDBRMj9EnLQkwoXadtqgRwZCa9njRuaN-LlXXjWJ9Xxrut53_FBYAIVovO6BD5rvKS1j9OiDkmmcubYbY80-nHSG8mmpohu0wAe9ObxEsbvNUgPigCFB63chMFeQ-b8rF-xC_tcwVB9NwZ03qATJ3DJXgLEMY0ZhqI_JjmLsjQ_RxKu9iM4Kk8vEusMX824xb-uURjWPxIoRdxvXRdU4Syxz48z7fz7XWw26UnN5zqj-RYgAuQojfZ1tIKDBqnacV09Nr5WRBqgR5Bdq2pboFUCgR-U8CdF_OrRqqmOYg4EUpsFwz9-YusZ4pRUJsR5RljtsXjnSdxnVLzC0-3ZUBj8Oe_A1WCrOgZ_r4R4T82XiA4HL-WUkjJ_HFjXs9ZG6aRH8OLMz6OgfiiHX.IVXmH67cDV_Guxamf0CFeg&ssotoken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQ0Njc3OH0..XYFxHUPWMMTFyYpi.XCFIXHXyF7R9iUo7qgDIWp8xkd8LXb5kK1AEdLcaw9s8d6qK4JAf6xYE936G7XWnJFBSjyJQBBucHMGlTJvUZCB5lI-g-hLK3pZhK528VMgIRleYc-3hdh9zkJAHG5j5kkq9ney17JiPPGuvPP35KG9w7bAWl1wO5bJW_TYaISTpEkUa79RdKhxuVImCYxtM64VHtIjS-9hSDczVgrHLdpS09xEkBOfXMtmaX6Ovvv7ock2x7VoV1DoiRiok9Q6BFC1BizjumB4W_DVMtNsGEj-KKspI8aEXAlL4VPPLiKRwP2DyMfjqXSsHC_5OARvbTNfGA1cQj5slTMdsZiKw4pATB6Bm3GjX2MZzSvE3w7Y4vji9fCiZnKrF64mSoULOjhiHiCHZuCnV2nNKk3m-Fl3Khc7-0FFiErOGqYJ8F4wFGLU09cxRsgW4NO7g8le0CachcNhC80MAHBmiRie1CVwXRlZrKIQDt7rUlaFECMlBiyArxYV2cxIC2Vubw_g-gvfbvV3FpXq3jTVT8cJ-7uJaRlttqsxiVwR8fKJ_bXxYLy2job_DNR8VH73a3rdCEsORo5XxQyhauEa6Lpf77XOez2p1YvvbzaxrCOs3RjpUkKYVrA16P8UUMDDXrBkojhHKVatCjrymFPM_WYTa8k-YplyCu6mATT5Bt9nvMRb7obwf4pyHN5SC_NYwlueLUlwnCJzH80wWs2S3LM21tdWS8F49cl0uiTJ-AKfCxdsLSHk0W-yGzrocaq-OKl8xmRZWMLkrhWw6eLqVhHL28EdBGU5imzwGir1VR8Si29wKV4kyuDJlaWqOyBrl9ic0orotlD-qfSE0eUZpAkAK7OfBm9BnXoR-SzjayWkJKU6FyrPCMrGnD478AM27fRTBzEqufLKAsfT9Lj8DX8flzPDccF8a9i7pODUGYrcAO_7bY5l10pbPC4mByqbH5rfp56zHqXEJamiG3XIk49rP5KY_mGYKpqY5bHr8NHvqxYqc5fJBbQ4CA-y4I_mxIxjD-markoPO4s6yEJkkpw58_kJZKflwBkxV4D8TUteMhgS73X0y9A_JPGrKkhR9ummVXB1S4lAkhDgPMw-3R6HZ5b4ZsAMoi-y-Hq2RUjgfZpWQy0XzFuMDmxk-q4bBujZcXRmDmxUomK9zYzto6vqeWzWNrKfTj6UM_Re11nIMBQs7N055huLNht_xnaaeHXQlac_k9Zmn8avAhx2fvYxwAbT9G62TMWvnLID2arpOFl34kMuHsHhytO_7bq86z2YTKJEzDvlzO9CiXYDsmOLK7pCB1eQ0wat8K_15srX0XbJuwiSMavbzGlw18AuEReEWBPyFgcISIQ9tWW0XouzmoYxB0FkVP87ao3Tc2DZeW3rvJ9eqKXuEGaYI3GasB7L3qMw_GR8rhWuXQKK3ZY6FNSwXuTskh3I3LEV9OdmX7SFMoK3Jnxt9oPSaKwgAgZ98sR-dRIS0IyyyXVjoaOvNKbZ5j3kblMJzK0mugHtGjS-Y76KOG6HFlEnSfg6WG4LGyfq-q4iJUGV9jI2tQgLyCgog5jiaoCFRWO_V9UJZxccCetLyDGJxWnLlmWMlIYUDkAtuSj3x6yj48sezmy3PxQ9RUEjeUBfrnilB_50e2nqLIj2A8MvN6wRM8UK5KsA4bceriEnowgsuEIMreIeYUUNSiJyZ868GoZY4IEOr77VRgR9V9w7UbuXxQmLQOnAUp1Xm9sPY7WJTUtlIDnAf_-2HHKx-u1YYnxf0R2Jxrw5svGcgCD4zxpilFo0JtS7PYG6qT2cfkkALDjlTojG7twQtekkBfgyLaJNDTkUiNjXbZy2yWR2Lm9m20lZbcEVuS-urPPJVIE5GgzDqqb61M9ip7i2WxXFGSZRssl_x8Nq9hKFHPrClxZmYUdf2_g3Gj2YV7E1Z2pXpLUwpF4-4fJMUKx2rnf7yUuIFqIQUGhFG1oHziDyabutHwTBI9cbHyTXfdgzv21vbG-OgjY6nsJkzEpgp32hL-t_T7GHEhv0TEJQV59G5Y6BRDFkq4vA6FeywKche_wGoRa5JAJEy3GZYuhZKWF1mGWTr9irdywxSOw8OoS54Y_NI2OR19_Kv51O1fET314fR7mIp0JExkjSkOjTzWQCIP_PamynJtfLyMgmUii-cK-lrAnuQCEU68l8dzNuSm72c4tWzdnffQ2kqLFdgDgEeGRlrRIXtouhgqZpl3-_d4i17vFP-rkg2C4rRIgzpZF6e_2iKMIGrkFvhruvvYAxZz3UiSUfPmxVpcI5LPn2d_8O6m6Lw8QkoBZicGZc5c-l4Rb6GzgR4AoK_hJ3qJWd3w2QCQHmgMdZP32MmI5zbdv-hcyKiJRuJbVEjggjNnfaGb_KnCkAZiqCwpCq5hjqoYhDNb3PVrY_8watujoRzhxcut-N25Vnt4an575_etNSrX9xi_3oKL4xfDjdocv5vlj47q26GcI9ZK4WXbXiBkbsqusprtl3d9TsyMBDejkyR7bWidxwK1pbt3BjjIgE-3wfr-T009odyYd6H5xJPGKQOJsPlKSZWAcuqglfLogvxd06eq4Sei7yjAXrqrA__ThPojQWIXUftCQ6WBNiJuCczA9U_DXtY1rfZJSetbH95-yeXOA8dvHw0A33ozKefLvsXuIVLZfNVa1hw4qL4B6WKUmj5Wqx-EWpXy7wI5_j6aw6zrZklYV4H1y4FqZaHNKvjGqXnhkFKZIUFUIRAf6wJDbWywBqjTSWti6uAWru9dFv3d0J15gE3VPIwfSOzMql6U_ZQYkijfS-EM5_BErrFbll32XRchWb6UOEU7R2HA2G_u--R794X175A64bJNYOaMOmnJsF-78ljs36l-cpCuRjxt29XEezEIEInIxrY4CqZIAs-aJ5-Tp39nx7-wCj9Vejqk6aEvHuG9T7ynk33lRQMgA8LLO1gHm8BGhqqJJvzZdh1G1Wm9g_COcNgzZXZpW1ood7wQgAO1dbYyamivdznrDYIWI_sDM3lnbuGxykbKokqxIz7tmPLfuPg62HSwOyUzp6jekig.2jRYA3S-I7e5UBDPspPsSA&state=DODrJxdprKZGyO_LJdASLdHuJs0rjnp6

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Content-Length
0
Date
Thu, 14 Mar 2024 08:06:18 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=DODrJxdprKZGyO_LJdASLdHuJs0rjnp6
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" : 1709639030
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNTk3NyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiRjVsbVA2czVIZDBIcEgxMmotcmJaNnd3b2R2RklvbFEiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiYVUyUmpEdXRTOTY4ZDJKajZEdWstX1h5SDFNVkV0LUUiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MDk2Mzg5NzAsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6InBfeTlqbEFmUVU3VU9fMUdyRFA5aGdqell6a09fU0dLIiwiZXhwIjoxNzA5NjM5MDMwLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcwOTYzODk3MCwiY29kZV9jaGFsbGVuZ2UiOiI2MkNQc3ZzdUhqRS1wUzVLQkxYVVFRTWVmeWRGeTgyZWpYbDR0MDBxMWhrIiwianRpIjoiNmUyYWU5NWIwMzVjZWZiMyJ9.nvd8ecrs6zLJVbf9nOzexNATfvey_eGpGafHFhU-4ZB6QqHlt6dHraJEcoUJqodTNfp2EGSCM083LXyI0v4V6A"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNDk1OSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiVVJWMUtPZFJmUEczTjN1ZzBoSTFMSktpVG1lNUFvU3YiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoidnJzOV9Sczk3QTJaeWxPR1hVaUNOTkItMlVfMnJYdnUiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTA0MDM1NzgsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IkRPRHJKeGRwcktaR3lPX0xKZEFTTGRIdUpzMHJqbnA2IiwiZXhwIjoxNzEwNDAzNjM4LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxMDQwMzU3OCwiY29kZV9jaGFsbGVuZ2UiOiJmc1BodWFwLWJHblpZWEVkaENoXy1POXlrdzY3elBpZ3htUGx0RXh6b3BrIiwianRpIjoiMzkxNGEzZmMzNDNlM2Q2YyJ9.TI0B_sL0oMP0jGcOdXlxsG8VfdSiysUCKF2QqVWXohxt90LpzP7LxQpaeiM6TiPZA_1jIGUCLdBcEqgBG2VX7w"
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:35977",
+  "iss" : "http://localhost:34959",
   "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" : "F5lmP6s5Hd0HpH12j-rbZ6wwodvFIolQ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "URV1KOdRfPG3N3ug0hI1LJKiTme5AoSv",
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" : "aU2RjDutS968d2Jj6Duk-_XyH1MVEt-E",
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" : "vrs9_Rs97A2ZylOGXUiCNNB-2U_2rXvu",
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" : "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" : 1709638970,
Timestamp der Authentisierung
+ "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" : 1710403578,
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" : "p_y9jlAfQU7UO_1GrDP9hgjzYzkO_SGK",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1709639030,
Gültigkeit des Tokens
+ "state" : "DODrJxdprKZGyO_LJdASLdHuJs0rjnp6",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1710403638,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1709638970,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "62CPsvsuHjE-pS5KBLXUQQMefydFy82ejXl4t00q1hk",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "6e2ae95b035cefb3"
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" : 1710403578,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "fsPhuap-bGnZYXEdhCh_-O9ykw67zPigxmPltExzopk",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "3914a3fc343e3d6c"
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" : 1709682170
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MDk2Mzg5NzAsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzA5NjgyMTcwLCJpYXQiOjE3MDk2Mzg5NzAsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.S18an3rc54jGjzPYp_AFwf42BQsNUblhTKM68RlAmOSgufj59zLWQmtPSnJsNIxSJDMrHLz_ti5vLhxRTADrwg"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MTA0MDM1NzgsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzEwNDQ2Nzc4LCJpYXQiOjE3MTA0MDM1NzgsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.Pd-OEvEHYRFxLknuaQ0nykjXVsgsdrzutcaezmveRoEvl5IXi8zQbeh38x5J0jwhKO0Xho5n1x57HdsYlMoCLQ"
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" : 1709638970,
Timestamp der Authentisierung
+ "auth_time" : 1710403578,
Timestamp der Authentisierung
"amr" : [ "mfa", "sc", "pin" ], "idNummer" : "X110411675", "iss" : "https://idp.dev.gematik.solutions", @@ -957,103 +957,103 @@ "y" : "lgJUXP3xPwcoT3PyDi5ILGmZmyrjUIYXqROD0OKrWA0"
Y-Koordinate des öffentlichen Punkts des Schlüssels
}, "given_name" : "Darius Michael Brian Ubbo", - "exp" : 1709682170,
Gültigkeit des Tokens
- "iat" : 1709638970,
Zeitpunkt der Ausstellung des Tokens
+ "exp" : 1710446778,
Gültigkeit des Tokens
+ "iat" : 1710403578,
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:38497/token127.0.0.1:-1localhost:35977

23 POST http://localhost:33233/token127.0.0.1:-1localhost:34959

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:35977
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
{
+Host: localhost:34959
+Connection: keep-alive

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:34959
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
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1709639030
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNTk3NyIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiRjVsbVA2czVIZDBIcEgxMmotcmJaNnd3b2R2RklvbFEiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoiYVUyUmpEdXRTOTY4ZDJKajZEdWstX1h5SDFNVkV0LUUiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJvcGVuaWQgZS1yZXplcHQiLCJhdXRoX3RpbWUiOjE3MDk2Mzg5NzAsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6InBfeTlqbEFmUVU3VU9fMUdyRFA5aGdqell6a09fU0dLIiwiZXhwIjoxNzA5NjM5MDMwLCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcwOTYzODk3MCwiY29kZV9jaGFsbGVuZ2UiOiI2MkNQc3ZzdUhqRS1wUzVLQkxYVVFRTWVmeWRGeTgyZWpYbDR0MDBxMWhrIiwianRpIjoiNmUyYWU5NWIwMzVjZWZiMyJ9.nvd8ecrs6zLJVbf9nOzexNATfvey_eGpGafHFhU-4ZB6QqHlt6dHraJEcoUJqodTNfp2EGSCM083LXyI0v4V6A"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNDk1OSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiVVJWMUtPZFJmUEczTjN1ZzBoSTFMSktpVG1lNUFvU3YiLCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiOiJTMjU2IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJ0b2tlbl90eXBlIjoiY29kZSIsIm5vbmNlIjoidnJzOV9Sczk3QTJaeWxPR1hVaUNOTkItMlVfMnJYdnUiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwic2NvcGUiOiJlLXJlemVwdCBvcGVuaWQiLCJhdXRoX3RpbWUiOjE3MTA0MDM1NzgsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IkRPRHJKeGRwcktaR3lPX0xKZEFTTGRIdUpzMHJqbnA2IiwiZXhwIjoxNzEwNDAzNjM4LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxMDQwMzU3OCwiY29kZV9jaGFsbGVuZ2UiOiJmc1BodWFwLWJHblpZWEVkaENoXy1POXlrdzY3elBpZ3htUGx0RXh6b3BrIiwianRpIjoiMzkxNGEzZmMzNDNlM2Q2YyJ9.TI0B_sL0oMP0jGcOdXlxsG8VfdSiysUCKF2QqVWXohxt90LpzP7LxQpaeiM6TiPZA_1jIGUCLdBcEqgBG2VX7w"
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:35977",
+  "iss" : "http://localhost:34959",
   "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" : "F5lmP6s5Hd0HpH12j-rbZ6wwodvFIolQ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "URV1KOdRfPG3N3ug0hI1LJKiTme5AoSv",
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" : "aU2RjDutS968d2Jj6Duk-_XyH1MVEt-E",
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" : "vrs9_Rs97A2ZylOGXUiCNNB-2U_2rXvu",
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" : "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" : 1709638970,
Timestamp der Authentisierung
+ "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" : 1710403578,
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" : "p_y9jlAfQU7UO_1GrDP9hgjzYzkO_SGK",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1709639030,
Gültigkeit des Tokens
+ "state" : "DODrJxdprKZGyO_LJdASLdHuJs0rjnp6",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1710403638,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1709638970,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "62CPsvsuHjE-pS5KBLXUQQMefydFy82ejXl4t00q1hk",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "6e2ae95b035cefb3"
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" : 1710403578,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "fsPhuap-bGnZYXEdhCh_-O9ykw67zPigxmPltExzopk",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "3914a3fc343e3d6c"
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" : "RGqlI6VVtVOeu_Lewrr75NBgmpqsSSkgtZxYZapVQds",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "A2FMa-fOc4DYSD3AL7bA1IfK-MdLr8cwJ5Nci6ArGQ8",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "m5jijs5mVgSONwSjF53uhn3xlKe-VxgyF4YhAP7K40Y",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "Z374MJgLSxhXY28Q6YpZ7IcK4xn-XZNVTPsrhFzz2p4",
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" : "pr4JYn8dzUU4-bKci-6N1s0WbCYewq8kP0UYRtz9jrU", - "code_verifier" : "Kv2kt2eVQ9dXSpzjoAxL1GrDilAExCgLCBUpIGW1l-c" -}

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:35977127.0.0.1:-1

24200localhost:34959127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Date
Tue, 05 Mar 2024 11:42:58 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Thu, 14 Mar 2024 08:06:27 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Date
Thu, 14 Mar 2024 08:06:27 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcwOTYzOTI3OH0..pxekt160xtTiL6YV.oip2PNbTWitN_rEVnm7FeTN5r4CWwTfHHXF-ev5QmHF-nmZgW3mBygV_DTAUKemKf73kITNuCPbN1mj9_IgJ9sbJSqSL7A5jLkcAsoSuYCSdG4QHYKFaw_WrpUOMclvDWCy6ETtZNh1_csHGJwIy09eX0NPZnhrEDH_Ul3RXRaHV6DA8-eSgIKidF_W1MjdYYp5B8KejhhT1rH3YV4Fhw3BEY0s5GZ_agtsp6q6oSIZTBzaKiQrMg0oy0d9PxAiCcNVgXbq9eyurvIspZP6pkepA28-pWhQba510-zrF3Th6JlHw8vgz24QUGdThj_98c3iagb8vNraFaGqsGFUDPAJvkH8bTFc1BDaQzFcTILSLtdATi6NTnflbPu1xNgm4suNwODETspDRonZPwGeiGy1KW5ii4FluNMHBrSDplaLk4MuUnic-M1lfCJbhHYqz8_4c90v8JbM004MCeiBaPLAhsBQ98f08t_9vSzkwsCJ260E_AOtUOuiKOZp4VQbOIa6ayl3crYaOQ2kNA5XoErEvSOHhaPQUMFHESbI2CQ-AGnsAaKxzav1HxM2yk6gw0u2zV8kjg1b1YX9zBdE-_oD7orECIF6GMKB1aySYBJgyiCX-JMe0NJP26p5HmePTvgCroPOMMrccwsWHoHfr9aFf-4CMkhOQJAFnTifQtY-0NMZfKuGPlBq-_SRv3v4Ygrm7564rwYEIG-3e3hVamEhdGFwI5lesj_P5CVGA20WKQ5abk6K8R3wDN4LxpEVW5ghLVKvCJFCR6gZCUEtkbE_shswgCUCvr7WzVLjbZDMCcqIa11naaP9CCfgUz-fLgr-Ls2FdEb2mhOQZGLW6wk1lwFum3Ql569AUd2XgRJ9sF-Boeo4bOXzLTxss3ih9kM3DKPJEWoUxUjqAFPFrPNJg3wgTZzPdNg7Cqfz_3l1y9LLOKlruIC6EjWCCKTzPHbADwSCPipt8yxufXaEIWF2tUKtg2lpWW1iKkiB2M6Zri3YAIBnAzRS3NjH3XfrR3f2cvw2NqPL5bmZmuWdIrGcMwpYyNWhH7MSyb8gQZ2xcAsDeHnOSDP3YJroXMLMbvcWoia5kHD1d2gpbDgsdSrxGCcM3MDoB4-jVjFqjZgn767SvahVkZ8yhcn6n0WJvzuhvHGsvecHD0DeEx45Y1Q40-85WDDw8ZQRzoZE-n6EpsDueqA1v07heJQk5658-czkbYZ1PcSk_hBrFfCbJrPc.Su7GOkcTbIqa7cUWpcat4w",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcwOTYzOTI3OH0..MDNUQBiEmf-BfXtd.A_S8CrEvSemM590jP80YhpQ--91MmoBFU5aJphaMzrA0oJU_kyhWIw0cVUaew20JWL2iIQVosaMI509cXxiNNBaxnbru5V-EmTgwTzKobao01ysasj0huFGZF78uj1wJR4EMpRw3Ebdw9uoIDHDpau86pkM101y-biKLQFFncpG3mT6WZ57W-4L4-_hzMQED-AKLSCrglts49uCkKJt2GUpWD4S3Sh7fpNEbKld8gmRv1Aj6JudUmyyqHxqz9cI0TXdB4n0vDmT2j_Fkzy_eOvmYZ9kO7fbWSbSbx1xBYYW2EMGyIFUhbfJ3hUBnb94sgMXP6Zj7DCXSjNl8IljbhzrQpDrm23_hiaVpsjA0unxWyUl5bd3Q54IOuf40KRHkvA25aRv0aWMG9mS12guBrIVNzcb43Vdb9f9VbYFyxNprZxTpAc_Tf0rMoKlF-IFdbM1rGel3t73kYGlsuBYae77FteoZPrjsJPkb7qyuGVI1bEAOC8Ms5Kz5YSKFz0-Os763eKlj1Lqg4sz1YlghLaCkhxvDJL8nOqxG6OR7vtLb1x4IY3JzZJJ--rxkQ3bNJMJ8Fcuz-a1m12PVMRVAd60P5OJorLFX3ap7PFFg6tXUQ0-iNCwkrUeqdXr3FImuI5HhY3aFp_ecwE3HBIr5QoyTFic__DvE3_QcwosKngYSnF0yo7B6J1fEtvQU0WW8hSMxcMk4RtrLyS4CjzpA_9CuRzSrQavbzxP3heH4Tssb5yF8BMc2Z3QC_YKNnv2mdZKxgkrt4nUEVlf-1Rc08JUb1UKd7oqGjvbWmZy7RL4gt_Orom4yopfyTWz5gzbDot6R8v_E3yTYnGZTZFnIpg_59rZGnJLl1Gi67QRPlYyvDBcfcJmkqNBh_EVW-zmXq8RZFIG7jMUKrG5ojbUSbHQTBNsBjVk9Atg_1olQpQifUOmPDlSAxVknvtaUIlVDqhCWOJC0tvALpfWzch0FUaJ4NY6lUqVL_I2l2jyfo4vnRa_r5DoYVh7_r6ZFLMFqY6IHWqeZYGX1pRGLQefZFbtJ6DuaXC2yX3f9stW4Mb2vQ3ZonKmD3tXE5Rbs08uR8ruiONQPUgR8N46gC5L6VBKdu1KDAGrV7_ApqKo-PC69wIf19GUMmYgVuH_mB1mnl83FAqfeN37nEqhJtfSEDy7kzhGs-2TjmdSZb90wkNEnx4Z5F1mjbaML6Vc8VdR3eRnQsl9aIPkb4QTRIt0RkwkW1LYIJj9TdzncV38F7cCgbV6z6xU8EU0.uWbDQ6HYs3tJssnPnuy_4g"
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzg4N30..BgU0fkB32iBjngX5.-kFPSgQQohTj2b5x4Hdl0udf3X5ji5BaqLu8ocWLaZ-K90r18jeZWvjOEDd1UCw1QRbbza_HMYSlRLHKa7SiHDa7a74CRefA6JVl16oXYGDuprQOhBIZCi1q05HgXbY87g56SWkbhAu7ehSZ_KCQJ940wjfx-TWmE3nCsoxzV5TM7iO6C490_zA6obrCJB64LHqs1Qty9_4vCtcL5aKy6D8AwVTodlEAk_jercN33T0fKpyIbCqzpwNvGTG2Q4hdAUHF_nC7g4q1Q8gNHEliUZb5QZGPpwbfHg0FoRo63YK_v5eWs8nV7ED1mEVWhuzl2ub-1hR4L46jq2EoWCijiE42-wlvGqE7aE6P-5P3JiHxNF5SgVKYt_ejT9J8q_ek5m2-HSwl3SWchc2QOXwaQt_F2gtl9zImoOwuEIJVdw1ukoW97_Gx2jIlqbX546gXKUngH2APxZSdKmwNRJRNK-1r_n87vaU2aV73dUSKWcqxIIXn5FaQTeFT_dRuokoq8zwZM-GReYav-RVGTPvLxmNdmBTs6fOvpiCcuY9SQSvpEoYIRVnUhVFl7BcwAoD4pouITJOf55a5KLIiswhN8MUek2NUlcqV-oX2c5fldUD2zwatu4Ay4xThYrUe94Nu7tkF_V89R86p6zRtgtdR0QEi82wkJ5aVPRcXg_aZWAnxVbcjxcht1homdvXUUA6pNy5HKqnmTdXDAUPdh2WZzLAu_o4g2wp3BzeEBnREkHQ0HUuVeuOIPEYtkA77sMwHW6QmkY5t2Wg5JdZL-qB0s3OmOXC3jXzdZ87STkzQwngu5PBzlhJv4n01zcMPxglxgv348gE6SpxWAi5NUm1TtIJY_xPn2KMTFczcClsVki9QBcI69uRS0etjKpQ6l6ylR8A5aijmR4LG2aVjsenOEJLzJJBQ5Rlxp75jFKFg2vYEfCD6Wk7wuGD9Q4OS_4gymdwuV6dc0phxO_uNuWWdZYrVcv26rhZGsi8qLjpWkSo-GvR-FazBh0KRyGe27EByKBU3Vopp4w11Zr_tbHbm8IqR_WuNCVw5bVYhPlWMFU2JhAk9qRsxf71c5Zht_KG5ACU9Of9lcYaOc63woN88FjBwTV2o6myKvHg-0Mrsqi4qMgMACMQANjTBEpZ0yKAMNX30nuq_lESXea5urEkfpPQDuxQAeH06x3RV4y3iUQary_tuz5KmwS7_lGT-2XCsOxU_L1N1X7rgZlwwx70rzPk.K8JnuxarGu7eS5BJrSVJYg",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzg4N30..m7pjI0Q4sGeRoaR1.Jl2juELRvRrugxDOufDjplixlsl043Y_mSl1yHBgX3UB6hF7nIRBGA_fSO0bqyqDrpvgRR4C6sn67kqMGz697blzzBFpTabNyH4VQzIW-KTXNLt3MAbGRu_sFR1uLTT9zaH7U4cTexHaKZuCyXVfGgPNeo32Nej_lW4HLJWhSd4h_kXly_euh7q23ZFs13EEJLvqZ6XsO7sOk_SyfTAdf8RfjUgnxaoSrthcg_bIUoNSRmQgeto0cbtOWGbPRpYVhSPDLFBXq9yIyhCKW9RVB3KfYCy3isrq2sWB0i8uK6IncjItX8snx9KG7KFa1NPHAE7V4313d0CnbvHXM4SzOpWaLrs5AatydhUSXX3ZD9tpLRs-h_908pkO76ZPS0go67pe9kaV5yq1-DDl65HjWxeyGd8algTK5DVadr5DTh5sYB9Fn1Okug_BJ5Zzr3X7OuQjwvWyF3oFwpkJSz3DVIuhbkaQGtAAdHmsDzSZu5Jn9j4wr2BAODdUD4wzTjrxCKqZob9OxQlT9XyBMvP6xkYLsb-O8eXqR-hFxDjJ978OFma3uQIvF_fMQRaulFzJ7dxh1pIRjny5xeqgbRB3Cl8Xx2yLpxcdZlYIkHiYNsgMpKBMb6ohvEoPszD-cUnxCv7HSgGqeYyJULCjSRwytZOdXWneDaU2qk83_kPswqstzARdTBB2HrrtubuMrjvvpDXjy8Acwp3rlhp4JcWtsTKrK_jAIoMQvamOqZaHSt6l2ojCYKYQIM-w-VvjW0FTP92AqWk0EeqKeyodxmru-BJ8dNKqPuboWzwFqVRJjWHy7SzYUHbbL2cBVVzQxwJBtI7KYW12bZ_-aacPI9tEW1wJ2rbn0mYC-duLuFfoeS9u_Y3SZhnrWCKhB8CTbxcFeAcr-Ubsu7yHw4B1dpmPI1CQXni5yqO_-NI1sHZJDp_0VrQX00qwpUAvhuSGqXkv4miaIpRYZhXbGIFPhKdAc_-zA4echkeRz_X4CotIxnhScFfkzrfm3dxGasOnP7wqFt5hQHtylGi1vmYObQ872yMUMjTbJI-O77ybV9FsSw6m6cXEdTfxD1H7TGxT7K2rYhVy1kxTMT2KK6N81PhTJlKYSRILdvE8a3rZbZIF6kYuFi0BhTWDSxcN2cTl3bnqmGUejDtkL2zWWYR2hjlrEaOy5PsSvC_dDjCcxUP-WEQVjb0Ivo5a2VUv1Xxb6wMI4RxfikDa3bPVwFlH9ccfb22JZxdwjg3U8Nky1c9JKhbayRHGDP67YLw.8WfX_hpQWalbhaWY4lMcYg"
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" : 1709639278
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiWU1PSktBU2RVeGlRai15S1phZlhVQSIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoiYVUyUmpEdXRTOTY4ZDJKajZEdWstX1h5SDFNVkV0LUUiLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcwOTYzODk3MCwiZXhwIjoxNzA5NjM5Mjc4LCJpYXQiOjE3MDk2Mzg5NzgsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiMTA4YTRkMDFhYzZlYWMzYSJ9.ac_RXOp6ng5bdqPx7aVJXASkTN2ZtjQPTQYDR98SrjIwTYPG-HuUaCBtIMrpxylXPYFCSfnNMQXyIpQ9QhNFaA"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiMFdLNlRwalM0TFdhXzJvX21VOEVlQSIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoidnJzOV9Sczk3QTJaeWxPR1hVaUNOTkItMlVfMnJYdnUiLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcxMDQwMzU3OCwiZXhwIjoxNzEwNDAzODg3LCJpYXQiOjE3MTA0MDM1ODcsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiY2M2YjkxMTIxMWYxY2Y4NiJ9.fTi-gr5mFAr7_-ybQOyVIPIv3JYTlY2uIpHlehe0CS8IESp65H4w5B2rtOd_DhpSUOYoKb_1zA3VFuXtfBk-fQ"
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" : "YMOJKASdUxiQj-yKZafXUA",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
+}

Body

{
+  "at_hash" : "0WK6TpjS4LWa_2o_mU8EeA",
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", @@ -1062,27 +1062,27 @@ "iss" : "https://idp.dev.gematik.solutions", "given_name" : "Darius Michael Brian Ubbo", "display_name" : "Darius Michael Brian Ubbo Bödefeld", - "nonce" : "aU2RjDutS968d2Jj6Duk-_XyH1MVEt-E",
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" : "vrs9_Rs97A2ZylOGXUiCNNB-2U_2rXvu",
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" : 1709638970,
Timestamp der Authentisierung
- "exp" : 1709639278,
Gültigkeit des Tokens
- "iat" : 1709638978,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1710403578,
Timestamp der Authentisierung
+ "exp" : 1710403887,
Gültigkeit des Tokens
+ "iat" : 1710403587,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld", - "jti" : "108a4d01ac6eac3a"
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" : "cc6b911211f1cf86"
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" : 1709639278
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTcwOTYzODk3MCwiZXhwIjoxNzA5NjM5Mjc4LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcwOTYzODk3OCwianRpIjoiZmMzOTIwODU2ZjZiNzRlZiJ9.XVnx44BawO78--gLvyhKO5hBhPOdkPNZJzThB2DIf4Y2rVoe91vLuvnLfWcBk_WaKmhZ1KcQm8Paqlmu07O2pw"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcxMDQwMzU3OCwiZXhwIjoxNzEwNDAzODg3LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxMDQwMzU4NywianRpIjoiNTAwNDUwM2EzZTA5NDE3OSJ9.J4UJZqh3fhe2HTyEZ95IKK3x77p6bbYrhxRCRWWp5k9d8PgLCSB5FQpbe1qod8XfZh-tBOPpyjNl2ln2JfCoHQ"
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", @@ -1095,38 +1095,38 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "eRezeptApp", - "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" : 1709638970,
Timestamp der Authentisierung
- "exp" : 1709639278,
Gültigkeit des Tokens
+ "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" : 1710403578,
Timestamp der Authentisierung
+ "exp" : 1710403887,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1709638978,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "fc3920856f6b74ef"
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:38497/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=tmIaYF9vkw9X78O_rhq_78UBDkiGe72n&code_challenge=BRIY_JJJrLn0h-Md4lBeXVp_1c79jUPsSOS4RKg-YUY&code_challenge_method=S256&scope=openid+e-rezept&nonce=ud_bQhavtIhDA14O1vDEPgDu7RTZAHhL127.0.0.1:-1localhost:35977

25 GET http://localhost:33233/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=aiOHQKWzSnMzpHNm9NP_eJNR8qMeYCfM&code_challenge=X4wuds8Ni1uZvcaj0f5YCo5QtpyF69m9k34AEbb4gfY&code_challenge_method=S256&scope=e-rezept+openid&nonce=C3MXVguptECSshPIpxJmF2UH2s3sxnRJ127.0.0.1:-1localhost:34959

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:35977
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

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:34959
Nicht verpflichtend
Nicht verpflichtend
Connection
keep-alive
Nicht verpflichtend
Nicht verpflichtend
Empty body

26200localhost:35977127.0.0.1:-1

26200localhost:34959127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Date
Tue, 05 Mar 2024 11:43:02 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM1OTc3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJkTWhEV0NEX2drdGNEVzA0R0prMVlwaGEtMHZDRnV5Z1lobUNCRVExSUtjIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6InVkX2JRaGF2dEloREExNE8xdkRFUGdEdTdSVFpBSGhMIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJ0bUlhWUY5dmt3OVg3OE9fcmhxXzc4VUJEa2lHZTcybiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MDk2MzkxNjIsImlhdCI6MTcwOTYzODk4MiwiY29kZV9jaGFsbGVuZ2UiOiJCUklZX0pKSnJMbjBoLU1kNGxCZVhWcF8xYzc5alVQc1NPUzRSS2ctWVVZIiwianRpIjoiNjk5NzBiMWY4OGJlNmNiYSJ9.Jmw7hPrNhUr61V88jw6JSfzkbuithPDZb9KwHFywEvNgBxcYZQnP4T2tljKare4czd6lEweAJWZxvOhlCwko8g",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Thu, 14 Mar 2024 08:06:30 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Date
Thu, 14 Mar 2024 08:06:30 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM0OTU5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJTZWt1Y052RzM2SEtvUVRwSEhWZDkyY1V5RGc0aFRIcHVKVl80RUFZRFBVIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IkMzTVhWZ3VwdEVDU3NoUElweEptRjJVSDJzM3N4blJKIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJhaU9IUUtXelNuTXpwSE5tOU5QX2VKTlI4cU1lWUNmTSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MTA0MDM3NzAsImlhdCI6MTcxMDQwMzU5MCwiY29kZV9jaGFsbGVuZ2UiOiJYNHd1ZHM4TmkxdVp2Y2FqMGY1WUNvNVF0cHlGNjltOWszNEFFYmI0Z2ZZIiwianRpIjoiYzg5MWI0ZjFkZDlhZmI3NyJ9.i9eNddlKzDHWu4gCNyOp3wFulVr837BDMSQXOLhhrK9k5m7sYax6eNB1KENqocpY1-vb8Qo-d3-CDsJQJzl73w",
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.", @@ -1141,55 +1141,55 @@ "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:35977",
+}

Body

{
+  "iss" : "http://localhost:34959",
   "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" : "dMhDWCD_gktcDW04GJk1Ypha-0vCFuygYhmCBEQ1IKc",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "SekucNvG36HKoQTpHHVd92cUyDg4hTHpuJV_4EAYDPU",
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" : "ud_bQhavtIhDA14O1vDEPgDu7RTZAHhL",
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" : "C3MXVguptECSshPIpxJmF2UH2s3sxnRJ",
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" : "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" : "tmIaYF9vkw9X78O_rhq_78UBDkiGe72n",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "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" : "aiOHQKWzSnMzpHNm9NP_eJNR8qMeYCfM",
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" : 1709639162,
Gültigkeit des Tokens
- "iat" : 1709638982,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "BRIY_JJJrLn0h-Md4lBeXVp_1c79jUPsSOS4RKg-YUY",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "69970b1f88be6cba"
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:38497/sso_response127.0.0.1:-1localhost:35977

27 POST http://localhost:33233/sso_response127.0.0.1:-1localhost:34959

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:35977
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
{
+Host: localhost:34959
+Connection: keep-alive

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:34959
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
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1709682170
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MDk2Mzg5NzAsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzA5NjgyMTcwLCJpYXQiOjE3MDk2Mzg5NzAsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.S18an3rc54jGjzPYp_AFwf42BQsNUblhTKM68RlAmOSgufj59zLWQmtPSnJsNIxSJDMrHLz_ti5vLhxRTADrwg"
Ein verschachtelt enthaltenes JWT
-}

body.ssotoken.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MTA0MDM1NzgsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZXhwIjoxNzEwNDQ2Nzc4LCJpYXQiOjE3MTA0MDM1NzgsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIn0.Pd-OEvEHYRFxLknuaQ0nykjXVsgsdrzutcaezmveRoEvl5IXi8zQbeh38x5J0jwhKO0Xho5n1x57HdsYlMoCLQ"
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" : 1709638970,
Timestamp der Authentisierung
+ "auth_time" : 1710403578,
Timestamp der Authentisierung
"amr" : [ "mfa", "sc", "pin" ], "idNummer" : "X110411675", "iss" : "https://idp.dev.gematik.solutions", @@ -1202,168 +1202,168 @@ "y" : "lgJUXP3xPwcoT3PyDi5ILGmZmyrjUIYXqROD0OKrWA0"
Y-Koordinate des öffentlichen Punkts des Schlüssels
}, "given_name" : "Darius Michael Brian Ubbo", - "exp" : 1709682170,
Gültigkeit des Tokens
- "iat" : 1709638970,
Zeitpunkt der Ausstellung des Tokens
+ "exp" : 1710446778,
Gültigkeit des Tokens
+ "iat" : 1710403578,
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:35977",
+}

Body

{
+  "iss" : "http://localhost:34959",
   "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" : "dMhDWCD_gktcDW04GJk1Ypha-0vCFuygYhmCBEQ1IKc",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "SekucNvG36HKoQTpHHVd92cUyDg4hTHpuJV_4EAYDPU",
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" : "ud_bQhavtIhDA14O1vDEPgDu7RTZAHhL",
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" : "C3MXVguptECSshPIpxJmF2UH2s3sxnRJ",
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" : "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" : "tmIaYF9vkw9X78O_rhq_78UBDkiGe72n",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "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" : "aiOHQKWzSnMzpHNm9NP_eJNR8qMeYCfM",
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" : 1709639162,
Gültigkeit des Tokens
- "iat" : 1709638982,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "BRIY_JJJrLn0h-Md4lBeXVp_1c79jUPsSOS4RKg-YUY",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "69970b1f88be6cba"
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:35977127.0.0.1:-1

28302localhost:34959127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Content-Length
0
Date
Tue, 05 Mar 2024 11:43:03 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=tmIaYF9vkw9X78O_rhq_78UBDkiGe72n
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Thu, 14 Mar 2024 08:06:32 GMT
+Location: http://redirect.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwNzE5Mn0..kPSY142HVuQCGPm1.Ly1c59D3zEcmQOaLs_Afmbtnz4SJP7ywFNLiW6ABAXj3b2kk_QTosKMCxQ-B1HioZF4yQX360IVO6T1-dXCaIOULooZZN_blmwn0McAM886E_51Wjk84BJsbRzgZxmcYaRDX4GJRrWLcn5M_mJ5yGRBlu8KNqTNeNSJX7EeVj1pl3OcG5Mugax8i-NqVCKz_KeHrWnGZRjXCWOOV0PbTdjhmtNz0RVI0EDU8MVHwJq1WwhqLqe8PYaLf00tD4PsBDUdQwD9gIG3sAtc4s45-Nje6k7vLitzg9STRr9xPBDzAVbDMVMuBE3VNYYSXCOkt3M25Oi0XTd1HXeDecrG47GzaeE4PuIKFY15L9_f6yhcaJboKBS4NF_kI8aqvHIf_WfBWNlL33-mYHsyhXDQ4Zw0UDk-pEp8Th9V92oUcei852nz7Ylbox6nXwhiQXFx8dV0A_S3K5HgSixGzZ4g-0U7EILtlpfwSI3kyirQJpFX9KblLX2rgXNAC3218ul0MLIJDSq55ZKjIoixp5Y6Z_pnGrF4fb_f6jTTmbfdornmIHXNECMkrMFtgRvMRzyXFxfbQhvziPYnWFxSBlwPDTuciSN9qEgnusRCXSU3rkLOwTq4OIgGeRbYnAkplXhZCpAmXINCy_Pxjm4XivQ7lmNgjuRsBDRERTHwVwiz-JidU5DEo7LLqKjeavURoWKJ2BmZd8kF1w_UfHrYcYPCc1_8BtUyRgxKXHHBnSnKI4cjTO7mt7VQ0I1aFl67Oslx_6lVPeZLsJYOC6g5-m3RIf5cTDezrF6jZzC5A3qzobBJ7jUl8yvdy0z0d1hzhByleZnUtfb9QXMAVp6qKS0uyIN0Xhy8Sdgrzdrb7OzKDgibN6Wi8GGqutb0GBhMUf4v3iyCUSaYu5qmdD6bwU53V4GoxS4qAbBWhC5vpygvPjAHDFlrN1Tw-v2pJd14C4xrVCm9CfMwqxQMWN3NJjrJ5SlnyBH6KieG6KeY_3u6puNPUf_8XSp1Z6BDDnFwzrpJ9OxLfOVo_3avyBQAarilj4Scb97bz-wOo1VViw1FGFIqlOugbfxCKDlfUEqtRvv0UApVzhiTCXV0rTMgrcEktNI3_eSvgxzJK7PXG3P78E9Ue7snphO2WB5nc_vybwRLX5VfDqPEUmAm5E-BFufvLr1LcvubnLSDPcWXKh7LFIKcPi9_at0WdKEBvF9G36cIRk5jpAfAyZALTP9eZy0YrELq8JO-mL6desjC6K-Hqvwf8zu5o71LbzjlCf-LxZYzZrQ9zlj61gOuto3nDyPEIh_XXDgsYM414J9XYTvLRmUnPAC52SPsuqvPmJ77rT1HOsg5htc2OMrTSv48Gnsyvjg9B9V1Snl6Q.3dIUSdMcPCIHEGveffzKIw&state=aiOHQKWzSnMzpHNm9NP_eJNR8qMeYCfM

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Content-Length
0
Date
Thu, 14 Mar 2024 08:06:32 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=aiOHQKWzSnMzpHNm9NP_eJNR8qMeYCfM
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" : 1709642583
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM1OTc3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJ6VnFWNEpBNDcwZ3dPa0xzOFM2dkR1VS1QOFJCeWtVTiIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJ1ZF9iUWhhdnRJaERBMTRPMXZERVBnRHU3UlRaQUhoTCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTcwOTYzODk4MywicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoidG1JYVlGOXZrdzlYNzhPX3JocV83OFVCRGtpR2U3Mm4iLCJleHAiOjE3MDk2NDI1ODMsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzA5NjM4OTgzLCJjb2RlX2NoYWxsZW5nZSI6IkJSSVlfSkpKckxuMGgtTWQ0bEJlWFZwXzFjNzlqVVBzU09TNFJLZy1ZVVkiLCJqdGkiOiI1MjgyZTI4ODFiMzRmZGUzIn0.EuF3urIs7etJ2eCbAP2hYpBKBfMaq4Z_g1vfFrG7m3cMA3U7FQdoUWIRM7ZrMERGU3lF7DV7iRsg4sUeS6HhwQ"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM0OTU5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJLMWdBY2ozbW93ZG9Fa25BdldKY19PVThwR0Y3Qm9nNyIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJDM01YVmd1cHRFQ1NzaFBJcHhKbUYyVUgyczNzeG5SSiIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcxMDQwMzU5MiwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiYWlPSFFLV3pTbk16cEhObTlOUF9lSk5SOHFNZVlDZk0iLCJleHAiOjE3MTA0MDcxOTIsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzEwNDAzNTkyLCJjb2RlX2NoYWxsZW5nZSI6Ilg0d3VkczhOaTF1WnZjYWowZjVZQ281UXRweUY2OW05azM0QUViYjRnZlkiLCJqdGkiOiI3OTY2M2MyNjk4ZTQ2NjU2In0.b8wzoK4tkLYCp4ARyZ77Pvh74WgjXhoklQ34tY5MFfUQA9gpyHc4r0ipSmjYMtoTGbjxtjWEfNwla9E87hBZsg"
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:35977",
+  "iss" : "http://localhost:34959",
   "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" : "zVqV4JA470gwOkLs8S6vDuU-P8RBykUN",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "K1gAcj3mowdoEknAvWJc_OU8pGF7Bog7",
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" : "ud_bQhavtIhDA14O1vDEPgDu7RTZAHhL",
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" : "C3MXVguptECSshPIpxJmF2UH2s3sxnRJ",
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" : "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" : 1709638983,
Timestamp der Authentisierung
+ "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" : 1710403592,
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" : "tmIaYF9vkw9X78O_rhq_78UBDkiGe72n",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1709642583,
Gültigkeit des Tokens
+ "state" : "aiOHQKWzSnMzpHNm9NP_eJNR8qMeYCfM",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1710407192,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1709638983,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "BRIY_JJJrLn0h-Md4lBeXVp_1c79jUPsSOS4RKg-YUY",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "5282e2881b34fde3"
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:38497/token127.0.0.1:-1localhost:35977

29 POST http://localhost:33233/token127.0.0.1:-1localhost:34959

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:35977
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
{
+Host: localhost:34959
+Connection: keep-alive

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:34959
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
{
   "alg" : "dir",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1709642583
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM1OTc3IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJ6VnFWNEpBNDcwZ3dPa0xzOFM2dkR1VS1QOFJCeWtVTiIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJ1ZF9iUWhhdnRJaERBMTRPMXZERVBnRHU3UlRaQUhoTCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTcwOTYzODk4MywicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoidG1JYVlGOXZrdzlYNzhPX3JocV83OFVCRGtpR2U3Mm4iLCJleHAiOjE3MDk2NDI1ODMsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzA5NjM4OTgzLCJjb2RlX2NoYWxsZW5nZSI6IkJSSVlfSkpKckxuMGgtTWQ0bEJlWFZwXzFjNzlqVVBzU09TNFJLZy1ZVVkiLCJqdGkiOiI1MjgyZTI4ODFiMzRmZGUzIn0.EuF3urIs7etJ2eCbAP2hYpBKBfMaq4Z_g1vfFrG7m3cMA3U7FQdoUWIRM7ZrMERGU3lF7DV7iRsg4sUeS6HhwQ"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM0OTU5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJLMWdBY2ozbW93ZG9Fa25BdldKY19PVThwR0Y3Qm9nNyIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJDM01YVmd1cHRFQ1NzaFBJcHhKbUYyVUgyczNzeG5SSiIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcxMDQwMzU5MiwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiYWlPSFFLV3pTbk16cEhObTlOUF9lSk5SOHFNZVlDZk0iLCJleHAiOjE3MTA0MDcxOTIsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzEwNDAzNTkyLCJjb2RlX2NoYWxsZW5nZSI6Ilg0d3VkczhOaTF1WnZjYWowZjVZQ281UXRweUY2OW05azM0QUViYjRnZlkiLCJqdGkiOiI3OTY2M2MyNjk4ZTQ2NjU2In0.b8wzoK4tkLYCp4ARyZ77Pvh74WgjXhoklQ34tY5MFfUQA9gpyHc4r0ipSmjYMtoTGbjxtjWEfNwla9E87hBZsg"
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:35977",
+  "iss" : "http://localhost:34959",
   "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" : "zVqV4JA470gwOkLs8S6vDuU-P8RBykUN",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "K1gAcj3mowdoEknAvWJc_OU8pGF7Bog7",
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" : "ud_bQhavtIhDA14O1vDEPgDu7RTZAHhL",
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" : "C3MXVguptECSshPIpxJmF2UH2s3sxnRJ",
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" : "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" : 1709638983,
Timestamp der Authentisierung
+ "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" : 1710403592,
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" : "tmIaYF9vkw9X78O_rhq_78UBDkiGe72n",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1709642583,
Gültigkeit des Tokens
+ "state" : "aiOHQKWzSnMzpHNm9NP_eJNR8qMeYCfM",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1710407192,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1709638983,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "BRIY_JJJrLn0h-Md4lBeXVp_1c79jUPsSOS4RKg-YUY",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "5282e2881b34fde3"
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" : 1710403592,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "X4wuds8Ni1uZvcaj0f5YCo5QtpyF69m9k34AEbb4gfY",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "79663c2698e46656"
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" : "ocjoxWnQBvjQV-LgMZ_e_WdRBZhgGUtMiGzghAp4X84",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "kJOOeVPUAgBApD3XipfY8JBnldXfIU7nJVz10FcEMHo",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "JNJaAFT5bx5Ht_Z5XXTY4cS5kk52ApFHWFCOO41-4VU",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "Xwv3FelsBr9c03ciUYZaTpledFf9_2rHhu4nGInAjy0",
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" : "vSru8C7zy3ML1xgoQxLwM-LjO4fnBp3UQnqQ4oLk7dA", - "code_verifier" : "XAsMRx5D4FB2Zo-YQq01qVexUOf83UWGRBlbIklTlrk" -}

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:35977127.0.0.1:-1

30200localhost:34959127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.1
Pragma
no-cache
Date
Tue, 05 Mar 2024 11:43:08 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Thu, 14 Mar 2024 08:06:37 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
27.0.2
Pragma
no-cache
Date
Thu, 14 Mar 2024 08:06:37 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcwOTYzOTI4OH0..iM-aUPXv4HP_fahl.W91NaCI6NfjV6jvh-75dBC_60UFIkoxgxv2k37M_9HbPhUW__kZWa8H5SqdX1j__E_1dL-Mxs1_H5066B3lNhqsGk-tx9X7NOna1WuPVCc5Xw1XJAa5-Tt3VdW1DoD-obI-Tbqb8Gi5a1gk9m2ljRpzv8XIFi04qv9aP8A452t-w4Gn48UDGjdtD1OhFsHjen2Y-ijMC0g1pAN0ZSu3iIuGBXizdKEo_xm7jz9Stbogj96fJoy-W8_RYmnNR2-PHq8OBvK0jbfAWXo4kKMdAbjEWeBwHE5lg3VSB7dF0c1ZcwhxwJo0eWDVCOy7U9WS0Jm3r2hNGOYf165P90AzvRG15BpqC3rFI4odmA798YQH05sRvb_0fT81PaOb8q0YalZUmr6LEEWHKVkL5sgyHAjIjIppSsKn9txr1lVm0T6Xe6fhTEVV4ZMDqUQY9ess1WhGs5loiZ72FJUD1KYssOoNQSmMvX5PB0rZ8CWN6f-nXBv_rCoFn1fpgjr4jc-HzT0bULehk0O9Jj_GToJMMSIHAHeP3VyGqFM8GwpFZHM7OS6vT8zi2zcuaePI5znAnKk_0qYN7y9ZYJaBGnjvZUdclT3sRMnyP5TqjIbRZ9QCWeA4MLAE_DLC3wixDMoGCjJqjoMX59ALqdSRV8Bt00-p_KzPHyrNA5RyIaTIS240G4yUVV0X4aYM-ngOOf4c_x7L1UbY2Vp4DaAjh_HrD5HVU5W0ZoZ9hQq5U_WiAj06DErPPRosDBuwU3aO0FPKVjAkkCIfqtehPdFlfxytMSWDv_vi3aUCSbA4HWH4WBdnzxwxQIozhLkV3yK_O-57aLE593EQZWdQsrb9aVka4649rNgPNvy4bXQ2NADEb3WKbNboR7mIsdtQEU_x4jiC9BPvmJ_MPjHHLFyX1ZtVHEjemVyylM7YUQ7gEt3AWLdrmjiSkWAPM09PMmjOoqXgq9JCghLAkMnlvoBM4roP-_ZW0suKUbXZ2rD1LeD5Z5H8SWJ_FY3fLCxVLYNKLMifLaTK6jXAJBKaao9SypwxJNXxrBsc8lpfOjPVGIlgSyDRhesWIqM6s3jxnx_5u2uz2mzi5ru20S692SRyiL6h4WaomLfQnsnO7lBTTjieco4OEyTQkkbIF7WokkWw3rPcebJLUu5HC7KgV4fGOoqxW3L-yhez9IloWhkf52WClM18Zk8bl0w1oSRTaIJ835BdmOHXEEJxFvjBrORcZcRaODt0.k9flToEbxkcM-Sbh6zD7aw",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcwOTYzOTI4OH0..aTiK_WpmJOHqCF1G.E_T4NsWRYTbnMYkqDDJbl0EWFXb5yGqaPQNoVVlDP2mf7ok-ICzNKSOkfFu0f_YTvI64FNZoOA4ptNN63P_M1O-Frsiu69o-yyeBadWCxYVR50zZ4_sbpF6drduOH_8QgL7W9NQQ_axF-wWSBVKdmsytiGTPvvfQ-hlDGACnVPh07us4D0q51HL1LecI-97Whemig_IZrce1_IuuR6v5ndMuD6dvual-QKd6KlTlKS8P6WBzs1wGTNgYhm9tuo_qAJjf6oH9_4LpoIiSckdUWv8vLqNarXAHag7tjJfbE0JORE7sgaT40n_WIU_keQy6mZP4a1d1rnVzTCW_gkD1MvwB7KyKGH_PnXeWLB4YSpH7Nh_sXFX2362suBY6LQNCJRVGF-8AsyXX1M7gskDKwdjuJs6IBBKfBTQphefQ7j1pSnoTKmNBxoWlc4f3wWyoEd--hlcuKzqApc_y9kSG3hXloP2GJ9E_ifri40AZGHxdsCou2AKgRFD-0MYAIuxuHuX97ecIukeYf3WcbUiQgC_1jpejsXoVzdOusTG9sUGu_YZKHrYX7RjZqn-MH3lOvvYGyYS6c1MdZPfeQeMOxjVWRJ-n2bmS_EUzrkt5hQN5aLG0jZckoIibS84zFDZ0SARJuBTio_Tqmqo_qXTqWh7O7DfbTudMpdxHsvZvi6xco9IVgW_LGgDZdOQEd4DjQh1kIVFGi6-I9rlHie6DO_2rBQi3UpezZze_snJFY0IjDz-UJH2KYamj4wgCUUGhFein1Pc8wMosC7H3unxsNmb4HGeOxVMcaw0adixdvRuGbtjPnOU5BIFbjPK9GlrviyMEKk0_CrFXL36NqYnuaKOpDEksP_uAdRSy2pw8nQx-iOubwGG9vQQs55Y9JmP_VurU2aSzsHHDOjjqOZHGL-I8imsZgieKnektqYZkbEftay8To3l_iwT8fNqGgDzEVZPy9iCkeWX2HJtcU3mpUCwNbiNeUaav4Hn7POo_Tz2tRs8L9rg3lRCyc3MK7Z0eYoiyb0LLptss_L4N3hvMi49qsUoi7VQFUcgGo2nus3TDkyeLoUxHmK8lfgoZqCz6JLGZ6p5I6L-MHKLDRf5jf5hdcjByxFKJawVB-vApE02-bJE_CoP-XcALosvPj6aFyjGK7ouyjd6_fqCnNHvLTVYiA_U948IgCvEY8IhyGLnNBF2glg2yID0XbWVmu7Te-djM_1FctzU4cSbbKk7aOCVtRsErUJNDE7knz449SKJtc7JySDCWPBc.gMcBOMCvJE30kKL82fMIJQ"
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzg5N30..tdCuU7SDw98jfaeH.y-m8Krjh-HZtS4mXQH9fDxRArPo-gekmMZKWu8mAHqVhVAlLMcxld1OTlDGLgCBsgN_JG3fqBC7J1NyvUjo9hVbkoXdHRnvlYCO_xs1RmdCqs_lOD0REzWrA432FmQHEr4Axpb74iaZ9ylVPTc46T3jqAYPdAjuioXpzRfFbtGIOOvxnpju5Cg4uPcMzj2LiTSSYkivL_ZMyWq8NoytDNcX2TqOtWTDY9ADwI_Er_gvNG2AF4PToRWTqXkOaKV05-5mRObV4Bm3WLMa5uY3yb-yAzxF9Zc6Vcqt-kewfHL0aV95DqfZpki_f5d52dSO-kOs3jzuBd5XgZ9HNtQr1tY6Nchucvd3hG2wDLVRJ0P0zz-AVC8czY0ZxypPsYV4MIFa4jex9tAUSpQfwu9_on-4zBIechP39mYbdm_lTQr-bAoI12XWWUJmEVtAiKJERLtH5o6YxOb16NzCNQBH5Q1ciB9FrrE81g3BEVapEAy-4cPZ4yGIBaTRHk7ujDBtRxHFSFlemGK7hlwhe6vg7rUHmyj7gwBFy34OKL_RbZ2fhFbOTHP4EG6oMo8rnD-MRB36xSjuVcC3tA-Qy3yDIPPAWHhWPij1weGOEtmkteCwR5hJfO7bFZKptSJl0BVB19t4r_o_NOnBKY1PcMP1ykG4FkDRbEeBq-kUGtNYurjCy6G6zXoMVA9mTHnD_ekOeh2_Vm5to1Ys5uxm2A3ApRbadD-2x5kV1etU_Qimkm157yeFbYrfExwILt1y5O6ss-MOOouPPu2-u4n2uzQUBiAiMkuWsa0g8L0A1uRGIswBzpwkrN8Yo8JqKX5C0q3o_YlxfZ6T20zHBMfhvtpDZ9qRXSGf3TyYvaxjrbaDs01pOvfkiWSImjNhiwKwEsletcq4DorxVZMP1sBfI35kWE4v50SoOEZdQp1kmq2fr9BR7YmYdvmYd8znA8xe8jgHgtxIulHcJnDStLnQaJsXeopqpqlC4wfbZSuiAKR2NsOAlCKHEI5fWyCMKDOX_8AR9mMazgII02ts74sCZXk-ZCWC2dcSVUUiyZc8sYCZ46wraw0tMEEwKksAjevEAM1H2tqtyvS-WmWsDJmQsy5JgiL9gIwu2_TKVrg144WjOvMqWuaNFOEGhO54FHGbpRoSg2JLJVFx9IqcqHYu72AqjGjMr0Dn13xcskDtvMyhX0y09R3NPjhc0XjcFRpSh9iXp_6jj9hwwxQtJ3ZUn2em2jYQ.HGMBtT3_iCnyk2SaLlE7hw",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcxMDQwMzg5N30..7DClY4BgybLio5RV.yuaJo0bq-yNAussD7YKNkgEKEokaYoV6wmEBRwF8VjP4vVBs7yX6-iBAVNlsygIGGpcLMDO9kxOmzUREIROxf1xNlu4zI4D4tB-iHO6RfyDT7n8XmsIpW_V5LnKCBmlcTf9YuvPPKU_tZYmX7QuHIO_gCw9A1C74ZLCI1RqLXUaxiLutDPFJ5KBeDvE_Filwt8BjICWjp6pYSyI639a8WH7HmlrhO4Ds3IbKGNBLtB9V1VyGx63AFuxAdYLBEyII-hRasHOBG-gZTQY8qX8O9bE1kkdWA5Bs_Bp5PsR4i0gcNh93abPCiQbMOjuqEqI5a_J0dqtZOxri4VxhvhO_1DlrZvOTVhpKiIWai7ewa0tU4YSYjHWKIClSxQ8iXzzsPeN-8Hglsmdd9wbV5bW_0nS71JhYGHJlOKZNPT-jjimvAHF1bvcmY5qhzhV9RnExFvY9QveHlMtaieNktUquDHE9Kf8Z_tNYexk-wmND_Pq0HFP7e4xxfwViqiNOoDVPHrbChdzU0VSXyZjIEqifbXV_ewyCKOFpUcBDGB7pw77xdjD_-AKITw1EKxZOGCuGrICM0-CtTOHlYl68MWKhCTuh3ctDDLX10X9Oa329jqg81kz5-XJ9ih1GRVVPyswZPt7OCtPPgj6IUh7ujxrlnrUWYLT4Pw5Qicpn0JLT-nKjRFv28JNsbo0okeetZtoF8oPW3Otgn27L4uxKWDadhkHI8gOkh7YdEHhZvSV8PClmccYrd6LJA2sz1RMZ6X6izHI3VkqG6JG0XUBZ1Kg_u-4YHUgdkuPe_hXxdyR5VpUwudT5xrLdIparurYeeFj4ArVvkYeBMGFqZaU5Xml25cLPgjf2YFiuxHF-4F9DGpxCRYbZtV02Z0ePhazBrxuQpuRbCuTKxm_sfunqLxaNsrBC5jFr1chnDi3_hyQT-cTOqga2heyvQIaLjseup3QT3Fex-CfAk7eZcDZcuQINr3FIFwWlXs35KwHeziO6HVSe3_s1fLeaf5ACGDHOlQRP12pCoj4jZD__md-3sNjUzhTqq158Xtqsa4KpySr6lt6lmvtDii79ZFL4RsvHLbA_1ci-MYmMW5dZHXBH3ArmDGvRou7JjLiS65pyhCDmzr2CkiD_bxYLcq2t_lWC6o84BigOda905otsIS5QSCF3buU5S5OA9JzXMrKChK57LnH28hvUejYgyEwn-1abWl7KxSPkeKBJkxpo0EHO-bFaBxr7gX3iXctaCgLTTw2ykP94oYn86gyFlvI.wxosLfyNzcFJlME04GRG4A"
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" : 1709639288
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiSlVzc1l6aVQtelRnbXRScGVtQktrZyIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoidWRfYlFoYXZ0SWhEQTE0TzF2REVQZ0R1N1JUWkFIaEwiLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcwOTYzODk4MywiZXhwIjoxNzA5NjM5Mjg4LCJpYXQiOjE3MDk2Mzg5ODgsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiYTJjYjNjNThkMWJlMWZhOCJ9.DAUK1uVmmQd0MnrP5xUCaQziwTrmnFyEhhqS3BXPycUZwZEK9-vz1q3oCc7IbkKiPOyxp3Et0kJgpr2w4JY35g"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiU0ltNmF3enZQWllGWXh4WThvR0E2ZyIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsIm5vbmNlIjoiQzNNWFZndXB0RUNTc2hQSXB4Sm1GMlVIMnMzc3huUkoiLCJhdWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZVJlemVwdEFwcCIsImF1dGhfdGltZSI6MTcxMDQwMzU5MiwiZXhwIjoxNzEwNDAzODk3LCJpYXQiOjE3MTA0MDM1OTcsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwianRpIjoiNWJjNzI4NzJmMTM0NjJiOCJ9.CzNC7HCKtpMx8lL4YswmWsLntTXH6N0iWeJVerx5Nfyp02_ftIQGMRQ5uuITOKpSSRAAjqtk-JB_OG6rLJOlhw"
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" : "JUssYziT-zTgmtRpemBKkg",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
+}

Body

{
+  "at_hash" : "SIm6awzvPZYFYxxY8oGA6g",
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", @@ -1372,27 +1372,27 @@ "iss" : "https://idp.dev.gematik.solutions", "given_name" : "Darius Michael Brian Ubbo", "display_name" : "Darius Michael Brian Ubbo Bödefeld", - "nonce" : "ud_bQhavtIhDA14O1vDEPgDu7RTZAHhL",
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" : "C3MXVguptECSshPIpxJmF2UH2s3sxnRJ",
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" : 1709638983,
Timestamp der Authentisierung
- "exp" : 1709639288,
Gültigkeit des Tokens
- "iat" : 1709638988,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1710403592,
Timestamp der Authentisierung
+ "exp" : 1710403897,
Gültigkeit des Tokens
+ "iat" : 1710403597,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld", - "jti" : "a2cb3c58d1be1fa8"
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" : "5bc72872f13462b8"
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" : 1709639288
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTcwOTYzODk4MywiZXhwIjoxNzA5NjM5Mjg4LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcwOTYzODk4OCwianRpIjoiY2MzMWM1YmQ4MDEzYjc1ZSJ9.jS23ZPUL26rxmBcyHcwwxAjJMNy21t9vcZCtdzSSeY1G09GM-Ksq_E4Fgqy_0npPtpHYwD63hpTiTE_pOXNRCQ"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwiZGlzcGxheV9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyBCw7ZkZWZlbGQiLCJjbGllbnRfaWQiOiJlUmV6ZXB0QXBwIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcxMDQwMzU5MiwiZXhwIjoxNzEwNDAzODk3LCJmYW1pbHlfbmFtZSI6IkLDtmRlZmVsZCIsImlhdCI6MTcxMDQwMzU5NywianRpIjoiZDk1ZTM1NTAyOWMxMWM3MyJ9.oR5jXUe8dshBSzBrafYHb4k5f-VWjtpEu8FbEdeig8lU8JZgZmlWDvwfosl7H5nVNVSe70AqT9cya8QnRDCxhQ"
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", @@ -1405,13 +1405,13 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "eRezeptApp", - "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" : 1709638983,
Timestamp der Authentisierung
- "exp" : 1709639288,
Gültigkeit des Tokens
+ "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" : 1710403592,
Timestamp der Authentisierung
+ "exp" : 1710403897,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1709638988,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "cc31c5bd8013b75e"
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 Tue, 5 Mar 2024 12:43:11 +0100
\ 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 aab27d7..8abf451 100644 --- a/idp-client/pom.xml +++ b/idp-client/pom.xml @@ -7,13 +7,13 @@ de.gematik.idp idp-global - 27.0.1 + 27.0.2 ../pom.xml de.gematik.idp idp-client - 27.0.1 + 27.0.2 jar 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 a286484..5f50d0c 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 @@ -273,13 +273,12 @@ public IdpTokenResult login( } public AuthorizationCodeResult login( - final PkiIdentity smcbIdentity, + final X509Certificate certificate, + final UnaryOperator contentSigner, final String codeChallenge, final String state, final String nonce) { - final X509Certificate certificate = smcbIdentity.getCertificate(); - LOGGER.debug( "Performing Authorization with remote-URL '{}'", discoveryDocumentResponse.getAuthorizationEndpoint()); @@ -316,7 +315,7 @@ public AuthorizationCodeResult login( .getChallenge() .getRawString(), certificate, - getContentSigner(smcbIdentity)))) + contentSigner))) .build(), beforeAuthenticationMapper, afterAuthenticationCallback)); @@ -329,6 +328,16 @@ public AuthorizationCodeResult login( .build(); } + public AuthorizationCodeResult login( + final PkiIdentity smcbIdentity, + final String codeChallenge, + final String state, + final String nonce) { + + return login( + smcbIdentity.getCertificate(), getContentSigner(smcbIdentity), codeChallenge, state, nonce); + } + public IdpTokenResult loginWithSsoToken(final IdpJwe ssoToken) { assertThatClientIsInitialized(); diff --git a/idp-commons/pom.xml b/idp-commons/pom.xml index d070a3f..abdab91 100644 --- a/idp-commons/pom.xml +++ b/idp-commons/pom.xml @@ -6,12 +6,12 @@ de.gematik.idp idp-global - 27.0.1 + 27.0.2 ../pom.xml idp-commons - 27.0.1 + 27.0.2 @@ -66,7 +66,7 @@ org.bitbucket.b_c jose4j - 0.9.5 + 0.9.6 diff --git a/idp-crypto/pom.xml b/idp-crypto/pom.xml index 45f1340..0a7cead 100644 --- a/idp-crypto/pom.xml +++ b/idp-crypto/pom.xml @@ -6,12 +6,12 @@ de.gematik.idp idp-global - 27.0.1 + 27.0.2 ../pom.xml idp-crypto - 27.0.1 + 27.0.2 diff --git a/idp-report/pom.xml b/idp-report/pom.xml index 946dc99..d7373c1 100644 --- a/idp-report/pom.xml +++ b/idp-report/pom.xml @@ -6,7 +6,7 @@ de.gematik.idp idp-global - 27.0.1 + 27.0.2 idp-report diff --git a/idp-sektoral/pom.xml b/idp-sektoral/pom.xml index c648447..8d01eff 100644 --- a/idp-sektoral/pom.xml +++ b/idp-sektoral/pom.xml @@ -7,12 +7,12 @@ de.gematik.idp idp-global - 27.0.1 + 27.0.2 ../pom.xml idp-sektoral - 27.0.1 + 27.0.2 jar diff --git a/idp-server/pom.xml b/idp-server/pom.xml index 5aacc3e..cd9d534 100644 --- a/idp-server/pom.xml +++ b/idp-server/pom.xml @@ -7,18 +7,18 @@ de.gematik.idp idp-global - 27.0.1 + 27.0.2 ../pom.xml idp-server - 27.0.1 + 27.0.2 jar undefined 2.4.0-b180830.0359 - 4.0.4 + 4.0.5 diff --git a/idp-server/src/test/java/de/gematik/idp/server/EpaClientTest.java b/idp-server/src/test/java/de/gematik/idp/server/EpaClientTest.java index 308eabd..c4167d2 100644 --- a/idp-server/src/test/java/de/gematik/idp/server/EpaClientTest.java +++ b/idp-server/src/test/java/de/gematik/idp/server/EpaClientTest.java @@ -21,12 +21,14 @@ import de.gematik.idp.TestConstants; import de.gematik.idp.client.AuthorizationCodeResult; import de.gematik.idp.client.IdpClient; +import de.gematik.idp.crypto.EcSignerUtility; import de.gematik.idp.crypto.Nonce; import de.gematik.idp.crypto.model.PkiIdentity; import de.gematik.idp.field.ClientUtilities; import de.gematik.idp.tests.PkiKeyResolver; import java.util.HashSet; import java.util.Set; +import java.util.function.UnaryOperator; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -75,4 +77,28 @@ void verifyLogin() { assertThat(authorizationCodeResult.getRedirectUri()).contains("http"); assertThat(authorizationCodeResult.getAuthorizationCode()).isNotEmpty(); } + + @Test + void verifyLoginWithExternalContentSigner() { + final String nonce = Nonce.getNonceAsBase64UrlEncodedString(24); + final String codeChallenge = + ClientUtilities.generateCodeChallenge(ClientUtilities.generateCodeVerifier()); + final String state = "state"; + + final AuthorizationCodeResult authorizationCodeResult = + idpClient.login( + smcbIdentity.getCertificate(), + getContentSigner(smcbIdentity), + codeChallenge, + state, + nonce); + + assertThat(authorizationCodeResult.getState()).isEqualTo(state); + assertThat(authorizationCodeResult.getRedirectUri()).contains("http"); + assertThat(authorizationCodeResult.getAuthorizationCode()).isNotEmpty(); + } + + private static UnaryOperator getContentSigner(final PkiIdentity pkiIdentityEcc) { + return tbsData -> EcSignerUtility.createEcSignature(tbsData, pkiIdentityEcc.getPrivateKey()); + } } diff --git a/idp-test/pom.xml b/idp-test/pom.xml index bb08f42..03e8bb4 100644 --- a/idp-test/pom.xml +++ b/idp-test/pom.xml @@ -6,11 +6,11 @@ de.gematik.idp idp-global - 27.0.1 + 27.0.2 ../pom.xml idp-test - 27.0.1 + 27.0.2 diff --git a/idp-testsuite/pom.xml b/idp-testsuite/pom.xml index 51acc9f..835eabe 100644 --- a/idp-testsuite/pom.xml +++ b/idp-testsuite/pom.xml @@ -7,12 +7,12 @@ de.gematik.idp idp-global - 27.0.1 + 27.0.2 ../pom.xml idp-testsuite - 27.0.1 + 27.0.2 jar diff --git a/pom.xml b/pom.xml index ce24faf..fc3c406 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ de.gematik.idp idp-global - 27.0.1 + 27.0.2 pom IDP @@ -96,7 +96,7 @@ 2.1.1 2.2.224 20240303 - 2.23.0 + 2.23.1 3.4.2 5.4.0 3.2.4 @@ -115,7 +115,7 @@ 3.1.1 3.4.1 3.2.5 - 3.1.0 + 3.2.0 3.3.0 3.6.3 3.5.0