From ed6b2b462bdbca7de9e9253ccf6bdced04eb5f69 Mon Sep 17 00:00:00 2001 From: Gematik Date: Mon, 28 Oct 2024 16:37:22 +0100 Subject: [PATCH] v29.0.4 --- README.md | 2 +- ReleaseNotes.md | 4 + doc/tokenFlowEgk.html | 376 +++++------ doc/tokenFlowPs.html | 358 +++++----- doc/tokenFlowSso.html | 632 +++++++++--------- idp-client/pom.xml | 4 +- idp-commons/pom.xml | 4 +- .../de/gematik/idp/token/IdpJoseObject.java | 4 + .../gematik/idp/token/JsonWebTokenTest.java | 16 + idp-crypto/pom.xml | 4 +- idp-report/pom.xml | 2 +- idp-sektoral/pom.xml | 4 +- idp-server/pom.xml | 4 +- idp-test/pom.xml | 4 +- idp-testsuite/pom.xml | 2 +- pom.xml | 2 +- 16 files changed, 723 insertions(+), 699 deletions(-) diff --git a/README.md b/README.md index f879783..f39f408 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=29.0.3 +$ export appVersion=29.0.4 $ 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 4c69f48..727667e 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,3 +1,7 @@ +# Release 29.0.4 + +- add method isExpired() to IdpJoseObject + # Release 29.0.3 - fix missing claim ORGANIZATION_IK in configuration diff --git a/doc/tokenFlowEgk.html b/doc/tokenFlowEgk.html index 0e7b073..9d850c2 100644 --- a/doc/tokenFlowEgk.html +++ b/doc/tokenFlowEgk.html @@ -511,55 +511,55 @@ color: #0fc5d9 !important; }
Gerendert mit https://github.com/gematik/app-RbelLogger
Created Tue, 22 Oct 2024 15:46:34 +0200
Created Mon, 28 Oct 2024 16:02:03 +0100

1 GET http://localhost:41367/.well-known/openid-configuration127.0.0.1:-1localhost:40411

1 GET http://localhost:37633/.well-known/openid-configuration127.0.0.1:-1localhost:40419

REQ Headers

Connection
Upgrade, HTTP2-Settings
Nicht verpflichtend
Nicht verpflichtend
Content-Length
0
Host
localhost:40411
Nicht verpflichtend
Nicht verpflichtend
Upgrade
h2c
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
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

REQ Body Empty

REQ Headers

Connection
Upgrade, HTTP2-Settings
Nicht verpflichtend
Nicht verpflichtend
Content-Length
0
Host
localhost:40419
Nicht verpflichtend
Nicht verpflichtend
Upgrade
h2c
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
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

REQ Body Empty

2200localhost:40411127.0.0.1:-1

2200localhost:40419127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Content-Length
3118
Date
Tue, 22 Oct 2024 13:46:19 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/jwt;charset=UTF-8

RES Body

JWT

Headers
{
+Date: Mon, 28 Oct 2024 15:01:47 GMT
+Content-Type: application/jwt;charset=UTF-8

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Content-Length
3118
Date
Mon, 28 Oct 2024 15:01:47 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

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

Body

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

Signature

Was verified using Key puk_disc_sig

Signature

Was verified using Key puk_disc_sig

3 GET http://localhost:41367/idpSig/jwk.json127.0.0.1:-1localhost:40411

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

3 GET http://localhost:37633/idpSig/jwk.json127.0.0.1:-1localhost:40419

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

4200localhost:40411127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.3
Date
Tue, 22 Oct 2024 13:46:24 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:40419127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.4
Date
Mon, 28 Oct 2024 15:01: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
@@ -593,49 +593,49 @@ "crv" : "BP-256", "x" : "llCsbU1bEgHeTP_pnbOiOWQmo3e8ldncRmcnoldNfDk",
X-Koordinate des öffentlichen Punkts des Schlüssels
"y" : "ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcY"
Y-Koordinate des öffentlichen Punkts des Schlüssels
-}

5 GET http://localhost:41367/idpEnc/jwk.json127.0.0.1:-1localhost:40411

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

5 GET http://localhost:37633/idpEnc/jwk.json127.0.0.1:-1localhost:40419

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

6200localhost:40411127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.3
Date
Tue, 22 Oct 2024 13:46:24 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:40419127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.4
Date
Mon, 28 Oct 2024 15:01:52 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:41367/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=KK4iVz96XCsWXoYESvCUUMuY8z9HPT3U&code_challenge=uz_mmbvaXGgkxWz3H4UdR1l3RPq_6ko7O9hv6GufRaI&code_challenge_method=S256&scope=e-rezept+openid&nonce=18ObzxfsjC-FKox-L96K50Kum0b33weM127.0.0.1:-1localhost:40411

7 GET http://localhost:37633/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=VCQ1LuC6DVbLU6gdd7llDA5JLO2k9b_k&code_challenge=p5ServxzPPXl3VL62gFNW_6JgnLGUtbHc1xXk15BYKg&code_challenge_method=S256&scope=openid+e-rezept&nonce=9ivU09PPC62LczVfdhSQE1QpR8TkGA0L127.0.0.1:-1localhost:40419

REQ Headers

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

REQ Body Empty

REQ Headers

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

REQ Body Empty

8200localhost:40411127.0.0.1:-1

8200localhost:40419127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Date
Tue, 22 Oct 2024 13:46:25 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQwNDExIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJvbE9IenJCU0tlbm54NVFKNXdaYkItdGNUYzNIem1aRC03Wk05aktJUnhVIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IjE4T2J6eGZzakMtRktveC1MOTZLNTBLdW0wYjMzd2VNIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJLSzRpVno5NlhDc1dYb1lFU3ZDVVVNdVk4ejlIUFQzVSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3Mjk2MDQ5NjUsImlhdCI6MTcyOTYwNDc4NSwiY29kZV9jaGFsbGVuZ2UiOiJ1el9tbWJ2YVhHZ2t4V3ozSDRVZFIxbDNSUHFfNmtvN085aHY2R3VmUmFJIiwianRpIjoiMDY4ODZmMzhjYzBiMDE2YyJ9.f_tWfXVKhN7GFQwg8jj_UGpMQPV6UTPHvB9a59Gwbs2e61-i5CS2UewSeCZK2Osgx5rIl4KKvlW6d80kKz-bdA",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Mon, 28 Oct 2024 15:01:54 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Date
Mon, 28 Oct 2024 15:01:54 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQwNDE5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJ5eE9WaFBTVjh5dlJzMF9STk11TmFYVWotYkRWWnJoNGk2aTNDR1RPNnI0IiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IjlpdlUwOVBQQzYyTGN6VmZkaFNRRTFRcFI4VGtHQTBMIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJWQ1ExTHVDNkRWYkxVNmdkZDdsbERBNUpMTzJrOWJfayIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MzAxMjc4OTQsImlhdCI6MTczMDEyNzcxNCwiY29kZV9jaGFsbGVuZ2UiOiJwNVNlcnZ4elBQWGwzVkw2MmdGTldfNkpnbkxHVXRiSGMxeFhrMTVCWUtnIiwianRpIjoiOTk4ZTk4ZjMyOTVlZjUxNCJ9.MG0OITda05Xb3sjB4TNaR33d1mxqfhiekfhg6J3co9dMS5Y-AYyV337co5BKuOX3TyMcDwPgF4SsMuMRxz_R6w",
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.", @@ -651,137 +651,137 @@ "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:40411",
+}

Body

{
+  "iss" : "http://localhost:40419",
   "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" : "olOHzrBSKennx5QJ5wZbB-tcTc3HzmZD-7ZM9jKIRxU",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "yxOVhPSV8yvRs0_RNMuNaXUj-bDVZrh4i6i3CGTO6r4",
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" : "18ObzxfsjC-FKox-L96K50Kum0b33weM",
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" : "9ivU09PPC62LczVfdhSQE1QpR8TkGA0L",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "KK4iVz96XCsWXoYESvCUUMuY8z9HPT3U",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "VCQ1LuC6DVbLU6gdd7llDA5JLO2k9b_k",
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" : 1729604965,
Gültigkeit des Tokens
- "iat" : 1729604785,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "uz_mmbvaXGgkxWz3H4UdR1l3RPq_6ko7O9hv6GufRaI",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "06886f38cc0b016c"
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:41367/sign_response127.0.0.1:-1localhost:40411

9 POST http://localhost:37633/sign_response127.0.0.1:-1localhost:40419

REQ Headers

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

REQ Body

namevalue
signed_challenge

JWE

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

Headers
{
+content-length: 3978

REQ Headers

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

REQ Body

namevalue
signed_challenge

JWE

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

Headers
{
   "alg" : "ECDH-ES",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1729604965,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
+ "exp" : 1730127894,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
"epk" : { "kty" : "EC", - "x" : "kSD61pK4jkxAz4BDB6s0DtUyXG04bHfjVTxkB4UPB3Y",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "IWV-yaE3Q36DsMUgDqXdjyfZlR-DOaR8rTg05SaCH-I",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "mykGblKxzvzk-oKOsY5n-GCQUOPby-NyKnmLrIYvQZs",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "GJMvBeDk2TW9vjtqE5C-M1WvIcjws6mrKiRGx0fooH8",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body

{
-  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pRd05ERXhJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKdmJFOUllbkpDVTB0bGJtNTROVkZLTlhkYVlrSXRkR05VWXpOSWVtMWFSQzAzV2swNWFrdEpVbmhWSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklqRTRUMko2ZUdaemFrTXRSa3R2ZUMxTU9UWkxOVEJMZFcwd1lqTXpkMlZOSWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pWlMxeVpYcGxjSFFnYjNCbGJtbGtJaXdpYzNSaGRHVWlPaUpMU3pScFZubzVObGhEYzFkWWIxbEZVM1pEVlZWTmRWazRlamxJVUZRelZTSXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM01qazJNRFE1TmpVc0ltbGhkQ0k2TVRjeU9UWXdORGM0TlN3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lKMWVsOXRiV0oyWVZoSFoydDRWM296U0RSVlpGSXhiRE5TVUhGZk5tdHZOMDg1YUhZMlIzVm1VbUZKSWl3aWFuUnBJam9pTURZNE9EWm1NemhqWXpCaU1ERTJZeUo5LmZfdFdmWFZLaE43R0ZRd2c4ampfVUdwTVFQVjZVVFBIdkI5YTU5R3diczJlNjEtaTVDUzJVZXdTZUNaSzJPc2d4NXJJbDRLS3ZsVzZkODBrS3otYmRBIn0.XYijTsdyOnSc1N1ksibrmmLIQXmgYecLUQ8i5wUcz_Jan73CejZqAJM2El1wIbuAqmK7Vs25DP7n7JjeE8_cmw"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pRd05ERTVJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKNWVFOVdhRkJUVmpoNWRsSnpNRjlTVGsxMVRtRllWV290WWtSV1duSm9OR2syYVRORFIxUlBObkkwSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklqbHBkbFV3T1ZCUVF6WXlUR042Vm1aa2FGTlJSVEZSY0ZJNFZHdEhRVEJNSWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pYjNCbGJtbGtJR1V0Y21WNlpYQjBJaXdpYzNSaGRHVWlPaUpXUTFFeFRIVkROa1JXWWt4Vk5tZGtaRGRzYkVSQk5VcE1UekpyT1dKZmF5SXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM016QXhNamM0T1RRc0ltbGhkQ0k2TVRjek1ERXlOemN4TkN3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lKd05WTmxjblo0ZWxCUVdHd3pWa3cyTW1kR1RsZGZOa3BuYmt4SFZYUmlTR014ZUZock1UVkNXVXRuSWl3aWFuUnBJam9pT1RrNFpUazRaak15T1RWbFpqVXhOQ0o5Lk1HME9JVGRhMDVYYjNzakI0VE5hUjMzZDFteHFmaGlla2ZoZzZKM2NvOWRNUzVZLUFZeVYzMzdjbzVCS3VPWDNUeU1jRHdQZ0Y0U3NNdU1SeHpfUjZ3In0.h2N6a1_ys4rHTZ8tmgMr06AtgbKKnz3AA_9vzPnKUNUqqlRWv3uRcgSH4guro477Vr3SVJcehOBzKQuqBadjBg"
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

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQwNDExIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJvbE9IenJCU0tlbm54NVFKNXdaYkItdGNUYzNIem1aRC03Wk05aktJUnhVIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IjE4T2J6eGZzakMtRktveC1MOTZLNTBLdW0wYjMzd2VNIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJLSzRpVno5NlhDc1dYb1lFU3ZDVVVNdVk4ejlIUFQzVSIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3Mjk2MDQ5NjUsImlhdCI6MTcyOTYwNDc4NSwiY29kZV9jaGFsbGVuZ2UiOiJ1el9tbWJ2YVhHZ2t4V3ozSDRVZFIxbDNSUHFfNmtvN085aHY2R3VmUmFJIiwianRpIjoiMDY4ODZmMzhjYzBiMDE2YyJ9.f_tWfXVKhN7GFQwg8jj_UGpMQPV6UTPHvB9a59Gwbs2e61-i5CS2UewSeCZK2Osgx5rIl4KKvlW6d80kKz-bdA"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQwNDE5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJ5eE9WaFBTVjh5dlJzMF9STk11TmFYVWotYkRWWnJoNGk2aTNDR1RPNnI0IiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IjlpdlUwOVBQQzYyTGN6VmZkaFNRRTFRcFI4VGtHQTBMIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJWQ1ExTHVDNkRWYkxVNmdkZDdsbERBNUpMTzJrOWJfayIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MzAxMjc4OTQsImlhdCI6MTczMDEyNzcxNCwiY29kZV9jaGFsbGVuZ2UiOiJwNVNlcnZ4elBQWGwzVkw2MmdGTldfNkpnbkxHVXRiSGMxeFhrMTVCWUtnIiwianRpIjoiOTk4ZTk4ZjMyOTVlZjUxNCJ9.MG0OITda05Xb3sjB4TNaR33d1mxqfhiekfhg6J3co9dMS5Y-AYyV337co5BKuOX3TyMcDwPgF4SsMuMRxz_R6w"
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:40411",
+}

Body

{
+  "iss" : "http://localhost:40419",
   "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" : "olOHzrBSKennx5QJ5wZbB-tcTc3HzmZD-7ZM9jKIRxU",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "yxOVhPSV8yvRs0_RNMuNaXUj-bDVZrh4i6i3CGTO6r4",
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" : "18ObzxfsjC-FKox-L96K50Kum0b33weM",
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" : "9ivU09PPC62LczVfdhSQE1QpR8TkGA0L",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "KK4iVz96XCsWXoYESvCUUMuY8z9HPT3U",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "VCQ1LuC6DVbLU6gdd7llDA5JLO2k9b_k",
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" : 1729604965,
Gültigkeit des Tokens
- "iat" : 1729604785,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "uz_mmbvaXGgkxWz3H4UdR1l3RPq_6ko7O9hv6GufRaI",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "06886f38cc0b016c"
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:40411127.0.0.1:-1

10302localhost:40419127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Content-Length
0
Date
Tue, 22 Oct 2024 13:46:27 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=KK4iVz96XCsWXoYESvCUUMuY8z9HPT3U
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Mon, 28 Oct 2024 15:01:56 GMT
+Location: http://redirect.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyNzc3Nn0..RWTNEBbjngSwo2q5.yojxPthupyiii1_q7gydw2IKrTbCvmTyW97avaTWQT30dPgorvsojnpmJy7VEKTRb6ct0oKi7h2tZbDAYSzSw0wHpDlXyV-gv8BbLcPRP3Zi_xpRW8ymg9JXuflCuwS0e1lmIDhNpHKFyq6pcbeQYvmFunUPUogD5_hVpquopvMsnAHnYHbqY8u6Eoteg5412Z4SWPPHvcY_LgoiCx7sV18nFE8NWQLllAYau2ntk9nyW-rZm4xr5Gi5fAw8OZCn3qz27TtnK1Vspll47pQEbL6xFsEBahoFTX1H2pICF7MQPnFBFiVGr3-RxIsuu4JIYIRV9JcwMfQaTT-O7ASxEsE0CDLa6uQ9CFwu7HUwxPdz0XUKF06NfyfIZgifteT3T-upp2VKIpvZeBHm-7yXDP3HOzC2c2Pvqn1jJ9BrUTQ2AaPSX2rhRLvAxli_xHr92aXKx72Hail990kdhFQsnH5rxKB-sqaWGsxMVOHCqQJNS0OfL7zq6cq-h6vrPDKKXSUdxafmWT8GeDZlO6WUFbKXahl5XWWyAgKww3VgHXddnYvsZZBZIzX_km8rhcHjGwIZmoenWnuBi8mIO0s1Vl4OtNkSME8xPX3tPuMwz6ezdbs0HVrLqvKSAoKhLNXDQRFKTeQNCMYr7PxCZ-onzcoI9_CaAtW-jxjKNNEIpCFcCGMrVRIB7ttAylJ8Jo9S4ffieIgqjobVDX_RYHvYvqfSKwYLpBcpQZzkURJSbpjAEqcfTx9jGHXT-VeMU0d3ZEwy8UQY-jQeE_Lsn1D7x_HMIHsrap4-qq7HOTXoHvHC6xJfCi7mYOc5obnLWeq5AYhQfGQ2EAHOUWUoQUuUHYk1nuD3fugWfZJzPIy_S5qwfngZRphXv3pWPnvVjEL_2KjXpWHrmh9Fn32pboj0R84KENSQLyOgQg6vX5Xs1aLj_xyjJpC9g3ny31No8IqCPGqISykgKQYV-nWIWB6XAPn2dDAFCXi6S1GK-VN0EfxxaKnpl7hEWD5VCRuahU-z5Xz96qbvLUSZiL-dCKWeo75rEuvPYQP2jw_JVm9Mnr3tNWB4cd1aNtplR4mQ0sjUAdyjh1zs2zDn9jk3cQD8ZtOfyhGclRdYxaBoJGJDTsgQtVeQGNZ0qK7DQ_9E5gnPqDZq7EDIB_-60Avn9ds8g3iSP5vcioNU8xHHiWwKMgr181tV6XUt0NPtJDh0rCHW_Z9b8p_YM6e00ua4S-rCHJ2EJeNFz4oM6Npyki9ACSxbxMRbOYAgKQwLqD3MrdTS36-j9u6q7bx5gu02q3IOrwNFktB8ULa3J7wrOkc2w5_Qy5wqHnhoflRKauRlsUmzm9ZIsF8KrKj6jBBhE-NL3IiqpMZxkDXE1tG2AwKoEWNRvAa7CLDNkcGCIS6qO2MdZ_fhYPXGXF60i2I_y_tg38r0Rc2K9NdND-GVFWKECaheI9vjSJdo-DfgwtFEZOMu.lfjBMvIzIsgME12XIn1W6g&ssotoken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDE3MDkxNn0..l1FmiTF7GLs0_i8I.kIzQ0EYOjf8nJ69vchU_su5uvy9XhZLLzjSf17Bii0gXMkyQYUvErcZr9j7wxy0aG57WNm6ZmcnCbHlDGxPnD7f9V0nB_F7368W69M3HBaQAgRP2I7AUGWYf2hIDJYvyqrkNa4uo90jN6xIPnJ30z8843otAhfq1zbK2yxmpP-fWJzM12V3G_AJtXa9M5c5f5XOzK26308T-Y63cbc3lg5kpuejgcvCb6nQYr-QQmhQ067g5wghjc3yDsLISJWGbmT_URA4R4QjtCDfTsiIJpMyohK6nOZtb5k5hg08CHqSrS6YbrxoKvvNCeQqTT2_OZUcKczijVuxfZvyPVsD7A1fc43GrdTHMXmtX6kE7sOIKZ6FVx86rusleU50OvGyxWQYVo4pl09ngCmiyxqnRQCwMFSQBYYvT-8Rq6zNjY8w7pmvWJjr2nzy8E3m3kVhXbaCF7iP0yFggqc-8DpXWG21l38_lOQlike9LBxJfd4ToTh9TjT9-bKl662DTDlUjjZPjpNdGyXaq8z_yEFmD5rHYTQltNHwhD9Al16HrHholw1BzU5Wi5XMB8UBzgmQOy2yhknFDmGCtWQ7nRmchCMD7oFcJk0MmlXuft31tCs--dU_7jucFwdgU2BX999BIYubK8ne54YbjAi3iXWPtHrvspeyES78isTnh_zpWx388WhfbiTD6ZoLQEYxXZuTJph5igixgugPJXoDEEDBakrdV8H8YsLDuDUtruwPI6S9N7zexh1fOTtTasOut30r7natIjOKUOoor9g48qEQg3THK4QI3Om-_i_De0wMCD-_MuDcYg2rHKKBS_3dfuRlTZhe-__I9UyheGvTjbD8iq9yf_bahqy2wrRAfjYOIrhev4Z1DltV1xH3riVQkMF5QtCXibx2uZVJMESrKHeKeIAzczH5Eqvt9hdjiSdbWt9n8oytu7NUGpNeJ9SMXL04QX718NqIZse8vPUkM5xlHoA8ymCYM4BnIyRTr5fqycnz-sKuHSTCnvvfsKtq33vgUIs0B14yPgs0MEhGsmdaYry434Mi6Bae3HRTKbTWf5sloBaVFfVbhFiZdK1X6jmK3P8lkXc0kEKpuTRjBpxvoW8QV3dH5wFv3PgI1UUR6A7XuOfHTcXaWWQqygJAspVmDGkH0wbS1zQ6ajtDj-L_3tzFE3cosk37xZ0VBdrCEIPGwMrzqJCNQ1Jmxm7qaKbDJysM5vZJpDErivvmVuOsR0VXbILbCKTdExFGq2M4HcliEiqowVlh_7eAI5O9vMKRJkCGq7pJYCB6VpY5yOHTguoOie3xp1JHXsUaRyEZNS1IxtXQzgq0qaQU4xtJTj0GZ01VACP8vgCcjiecSB0FLMCMnmbMmrIBhWbDJWiVonvA4_VmBrAL-j9OTu2kYMBKtDGJy9LhVhmAXpicbEJJCsKm0eOY5mZtcZjcJUjgJSUCW9DHGrSmFTfdNtzSWQc45gxB96hHIDc76zSzYXizgBcn68S5OhyXueSSyFLAPD8QJYejQ3TYKzSgXzznC7VIcJzMXm9m8uk_4eHZ0uH8V35-iAk5NB5jpi9sYnHxjXKh9xQHoqgL8JCtnWaJGwOnLKJrlVkkhyplgpmQbnDoeFhghzGxr3wINd-uUqANFJXu5HaF8FJ6bykhBoVihq8EUKaVRDOit4ByylkBsAStiJgWeFX1dXKDa8MQ0GSZwIfAE2j8Jlw03lZ8gJMoCA-tt15hg3PvdrFUKyTB2Wd9PHcfZDtSYdRHoDDv2IA3IakOCyav-2Wqv1HNeY9GtsFt6BtHJfF_J8sTj_4xM6E_unOGCocxO5E7j4QnLHiimntr1xa5yIkLf5OX3TtYWqJM6rMJHd-r9IT-ZSNtS19Kow5BrgMIuhvYmT8DD8pC974nUzx4dMccG2rM27vx6IUifZe7086di61ml1EbUZ1TcHYU85u4vSEen1OmLHtsb8xMmQJlDC5Ago2fDFxobyc3sRs4Fc1or7o-NKaIWE-vHZWfBjhFc0e30vXh9taZ7ySUfPnSZ6A1xDFnSd9FXCOYvEMsTLDNhnA2WZBrek9Uw-sm6eE3hs7CpI6cv0uB2nOyIKAY4pNWiLrCtxP0_lzSoBVpfhc-GWR9PXbN8cm-5CJDobO9O1n3DfodruKLgGcqyInTEdzM-7ZL3xLx2PRR1M_7O3Zv9iylmJk0fX1FVvbmsAhBoI0TtWD4iRXHoa5hWv1KHtig3ENmyCQPu0k3M_hFg0l1P6NVtIGfqxMHy4KrF07tgVzEkkpBYud6WTNXNnzVVJoKAwhN0am-9LvPTRlTiIToTo_BmMNB7ERNvxKKEGIq9_TzsDMG5dVD2-jNz56JgJwu1X9v629q9mHXtkUueneqx10rPaQgIVtVM9CosWnOIEY6YMNgTWONGoh-Wz91Y2Z2GZKqkXT0Q6zgazFXg_E5WyTvVLAXccZil_C67QaHX0lusy7-MH3eqLtYpp9M3dBGwTU3xaqFYCSNXrfFcvQXc6XuOSjNEUh_Azfimwb915AvZkzXYJDgPAoiuUxOhB4fKJSZXpazMTl1sW8dTIXlIh34scuYsYVffWr4YgM0b8kv6fAM2w4uf9eMTI3H0iQ8jdytklzo5iG71Ey-t58TAxRqj0Il21414xEEZ-Y3_ZEOwvt0H5t2GnUkal3nWFeYwuSuZl_i0FTkQROmg6UIsm0c-MQy4OXmmjzBEdlXmlaVMJI-Jcs0uH5bMfqNzAS0t-q51828l_-yy0_6znXmsU4Rt97fPKhf1t5QA23np7ZBCTqjGRWtl2r4tBtSSRHXcqKD-lvcEgjGz8QmYVQJRruEEr1tiMp98YERiH4esYVDqRgxUTlLNKCIcc6e7JI1LzDiVWWWFTxmrtZKGjyEIpPb0tc_qyuNeG531Vc2tRnMKx5uNBavRnVQ4Co3jsH8XRCiJcolrVX9FhzG4CReuginwRjFksKkUYjCbATcEo3n5rFpBa0AC5LkOTwpEa2_FdZJVrJMLaC6WshTu5uK2M5-9al-IZn-B6YEXG_nKjtyI96UvQrwPWqWoVtRQyHliDe4oDeo4l9ySKJc0LPUjAXHhJFYGB2godRyvYAkl14n0bHVj._q0brK9fb-_C9s3NNezH_Q&state=VCQ1LuC6DVbLU6gdd7llDA5JLO2k9b_k

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Content-Length
0
Date
Mon, 28 Oct 2024 15:01:56 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=VCQ1LuC6DVbLU6gdd7llDA5JLO2k9b_k
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" : 1729604847
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0MDQxMSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiaG9RbExCNDJwV0dmSGFHVmRydXA2ckpkUG9sRGtBQVMiLCJvcmdhbml6YXRpb25JSyI6IjEwOTUwMDk2OSIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiIxOE9ienhmc2pDLUZLb3gtTDk2SzUwS3VtMGIzM3dlTSIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcyOTYwNDc4NywicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiS0s0aVZ6OTZYQ3NXWG9ZRVN2Q1VVTXVZOHo5SFBUM1UiLCJleHAiOjE3Mjk2MDQ4NDcsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzI5NjA0Nzg3LCJjb2RlX2NoYWxsZW5nZSI6InV6X21tYnZhWEdna3hXejNINFVkUjFsM1JQcV82a283TzlodjZHdWZSYUkiLCJqdGkiOiIwMTQ2MTZmYzNjZjBjYjAwIn0.W5ewXczIfiZmRyOIz8ByIXtdPeoOThAqXcmgv_078vplByUjAxMHOxtN6NG3McvViIevWQO5W5SgcLJ8uRleLg"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0MDQxOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiQXQyaE5tcjBxZXhkNkFfVjVKQnBYMW9JNXBUMTY1VVciLCJvcmdhbml6YXRpb25JSyI6IjEwOTUwMDk2OSIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiI5aXZVMDlQUEM2MkxjelZmZGhTUUUxUXBSOFRrR0EwTCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTczMDEyNzcxNiwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiVkNRMUx1QzZEVmJMVTZnZGQ3bGxEQTVKTE8yazliX2siLCJleHAiOjE3MzAxMjc3NzYsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzMwMTI3NzE2LCJjb2RlX2NoYWxsZW5nZSI6InA1U2Vydnh6UFBYbDNWTDYyZ0ZOV182SmduTEdVdGJIYzF4WGsxNUJZS2ciLCJqdGkiOiI5M2VkZDAwNzJkM2Y3OTI2In0.h96_lK7jvB34dAFiibebEozGGrv29nvMt7v94OMNhaiCKVLDeeJaYUSd0DIrb0J9UXhi-je6Gn4Da1aR9D_Niw"
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:40411",
+  "iss" : "http://localhost:40419",
   "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" : "hoQlLB42pWGfHaGVdrup6rJdPolDkAAS",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "At2hNmr0qexd6A_V5JBpX1oI5pT165UW",
server-nonce. Wird verwendet um noise hinzuzufügen.
"organizationIK" : "109500969", "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" : "18ObzxfsjC-FKox-L96K50Kum0b33weM",
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" : "9ivU09PPC62LczVfdhSQE1QpR8TkGA0L",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604787,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127716,
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" : "KK4iVz96XCsWXoYESvCUUMuY8z9HPT3U",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1729604847,
Gültigkeit des Tokens
+ "state" : "VCQ1LuC6DVbLU6gdd7llDA5JLO2k9b_k",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1730127776,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1729604787,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "uz_mmbvaXGgkxWz3H4UdR1l3RPq_6ko7O9hv6GufRaI",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "014616fc3cf0cb00"
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" : 1730127716,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "p5ServxzPPXl3VL62gFNW_6JgnLGUtbHc1xXk15BYKg",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "93edd0072d3f7926"
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" : 1729647987
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3Mjk2MDQ3ODcsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJleHAiOjE3Mjk2NDc5ODcsImlhdCI6MTcyOTYwNDc4NywiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQifQ.BNlsPamnAaGbSkECaAdTfeuSW4QJvf9XIWoOV90E2BIz7AKSHO-kcSMyUyvmtrNdnixzQXHGe1uPBEtuXEQhRg"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MzAxMjc3MTYsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJleHAiOjE3MzAxNzA5MTYsImlhdCI6MTczMDEyNzcxNiwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQifQ.mY1ppSPbX1U1TK_VwmxXyTtKowhZBa7mj3jhii0vcrkuRFyKb4phbqoyuWIXXCTV_42JSwfbfSusduC5CGnYbQ"
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" : 1729604787,
Timestamp der Authentisierung
+ "auth_time" : 1730127716,
Timestamp der Authentisierung
"amr" : [ "mfa", "sc", "pin" ], "idNummer" : "X110411675", "iss" : "https://idp.dev.gematik.solutions", @@ -795,100 +795,100 @@ }, "organizationIK" : "109500969", "given_name" : "Darius Michael Brian Ubbo", - "exp" : 1729647987,
Gültigkeit des Tokens
- "iat" : 1729604787,
Zeitpunkt der Ausstellung des Tokens
+ "exp" : 1730170916,
Gültigkeit des Tokens
+ "iat" : 1730127716,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld" -}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

RES Body Empty

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

RES Body Empty

11 POST http://localhost:41367/token127.0.0.1:-1localhost:40411

11 POST http://localhost:37633/token127.0.0.1:-1localhost:40419

REQ Headers

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

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
{
+content-length: 2163

REQ Headers

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

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" : 1729604847
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0MDQxMSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiaG9RbExCNDJwV0dmSGFHVmRydXA2ckpkUG9sRGtBQVMiLCJvcmdhbml6YXRpb25JSyI6IjEwOTUwMDk2OSIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiIxOE9ienhmc2pDLUZLb3gtTDk2SzUwS3VtMGIzM3dlTSIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcyOTYwNDc4NywicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiS0s0aVZ6OTZYQ3NXWG9ZRVN2Q1VVTXVZOHo5SFBUM1UiLCJleHAiOjE3Mjk2MDQ4NDcsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzI5NjA0Nzg3LCJjb2RlX2NoYWxsZW5nZSI6InV6X21tYnZhWEdna3hXejNINFVkUjFsM1JQcV82a283TzlodjZHdWZSYUkiLCJqdGkiOiIwMTQ2MTZmYzNjZjBjYjAwIn0.W5ewXczIfiZmRyOIz8ByIXtdPeoOThAqXcmgv_078vplByUjAxMHOxtN6NG3McvViIevWQO5W5SgcLJ8uRleLg"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0MDQxOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiQXQyaE5tcjBxZXhkNkFfVjVKQnBYMW9JNXBUMTY1VVciLCJvcmdhbml6YXRpb25JSyI6IjEwOTUwMDk2OSIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiI5aXZVMDlQUEM2MkxjelZmZGhTUUUxUXBSOFRrR0EwTCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTczMDEyNzcxNiwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiVkNRMUx1QzZEVmJMVTZnZGQ3bGxEQTVKTE8yazliX2siLCJleHAiOjE3MzAxMjc3NzYsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzMwMTI3NzE2LCJjb2RlX2NoYWxsZW5nZSI6InA1U2Vydnh6UFBYbDNWTDYyZ0ZOV182SmduTEdVdGJIYzF4WGsxNUJZS2ciLCJqdGkiOiI5M2VkZDAwNzJkM2Y3OTI2In0.h96_lK7jvB34dAFiibebEozGGrv29nvMt7v94OMNhaiCKVLDeeJaYUSd0DIrb0J9UXhi-je6Gn4Da1aR9D_Niw"
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:40411",
+  "iss" : "http://localhost:40419",
   "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" : "hoQlLB42pWGfHaGVdrup6rJdPolDkAAS",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "At2hNmr0qexd6A_V5JBpX1oI5pT165UW",
server-nonce. Wird verwendet um noise hinzuzufügen.
"organizationIK" : "109500969", "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" : "18ObzxfsjC-FKox-L96K50Kum0b33weM",
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" : "9ivU09PPC62LczVfdhSQE1QpR8TkGA0L",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604787,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127716,
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" : "KK4iVz96XCsWXoYESvCUUMuY8z9HPT3U",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1729604847,
Gültigkeit des Tokens
+ "state" : "VCQ1LuC6DVbLU6gdd7llDA5JLO2k9b_k",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1730127776,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1729604787,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "uz_mmbvaXGgkxWz3H4UdR1l3RPq_6ko7O9hv6GufRaI",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "014616fc3cf0cb00"
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" : 1730127716,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "p5ServxzPPXl3VL62gFNW_6JgnLGUtbHc1xXk15BYKg",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "93edd0072d3f7926"
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" : "MjPcnnqnBrTq3ctv-Ot4dV-QHQalXEe4LDGUnpGgBpU",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "EJWb0_V324UepoYnT0UEGNbWctswKbjM6mQwIHmy1mc",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "bsObAOA6FYJH4_oWxKJD7zxRHX0BRLBDRtj5dldYztk",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "LZEHUH_ecf876f_5NJyGEy_AzMNCZYlaaop25u9531U",
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" : "HVKvEycKgvQqPVk8uHLxiwXAl3SvCK8oAhucWm59zL8", - "code_verifier" : "xijzu1AO9NfGIKqVxmtQ5JTANFw2lTUj4Vrq0dFDSCE" -}

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

12200localhost:40419127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Date
Tue, 22 Oct 2024 13:46:31 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Mon, 28 Oct 2024 15:02:00 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Date
Mon, 28 Oct 2024 15:02:00 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcyOTYwNTA5MH0..0KVjSrT2GTdP20MA.STkerxP-Fl_Ql7UW5gVSyPM21qe0u2Buhx_XWLwyI6oqtCDrgZaAkKtO4e4Bc3KCREb7SnQnVB6hQ2CLpz3WaGxRyxKIRtdddTSh07FPk17ANK-tjyOghMzqnr9UQlouSL-_qgN6RrAZxQLEncO2onubQ_N79z_7Eq1hvA1yzi1K4vwxApFsc-ZXitbde5oFqV6m2uyev0ZlLVCt91cYRD-VthlgHaQWzjcgoiyGfp8SIxOUgHqlRe3LGddFvJhAVtH1CR1Yd_9UtJIl2cn0V0HdN-opadkZeB-rgoQGfLx65ENHkeVUZpfZoZjWABNoKF9saEZMFuM_j2ggDYJfYzzGTWsm_zVse05rd_rMC5O4KkSttfvmbtrdlpdMPg48XhCTQwGb91z7ZNg2vUhc89y9-i9xUIBpBU63jXHqBu0kEpnbpJZVkptE6bLCQGUobRHF9sHKz1KobUj_OSEDZoAgEY04YiK3CR_I6LRL9njhKA-q16fjZFADXZ-oOflMu4MjxAuPxxdyHTSGj3O0viRbqcADFFnjsTgyPMlLNrwDxHbWXsiWU15xqfYkahg3B5hc68-ki5aFZ7zMJjycXSPUBG29fZJo7McwiUk_oAoeHydJ3Lsxj8WPc4KA0NqNteVsICWkFshmwH20qAHRaIP4EWlJv8kZ6lyTNR2IiqFRs60kP0GEMpon_CaEMiiiVcFJh7oMnqIW1dyXCKwdkly-_WZWyqcFu0BftbT1kYoWfEkTG-Dr-1H7eq32I2o5vPa7fe0iGG63-bepAlg7e4K7n51CBnVT2aG0icN7HmdxzjXWYltmWnquDpLiwkdTTkVFXqhxbKwD4spF9uzJlnUDhpHznw4uZbOv3yTxVF68iCuiw3pVs7jfnm4X_ifrTovacoSPbpes3Yf-IUgrAn5eaGIVHBXgXa-X6xJbht2lyyfe4D8odtx5V19-k6tpbzV_56mocqYchFmmQmgg7q4GVWTV2Ago29P31Aghufo1m-rTUEszYtgCF5PacAfByttMsYq0i5RV-FMvujfY0FRKbChJiY0tysoRD9Kpyd6wZejIMB01dY81A9MZ04HxzPRpMG-p4QcOij4tAGa6Apy2uWOpSFc1wjmCC2AQ1MKTziPSAQSQNNaA4CtDjZGz8MrJmKTEKMJrfZ7Tm2ZoU11zMXbpnK61xxjRxr8ZfgAUSWuPiZUtUymXqZ0Wht_yN6-qawarQzPBLQ8dGMhDVMZzbRbQ2e0vW7w7GFMlnoYUEq1oxF7QIH-tEeC7rfLNBujX7QwsmyI.hQZVNfh6Hc893PId6_mxhA",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcyOTYwNTA5MH0..4sUcm6cdFYn2ysqi.csz6Nl-xBOqqstlIuxQ9JJ6k57y6-djYk3X86CAzNE8dBRUrDEo9_XQeWrt4_ZtDqVNrOLQiZ5f2p-WvNsJ1Dd1aDwRbpVRdE75ykB65NwlONcP2YqpW2eo64vwHDX-vgVqvzywmOdmxCL2KLZ0MGsKyitP7G2GQgjJXbJ3n-mo7oOLN_YnxBOQdhcxONh_6Da5lyfMTvn1lv01ampKBt_psYnxaMXNivvGoGRo_4hxkk1UrYjms_A57rYLyRE1WgRTUFS_MPfuNn2YkVBhJffqtSZr-Ur1gdr8euPP0PzzZNt__we8n8SRUdeHbrsnuaud0_oy9xysxGBNQy3VjQILMtI9vES_GtfSx4oxSszjwvrL3GA2tEgIy3W_tYoyJ-hSyynKFL5pH-4cmz3J8yyY1doxiP40O2FxpSa8MqLSkdhNK0DWwv3Zb8kiu4D_EI2_k1p0P1pjW48dvaFm-MfrEdl1UqHMPa0t-ARKFl2y7aloVkGH-HdN38asd6hpLIA9exDZmy9rp8IKVG41FZjZeSPby3cbWGR0i83ttTBvhmAdPMhPsJWSJq8SS5n_Lp-bO2NQaYl9WRi_HYPaCQNd36yoVlsamPe0KuJp8bAlXqFnLuHoZBz20Tp_fcfZGXrVf7VUm0wBKSCvEMW0iGldXIBKvTziNT7JMNh3g0IKDnzNRusqh9Z63PfpCJnH6cjWlgcJFZZo6nLbCGR6wFjZ-DTlVvNyJDsYX8KY0JcBBt3KRoDQEuydBgiCgY36B14uox38wo64F4x-75c3fhNbtk7oN71Pcikp4jD90sI60cnOdZfJDF42nqQF3AgV3qWybCJE_dm-Zxj_Vhiuq5azD4xd_1_uWPFzzf0iBqpUkD6nhg7MXv9sL4edR7nv66_XJ4T-bNzohGgyjPKq8dWaou7A9B6Vdq_cIAbI529hzDh0IKJsRHzqyuIlfr8wz8U4z42vVluatwGYY7HZvLY8AsupjwhJ1qf7Hb_7BIJ6ri41_0u0q5oIue79CG-UzJj0fUzbL-VKh0x1oHxXniSisIsJKlLvFcdCI_4HscGt2iKKx2zkMbrDrgNUG1pgjNw0Tn9BqLKsTx3eHw0Ko338QlWOHP1mQ_RkNGOvgHneLdL0ohvcTwhbOc8WBOL40Y-0vfxQMsE5MuzSzG52RL_cyOqGrUIbOm1V0w_hSyyFSP72X3S2DMrrPP9XUcbVo7heeoq3R9pVv9TeYeG0o4B4_Z1-QO81PuHY-U9UDNoNcmwaE0Lgdh-2Y3gfU_-qPWaCxz8kNB-skGS_KxvUWvA3PQuBHd9tqIeLu0mNLE9w.6XjAy2WELr43PnF7_jNYxA"
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyODAyMH0..UOEkrGC5doo8aEAw.xLkCEIPWFKHCbXN3ipuO3f3H70RBX1JpDVhLJqjbJ899uM-Lvor8KjptsOH1_VMPy--3-voiygrrmqYjwxUnhp3IcjAA8yqmSbDRPojuND2C_D_fu7H3PhBhZc0RiJJ7FP8t3RKLPoay6zMZ3RkT95_kNM8oXq1x-8yxvzZJV3Gvh-V2yZMoYG_qgm2HIbbQB_C7prACJrANdYPyYVlxT82Tj0W3Yp0I4z4e00LwGzgpWhDrwa93s_Rz6MYuZBNO4EzovAmslC1oXkltaolMopa_w6FO5iY8AdK2YaG5C_QJCUsaQA_jRPgN-jj8OJ_4PZCGsLS1qxSWqh61lmLBYJU-q_7qQq-S0F8iWqAKIgE15t4tVJBMX0kLk-JsryZnnpmuu0I9yOAffPQVWrF5f3C9cmtbNcK6Ge0wKh2fbVX2IxkpJ3tCOqs_yahkg5KEdLwnY0oz6nI_oWmLFgG-O_2C6Nw2CkMsp5cLD5RKnI7ker22UbYLIiFulgFGMfQsHsz6F24K-QYtCmOo11ah1SRMLfcBumoqlYxApxjAZ1ZsZ3YRERBAG2FQUChbMQxXNal97DI2IZj5AGwZjHoxNF3sHIYz4W7bHYVeHy4gXZKExRRkSDtuHDRwr_VDPMO56iVdROjCrrf9Vp4SHmdgbOZNiwPM8QItU1SjuMyv6Ykv7gAPH9BrXZ6gxFTbtdZQ5ignk195zRNWOwIJSMgrnmtqVXZdykSy4X3MbOKWgtOOhF33ty0tSo_Vgh7QzT1oUmPviSTaH4hrhru7MdxcrF-NKZqObsTWrBJIUxmtO9x2u2QAmniBoav1fYGuGdJLYjg_tBYwlbS6o4pVt987KQnS73axTENLD6rsQal0AFiOkG6NccksbLymw4bsL7RJ9k7sF-wYpaHL5nDDmbkAqhkAwKeI7X2q_sdOSGbwudbhsroyi5HoLNFLflvNuE_8oG4TJmeUt-qlDaODB298V1qS_XdVXrCZEMhsuwgXwXSJfVHfbJcK8steezBQMEcv6cCSWtvvCzg8BnT0Gw9ecj9BTE52pYBMt_W-gUQnObEd6ssxgy-78gjc7Z9XHg1RMDambG1lVpt_9Pnb-Ouubpmz97JoOsvtJvxzR0h6ujfHABgw8ID9fGauigMNhTlsFQ0w_E8S_Ww3Exv7DjLkEtV-LOGHzSj-ST7Zb37SrA9UzPAcZGuRv1EZREu4hmoT_VkKZhJ8yURWGmttVDiPpQUpvyEvuXyEsjlJXkIzL7zVOjEZHCEbLGPBFNV18kuK9cgncSKpY7k.VJArVTBkDzMaszjktuB5dQ",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyODAyMH0..Nr4gFNnwHwLS46zD.ihv00etHI_UNJ3ERDYjBIUDyk06dlNaEigvEMaiMDMUDwLcnEbk2XjPSHSZ_T8e-JS-m8KPEUcDdQywTcXUvIBxcdflOxM9okp03oHD0NpJhvjrSV0--iYp9qc052YGSC4jbZcfDXjFB93ICQtNFyg9elk5I66-Vz4tmwX6reLaKbO8UlaYpBL1ylZjOoVfsk_acgTRYJhyqf6QNbKBgsJx8j4HILQiBIJO7ij4kZ2DxioHxsNQ2mfepwgIBBdmqTnbGH8xmQuMiT_4Q0jNbeqlWYdlLmDEtITeiTXiweSJ6TkC6Dd8kNddAePG80h4LFSua4q8ASli_L2F61pxeoflEqDX0g3hqeZbbqyoShh1Rq4YIYSjxeU7iXLeWZj6avg8Ko-lj_TTG6DFqSoD1GppoSfg_jEeNI0yI3XCKQanJXMy8VKAQwzkN9LS1ge1vEFQ1FY4jTtf2nnoWW0ouKWQjFUuut9yYZdGV9ZdISnWlNuj_icA1C-mlj_mzKZxnCmEFpiptsfnfwpCimWblsm4KfWe2NylooMObjjNC5W4_8Z0GoDLtQnOmX8muozL0JNhdFV2pA3YSlDWiqMsF5dxAKOOnEbmnwLuZTOLCOIx9zH3oG-MmXAt0lwFK42Csm9WnRk5UJai5Plp61cT6Kbpu3nIM97F2CDvYdHRzhxQeAeMYsbXG3scIwoUhbX0aFPMtBpwjqDU6GfzIblEtgnoKpW_Q02MwFD26OJDUYHh7uSAGJHFygRdvc97sBEkmAFuo8A_Yy0g4JBlfR7MnSecSk7xAQ09HuXtqoDrZG7xY0SIvePVFG6Y1A4wzjG6o2bT_Q-ajIjERPc5FbvQb9XZNz0wzxsGpplEvYQkSPPRlGj0dBrQpH9d381ItCDsMi190nnhbfUeDystGLOM3rTsia39i6afWog_86DCTwQME1krNCz3NtubSVOWIFF69xCVMsmDad1gr7ohFTTwKSbLsrV5DVtmDgvu5oREwBkT_S08QDreyxIZVA4XmdtWCb2Pm02wvH98cfOf7fb9hOoFQ4Y1s6PTgddf575YMqjiz5Whzw6NJX2SZdDwdDGUFxDqoYEUVBYgCaI2m7gAnEqgAuL50UQxGUPipZwUmHHstt1xm3m_iA3lg2k4AFFHWmPTod6fysDrE2VJp3ighOPvFfe5K_7gsLSFnKPiXsMi5BIFe-AaJVSxisHTuPL7nOks9okmY-9DIi13UWZ125MautuGAYT7mZycpvvqiHfRypJag4qm8G4a8XGhEGaO4EEmhbEa9AgVJThTi2zt2bC6rBIvlHNlyTwAYrSdrCJ8._lCTXR6zowEOIy64SswSMw"
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" : 1729605090
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoibEJkUjFwSl9uam8weWNZUVo5MlFBdyIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwib3JnYW5pemF0aW9uSUsiOiIxMDk1MDA5NjkiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsImRpc3BsYXlfbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8gQsO2ZGVmZWxkIiwibm9uY2UiOiIxOE9ienhmc2pDLUZLb3gtTDk2SzUwS3VtMGIzM3dlTSIsImF1ZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhenAiOiJlUmV6ZXB0QXBwIiwiYXV0aF90aW1lIjoxNzI5NjA0Nzg3LCJleHAiOjE3Mjk2MDUwOTAsImlhdCI6MTcyOTYwNDc5MCwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQiLCJqdGkiOiJjNzBmMDIyZTZmZDFhYTg3In0.GCc2S4s98YnXJOcl9RLrObBhu-az2YI8_zrAM5qTMKN5bM1cmUg709m4RQxo7gQK6n4yGnj9T-QMRcyXs0A48w"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiR1JBWERzUFpkTWVDZWtqMEtWM25nUSIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwib3JnYW5pemF0aW9uSUsiOiIxMDk1MDA5NjkiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsImRpc3BsYXlfbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8gQsO2ZGVmZWxkIiwibm9uY2UiOiI5aXZVMDlQUEM2MkxjelZmZGhTUUUxUXBSOFRrR0EwTCIsImF1ZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhenAiOiJlUmV6ZXB0QXBwIiwiYXV0aF90aW1lIjoxNzMwMTI3NzE2LCJleHAiOjE3MzAxMjgwMjAsImlhdCI6MTczMDEyNzcyMCwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQiLCJqdGkiOiJhNWE2MWYwMWY5N2M4MDY0In0.k1ElMxD3dDJIVxEw9tlZjh6STpkONNnXc-JENgNgCp0ZR4KC88ZPxHVL15-t4vQqOd-56kdO47gf4h0XrvM6eg"
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" : "lBdR1pJ_njo0ycYQZ92QAw",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
+}

Body

{
+  "at_hash" : "GRAXDsPZdMeCekj0KV3ngQ",
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", @@ -898,27 +898,27 @@ "organizationIK" : "109500969", "given_name" : "Darius Michael Brian Ubbo", "display_name" : "Darius Michael Brian Ubbo Bödefeld", - "nonce" : "18ObzxfsjC-FKox-L96K50Kum0b33weM",
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" : "9ivU09PPC62LczVfdhSQE1QpR8TkGA0L",
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" : 1729604787,
Timestamp der Authentisierung
- "exp" : 1729605090,
Gültigkeit des Tokens
- "iat" : 1729604790,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1730127716,
Timestamp der Authentisierung
+ "exp" : 1730128020,
Gültigkeit des Tokens
+ "iat" : 1730127720,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld", - "jti" : "c70f022e6fd1aa87"
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" : "a5a61f01f97c8064"
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" : 1729605090
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhdWQiOiJodHRwczovL2VycC10ZXN0LnplbnRyYWwuZXJwLnNwbGl0ZG5zLnRpLWRpZW5zdGUuZGUvIiwiYXpwIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwiYXV0aF90aW1lIjoxNzI5NjA0Nzg3LCJleHAiOjE3Mjk2MDUwOTAsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzI5NjA0NzkwLCJqdGkiOiI2OTMzNmZlOGZhZjY1MDUyIn0.X6EfEo0HQqAUEgWdrsFTKFcfPy4kWvGUbUOJQJzKWn9Ul3u0d9foqJCbKnUosuAAKBQRM7DWCu254-LTMLLYBw"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhdWQiOiJodHRwczovL2VycC10ZXN0LnplbnRyYWwuZXJwLnNwbGl0ZG5zLnRpLWRpZW5zdGUuZGUvIiwiYXpwIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0IiwiYXV0aF90aW1lIjoxNzMwMTI3NzE2LCJleHAiOjE3MzAxMjgwMjAsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzMwMTI3NzIwLCJqdGkiOiJlMWExMmRlNWY1MmI1OTExIn0.OO5xJPvU9nOyCuDeCRXf_whiURkNWDRYEOKdhbxyADcQxiWyPBzYeOccD3IcowrFaP0nZU0HbTLhu7RUMKLkJA"
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", @@ -932,13 +932,13 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "eRezeptApp", - "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604787,
Timestamp der Authentisierung
- "exp" : 1729605090,
Gültigkeit des Tokens
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127716,
Timestamp der Authentisierung
+ "exp" : 1730128020,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1729604790,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "69336fe8faf65052"
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, 22 Oct 2024 15:46:34 +0200
\ No newline at end of file + \ No newline at end of file diff --git a/doc/tokenFlowPs.html b/doc/tokenFlowPs.html index b636b0f..140dbfd 100644 --- a/doc/tokenFlowPs.html +++ b/doc/tokenFlowPs.html @@ -511,55 +511,55 @@ color: #0fc5d9 !important; }
Gerendert mit https://github.com/gematik/app-RbelLogger
Created Tue, 22 Oct 2024 15:47:01 +0200
Created Mon, 28 Oct 2024 16:02:35 +0100

31 GET http://localhost:41367/.well-known/openid-configuration127.0.0.1:-1localhost:42231

31 GET http://localhost:37633/.well-known/openid-configuration127.0.0.1:-1localhost:41675

REQ Headers

Connection
Upgrade, HTTP2-Settings
Nicht verpflichtend
Nicht verpflichtend
Content-Length
0
Host
localhost:42231
Nicht verpflichtend
Nicht verpflichtend
Upgrade
h2c
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
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

REQ Body Empty

REQ Headers

Connection
Upgrade, HTTP2-Settings
Nicht verpflichtend
Nicht verpflichtend
Content-Length
0
Host
localhost:41675
Nicht verpflichtend
Nicht verpflichtend
Upgrade
h2c
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
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

REQ Body Empty

32200localhost:42231127.0.0.1:-1

32200localhost:41675127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Content-Length
3118
Date
Tue, 22 Oct 2024 13:46:52 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/jwt;charset=UTF-8

RES Body

JWT

Headers
{
+Date: Mon, 28 Oct 2024 15:02:24 GMT
+Content-Type: application/jwt;charset=UTF-8

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Content-Length
3118
Date
Mon, 28 Oct 2024 15:02:24 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

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

Body

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

Signature

Was verified using Key puk_disc_sig

Signature

Was verified using Key puk_disc_sig

33 GET http://localhost:41367/idpSig/jwk.json127.0.0.1:-1localhost:42231

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

33 GET http://localhost:37633/idpSig/jwk.json127.0.0.1:-1localhost:41675

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

34200localhost:42231127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.3
Date
Tue, 22 Oct 2024 13:46:53 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

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

34200localhost:41675127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.4
Date
Mon, 28 Oct 2024 15:02:26 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
@@ -593,49 +593,49 @@ "crv" : "BP-256", "x" : "llCsbU1bEgHeTP_pnbOiOWQmo3e8ldncRmcnoldNfDk",
X-Koordinate des öffentlichen Punkts des Schlüssels
"y" : "ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcY"
Y-Koordinate des öffentlichen Punkts des Schlüssels
-}

35 GET http://localhost:41367/idpEnc/jwk.json127.0.0.1:-1localhost:42231

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

35 GET http://localhost:37633/idpEnc/jwk.json127.0.0.1:-1localhost:41675

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

36200localhost:42231127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.3
Date
Tue, 22 Oct 2024 13:46:53 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:41675127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.4
Date
Mon, 28 Oct 2024 15:02:26 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:41367/sign_response?client_id=gematikTestPs&response_type=code&redirect_uri=http%3A%2F%2Ftest-ps.gematik.de%2Ferezept&state=GlLfvAOIqukSml8FmDCHyJwJrl1kmZ_h&code_challenge=ZNfYY30F3sexobx-w24xZs2cGV0Mlpt-M75zwqXIiGw&code_challenge_method=S256&scope=e-rezept+openid&nonce=VaUvN3qal1fen68aoxHNnbZsRFYdSfde127.0.0.1:-1localhost:42231

37 GET http://localhost:37633/sign_response?client_id=gematikTestPs&response_type=code&redirect_uri=http%3A%2F%2Ftest-ps.gematik.de%2Ferezept&state=K-Z85_EhYyCUQMuG5pUSM5vUOJRAYSkB&code_challenge=ndxy3BZvm2YKDYMw8EDGCe_EYavCb2KSPDPlgUz_54g&code_challenge_method=S256&scope=openid+e-rezept&nonce=Gw7bkfQHGtexkNCfx_yHV_B6Wy_MgsR1127.0.0.1:-1localhost:41675

REQ Headers

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

REQ Body Empty

REQ Headers

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

REQ Body Empty

38200localhost:42231127.0.0.1:-1

38200localhost:41675127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Date
Tue, 22 Oct 2024 13:46:53 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyMjMxIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJaSV8tQ1NYUHQyMENpamFHbzl6SjJHSW5nRk9xWElrYXV3SzJVTDNxSE9JIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IlZhVXZOM3FhbDFmZW42OGFveEhObmJac1JGWWRTZmRlIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJHbExmdkFPSXF1a1NtbDhGbURDSHlKd0pybDFrbVpfaCIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTcyOTYwNDk5NCwiaWF0IjoxNzI5NjA0ODE0LCJjb2RlX2NoYWxsZW5nZSI6IlpOZllZMzBGM3NleG9ieC13MjR4WnMyY0dWME1scHQtTTc1endxWElpR3ciLCJqdGkiOiIwMWQ1M2ViNTMzN2M4YzMyIn0.l4Jn-oxCXtxKY0SieMmIVuEYELMB_dMWmcOms1GP7syiRUqPpI5vnPHSgXEI770x83JV2aUS2m0sDapDOTcAHg",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Mon, 28 Oct 2024 15:02:28 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Date
Mon, 28 Oct 2024 15:02:28 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQxNjc1IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJZWmVTbV90MXJZbmVQS1BzVktvV2lSeWFYUjdUbzRQalA1NzZuZmIyc2lvIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6Ikd3N2JrZlFIR3RleGtOQ2Z4X3lIVl9CNld5X01nc1IxIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJLLVo4NV9FaFl5Q1VRTXVHNXBVU001dlVPSlJBWVNrQiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTczMDEyNzkyOCwiaWF0IjoxNzMwMTI3NzQ4LCJjb2RlX2NoYWxsZW5nZSI6Im5keHkzQlp2bTJZS0RZTXc4RURHQ2VfRVlhdkNiMktTUERQbGdVel81NGciLCJqdGkiOiI0ZjA0MzM2ODQwYWVkYWRhIn0.YanbHCYM1SRxQqzw91l6KTZi5Jsj7ghH7EapN1RhR2hWwaoMnM4WdHyxMeadiCzJGjJsJWuF01KndJilM6lHIQ",
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.", @@ -651,213 +651,213 @@ "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:42231",
+}

Body

{
+  "iss" : "http://localhost:41675",
   "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" : "ZI_-CSXPt20CijaGo9zJ2GIngFOqXIkauwK2UL3qHOI",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "YZeSm_t1rYnePKPsVKoWiRyaXR7To4PjP576nfb2sio",
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" : "VaUvN3qal1fen68aoxHNnbZsRFYdSfde",
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" : "Gw7bkfQHGtexkNCfx_yHV_B6Wy_MgsR1",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "gematikTestPs",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "GlLfvAOIqukSml8FmDCHyJwJrl1kmZ_h",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "K-Z85_EhYyCUQMuG5pUSM5vUOJRAYSkB",
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" : 1729604994,
Gültigkeit des Tokens
- "iat" : 1729604814,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "ZNfYY30F3sexobx-w24xZs2cGV0Mlpt-M75zwqXIiGw",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "01d53eb5337c8c32"
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:41367/sign_response127.0.0.1:-1localhost:42231

39 POST http://localhost:37633/sign_response127.0.0.1:-1localhost:41675

REQ Headers

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

REQ Body

namevalue
signed_challenge

JWE

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

Headers
{
+content-length: 4013

REQ Headers

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

REQ Body

namevalue
signed_challenge

JWE

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

Headers
{
   "alg" : "ECDH-ES",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1729604994,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
+ "exp" : 1730127928,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
"epk" : { "kty" : "EC", - "x" : "KXyoIo4__zLr6056nNBWyc7jyYpg8nOi4erl3Mht3B4",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "GtE3bqcCS8yh5i2Zfu9BlC8j4dkvVz_LLsONXmNjacI",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "niAfCJtZ_UqUxmdgBOjQqhFXrQIAGyYO2hSWCh-4AWk",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "BOhKcNuCP8GXZew8azXFibh2wntNC29ZBJVojzxSwHw",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body

{
-  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURWekNDQXY2Z0F3SUJBZ0lIQUlvMS92bkxtREFLQmdncWhrak9QUVFEQWpDQmlURUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhPREEyQmdOVkJBc01MMGhsYVd4aVpYSjFabk5oZFhOM1pXbHpMVU5CSUdSbGNpQlVaV3hsYldGMGFXdHBibVp5WVhOMGNuVnJkSFZ5TVI4d0hRWURWUVFEREJaSFJVMHVTRUpCTFVOQk1UTWdWRVZUVkMxUFRreFpNQjRYRFRJd01EWXhNREF3TURBd01Gb1hEVEkxTURZd09USXpOVGsxT1Zvd2NERUxNQWtHQTFVRUJoTUNSRVV4WVRBTUJnTlZCQVFNQlU5MHc2MXpNQlFHQTFVRUtnd05SOE84Ym5Sb1pYSWdSM0poWmpBYkJnTlZCQVVURkRnd01qYzJPRGd6TVRFd01EQXdNVEk1TURnME1CNEdBMVVFQXd3WFI4TzhiblJvWlhJZ1QzVERyWE5VUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFVS84bVlMM3lsQS9USnNWSHhhYXhqaHpZUG9keGJxR2VqelhibHBaMzYrMEJ2TDZkLzlLSWVva3plc3JLRTBnNjZhTDBXK3Nwc3FwWFNUYVlQQnFMMDZPQ0FXWXdnZ0ZpTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdPSU1CMEdBMVVkRGdRV0JCU1kzMFRwZjBYY2pvdFdTOVBYVXY5RERENnBrVEE0QmdnckJnRUZCUWNCQVFRc01Db3dLQVlJS3dZQkJRVUhNQUdHSEdoMGRIQTZMeTlsYUdOaExtZGxiV0YwYVdzdVpHVXZiMk56Y0M4d0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3SUdDQ3NHQVFVRkJ3TUVNQzRHQTFVZElBUW5NQ1V3Q1FZSEtvSVVBRXdFU3pBTUJnb3JCZ0VFQVlMTk13RUJNQW9HQ0NxQ0ZBQk1CSUVSTUI4R0ExVWRJd1FZTUJhQUZBcjdETlhVazFROVpZQStlaUFDbFRTV2dCdkFNSGtHQlNza0NBTURCSEF3YnFRb01DWXhDekFKQmdOVkJBWVRBa1JGTVJjd0ZRWURWUVFLREE1blpXMWhkR2xySUVKbGNteHBiakJDTUVBd1BqQThNQTRNRE1PRWNucDBhVzR2UVhKNmREQUpCZ2NxZ2hRQVRBUWVFeDh4TFVoQ1FTMVVaWE4wYTJGeWRHVXRPRGd6TVRFd01EQXdNVEk1TURnME1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFT2xHd3VmRjJIWjJuWkF3Qm41cXJXeVNKMWpXSVNVcjBmZUFiZjBNNUxyQWlCRyt2T2lhR2wyYUZQd0Y5UXp4a0ZOZTAvb2QxdVEzbEdVL2sxVWtGdTFQdz09Il0sImFsZyI6IkJQMjU2UjEifQ.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pReU1qTXhJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKYVNWOHRRMU5ZVUhReU1FTnBhbUZIYnpsNlNqSkhTVzVuUms5eFdFbHJZWFYzU3pKVlRETnhTRTlKSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklsWmhWWFpPTTNGaGJERm1aVzQyT0dGdmVFaE9ibUphYzFKR1dXUlRabVJsSWl3aVkyeHBaVzUwWDJsa0lqb2laMlZ0WVhScGExUmxjM1JRY3lJc0luTmpiM0JsSWpvaVpTMXlaWHBsY0hRZ2IzQmxibWxrSWl3aWMzUmhkR1VpT2lKSGJFeG1ka0ZQU1hGMWExTnRiRGhHYlVSRFNIbEtkMHB5YkRGcmJWcGZhQ0lzSW5KbFpHbHlaV04wWDNWeWFTSTZJbWgwZEhBNkx5OTBaWE4wTFhCekxtZGxiV0YwYVdzdVpHVXZaWEpsZW1Wd2RDSXNJbVY0Y0NJNk1UY3lPVFl3TkRrNU5Dd2lhV0YwSWpveE56STVOakEwT0RFMExDSmpiMlJsWDJOb1lXeHNaVzVuWlNJNklscE9abGxaTXpCR00zTmxlRzlpZUMxM01qUjRXbk15WTBkV01FMXNjSFF0VFRjMWVuZHhXRWxwUjNjaUxDSnFkR2tpT2lJd01XUTFNMlZpTlRNek4yTTRZek15SW4wLmw0Sm4tb3hDWHR4S1kwU2llTW1JVnVFWUVMTUJfZE1XbWNPbXMxR1A3c3lpUlVxUHBJNXZuUEhTZ1hFSTc3MHg4M0pWMmFVUzJtMHNEYXBET1RjQUhnIn0.Bc24cu_KXK9y21IlLO-jpppZH-NlrOJ0THb0JeWfSg5RGSEqPUvOft12NsHBlrcGWM-LZL0DXlxL7B8C_Uyr4Q"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURWekNDQXY2Z0F3SUJBZ0lIQUlvMS92bkxtREFLQmdncWhrak9QUVFEQWpDQmlURUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhPREEyQmdOVkJBc01MMGhsYVd4aVpYSjFabk5oZFhOM1pXbHpMVU5CSUdSbGNpQlVaV3hsYldGMGFXdHBibVp5WVhOMGNuVnJkSFZ5TVI4d0hRWURWUVFEREJaSFJVMHVTRUpCTFVOQk1UTWdWRVZUVkMxUFRreFpNQjRYRFRJd01EWXhNREF3TURBd01Gb1hEVEkxTURZd09USXpOVGsxT1Zvd2NERUxNQWtHQTFVRUJoTUNSRVV4WVRBTUJnTlZCQVFNQlU5MHc2MXpNQlFHQTFVRUtnd05SOE84Ym5Sb1pYSWdSM0poWmpBYkJnTlZCQVVURkRnd01qYzJPRGd6TVRFd01EQXdNVEk1TURnME1CNEdBMVVFQXd3WFI4TzhiblJvWlhJZ1QzVERyWE5VUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFVS84bVlMM3lsQS9USnNWSHhhYXhqaHpZUG9keGJxR2VqelhibHBaMzYrMEJ2TDZkLzlLSWVva3plc3JLRTBnNjZhTDBXK3Nwc3FwWFNUYVlQQnFMMDZPQ0FXWXdnZ0ZpTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdPSU1CMEdBMVVkRGdRV0JCU1kzMFRwZjBYY2pvdFdTOVBYVXY5RERENnBrVEE0QmdnckJnRUZCUWNCQVFRc01Db3dLQVlJS3dZQkJRVUhNQUdHSEdoMGRIQTZMeTlsYUdOaExtZGxiV0YwYVdzdVpHVXZiMk56Y0M4d0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3SUdDQ3NHQVFVRkJ3TUVNQzRHQTFVZElBUW5NQ1V3Q1FZSEtvSVVBRXdFU3pBTUJnb3JCZ0VFQVlMTk13RUJNQW9HQ0NxQ0ZBQk1CSUVSTUI4R0ExVWRJd1FZTUJhQUZBcjdETlhVazFROVpZQStlaUFDbFRTV2dCdkFNSGtHQlNza0NBTURCSEF3YnFRb01DWXhDekFKQmdOVkJBWVRBa1JGTVJjd0ZRWURWUVFLREE1blpXMWhkR2xySUVKbGNteHBiakJDTUVBd1BqQThNQTRNRE1PRWNucDBhVzR2UVhKNmREQUpCZ2NxZ2hRQVRBUWVFeDh4TFVoQ1FTMVVaWE4wYTJGeWRHVXRPRGd6TVRFd01EQXdNVEk1TURnME1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFT2xHd3VmRjJIWjJuWkF3Qm41cXJXeVNKMWpXSVNVcjBmZUFiZjBNNUxyQWlCRyt2T2lhR2wyYUZQd0Y5UXp4a0ZOZTAvb2QxdVEzbEdVL2sxVWtGdTFQdz09Il0sImFsZyI6IkJQMjU2UjEifQ.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pReE5qYzFJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKWldtVlRiVjkwTVhKWmJtVlFTMUJ6Vmt0dlYybFNlV0ZZVWpkVWJ6UlFhbEExTnpadVptSXljMmx2SWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNklrZDNOMkpyWmxGSVIzUmxlR3RPUTJaNFgzbElWbDlDTmxkNVgwMW5jMUl4SWl3aVkyeHBaVzUwWDJsa0lqb2laMlZ0WVhScGExUmxjM1JRY3lJc0luTmpiM0JsSWpvaWIzQmxibWxrSUdVdGNtVjZaWEIwSWl3aWMzUmhkR1VpT2lKTExWbzROVjlGYUZsNVExVlJUWFZITlhCVlUwMDFkbFZQU2xKQldWTnJRaUlzSW5KbFpHbHlaV04wWDNWeWFTSTZJbWgwZEhBNkx5OTBaWE4wTFhCekxtZGxiV0YwYVdzdVpHVXZaWEpsZW1Wd2RDSXNJbVY0Y0NJNk1UY3pNREV5TnpreU9Dd2lhV0YwSWpveE56TXdNVEkzTnpRNExDSmpiMlJsWDJOb1lXeHNaVzVuWlNJNkltNWtlSGt6UWxwMmJUSlpTMFJaVFhjNFJVUkhRMlZmUlZsaGRrTmlNa3RUVUVSUWJHZFZlbDgxTkdjaUxDSnFkR2tpT2lJMFpqQTBNek0yT0RRd1lXVmtZV1JoSW4wLllhbmJIQ1lNMVNSeFFxenc5MWw2S1RaaTVKc2o3Z2hIN0VhcE4xUmhSMmhXd2FvTW5NNFdkSHl4TWVhZGlDekpHakpzSld1RjAxS25kSmlsTTZsSElRIn0.HC4qNp6Eciu2ZZwKEbs7TYukFvXI6qpnWco4yQie-K5Vl1uyEMnDvwBaB9ij7FZu54e_2yF_Rs377KeRKltq_g"
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

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyMjMxIiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJaSV8tQ1NYUHQyMENpamFHbzl6SjJHSW5nRk9xWElrYXV3SzJVTDNxSE9JIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6IlZhVXZOM3FhbDFmZW42OGFveEhObmJac1JGWWRTZmRlIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJHbExmdkFPSXF1a1NtbDhGbURDSHlKd0pybDFrbVpfaCIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTcyOTYwNDk5NCwiaWF0IjoxNzI5NjA0ODE0LCJjb2RlX2NoYWxsZW5nZSI6IlpOZllZMzBGM3NleG9ieC13MjR4WnMyY0dWME1scHQtTTc1endxWElpR3ciLCJqdGkiOiIwMWQ1M2ViNTMzN2M4YzMyIn0.l4Jn-oxCXtxKY0SieMmIVuEYELMB_dMWmcOms1GP7syiRUqPpI5vnPHSgXEI770x83JV2aUS2m0sDapDOTcAHg"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQxNjc1IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJZWmVTbV90MXJZbmVQS1BzVktvV2lSeWFYUjdUbzRQalA1NzZuZmIyc2lvIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6Ikd3N2JrZlFIR3RleGtOQ2Z4X3lIVl9CNld5X01nc1IxIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJLLVo4NV9FaFl5Q1VRTXVHNXBVU001dlVPSlJBWVNrQiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly90ZXN0LXBzLmdlbWF0aWsuZGUvZXJlemVwdCIsImV4cCI6MTczMDEyNzkyOCwiaWF0IjoxNzMwMTI3NzQ4LCJjb2RlX2NoYWxsZW5nZSI6Im5keHkzQlp2bTJZS0RZTXc4RURHQ2VfRVlhdkNiMktTUERQbGdVel81NGciLCJqdGkiOiI0ZjA0MzM2ODQwYWVkYWRhIn0.YanbHCYM1SRxQqzw91l6KTZi5Jsj7ghH7EapN1RhR2hWwaoMnM4WdHyxMeadiCzJGjJsJWuF01KndJilM6lHIQ"
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:42231",
+}

Body

{
+  "iss" : "http://localhost:41675",
   "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" : "ZI_-CSXPt20CijaGo9zJ2GIngFOqXIkauwK2UL3qHOI",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "YZeSm_t1rYnePKPsVKoWiRyaXR7To4PjP576nfb2sio",
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" : "VaUvN3qal1fen68aoxHNnbZsRFYdSfde",
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" : "Gw7bkfQHGtexkNCfx_yHV_B6Wy_MgsR1",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "gematikTestPs",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "GlLfvAOIqukSml8FmDCHyJwJrl1kmZ_h",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "K-Z85_EhYyCUQMuG5pUSM5vUOJRAYSkB",
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" : 1729604994,
Gültigkeit des Tokens
- "iat" : 1729604814,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "ZNfYY30F3sexobx-w24xZs2cGV0Mlpt-M75zwqXIiGw",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "01d53eb5337c8c32"
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:42231127.0.0.1:-1

40302localhost:41675127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Content-Length
0
Date
Tue, 22 Oct 2024 13:46:55 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=GlLfvAOIqukSml8FmDCHyJwJrl1kmZ_h
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Mon, 28 Oct 2024 15:02:29 GMT
+Location: http://test-ps.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyNzgwOX0..xQLIL9LEKSSNkftR.0jFry5ajhfjfQBfyP8eRLLuu2A_b5bS_5Bc71Q-6J7YVnLMWIwAKdZ95WJKZb8finHjglurafl8SOttMkcblls6nY8OWWuCX0FvtpTIPnf2gcdDsjwzIM46PTHPPWeE_3bb3Jt7PUqSXTRDg7PBqfn7Ajn3SXrcUewyMhNxhNlCleN5MonP9kYievead4wZOsHdwlEsHKS1GQdndGrsRZzKN6Vk9wnxGXkGc8evNxb8UPO-KiGG-ms6Z1tDHWRb8aLgNRylKFcC_Th5_8Y8J-0ODOphSSS_B3CsagU6vL63lU0CdrxgYaC0SGFJGbvjS7CC_1Q7kYu-3DVyMiyH-iTYY19dagzfQNDq3coDlKCgfgQUI8VusMuk-CXL_ViGs0Z1nKuyFkN6POhR25cx1OvW6-luY8Rk7Cx0-NEJYCGI_oLfLmC103DAPbr-jTA-6Xm--AbOh3wWWwh0Hp4Q5NFm2AvEn1GlOQ0XGXRQtP06DRxTj53dHKNCoclVP_-b4Eqc83xS7h4fj6Odl0c--0sO_mRTjMYaKjHMTPzRZLAV_e38zwl1iPfNQKMXcdt3sTmJ3euqUhiSPO6ahy-lxsjaqZM6goTl6rq8-qCt4dP61VNBcQyYNwA92-veWTsOTQGJzSZ8pj0WGkmj6qvtIk9bKmZsEhx1Ua8cRj-v3jw9tJOuuKNHxBP80llEZSA4KSXvPOvOS_iHnk1TKzb7mQSbjx9XIAuzky6nNaL1OJkYbswye1IbEJhi8Uk1GyH4lde8de0emxhxJYE8ioO5Is-z83xGJovuyTKJ4iSWW7arIfF9krh8geMaWDsUIAn2lbrw-oVbdZxM24nTcQXNopqKiH75-ckKXjSmPVR0MGiCwdMhQxVcVgSkwZGt9P3cP_ZZNFIAEGIoEZ1wXqVZiNLr6YZlvIxpAxzHFV6cgY6NMpdUrJNN4DdB1VU3gYpn33rnjdG-SW22dxxpSXFcJTxZxfo9gZtllLLZbQWsIkY15FV6mxSDFICYOCX4-12sGE8O6CUDO5_Pbzh7KOgnTl_DavYeDXAP6WVwx5MojPhHBn6eu193OyMdmnXIohd1rzz2ODxfPSQ9RhGiVsyRyPWX1FT-j2hPGZXwBCEr3NfVmSWx74MkdwkgKltcvVe5lXYPdoXf-fdiOInQSNmgIJHgcq1HD2GEqgpBMUPmAB2WlJ3YXlles0uAI3S8d1s_JYmcQGbjDNhSudfdXzxZQQVmXhd7zQW0jKAz9Rz5rwOTEvZmMaYC2C0YFSDCIWmBeAm7_Tbd9UdKS9guRh9THWSTJYD7LOHHVR9UxpFLflwBUtBENtEiiITRZImmEGb1eRdMmfTGePWobtDvIkx4_cmbctKQ6iuQ-_e1p0X3BsIyVU5Y8RAgYad6lWw5ZQ3Ox4fzcgkFoJX3MABERNwWjilWsoFLywCsX.FG_UGcdtuhXKj8wcEiZWWw&state=K-Z85_EhYyCUQMuG5pUSM5vUOJRAYSkB

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Content-Length
0
Date
Mon, 28 Oct 2024 15:02:29 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=K-Z85_EhYyCUQMuG5pUSM5vUOJRAYSkB
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" : 1729604875
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0MjIzMSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoicDhQNXU4cU1qd2M5a2dFc1VxZVNZb2VIc3lzdTdGREkiLCJvcmdhbml6YXRpb25JSyI6bnVsbCwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsImdpdmVuX25hbWUiOiJHw7xudGhlciBHcmFmIiwidG9rZW5fdHlwZSI6ImNvZGUiLCJub25jZSI6IlZhVXZOM3FhbDFmZW42OGFveEhObmJac1JGWWRTZmRlIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwiYXV0aF90aW1lIjoxNzI5NjA0ODE1LCJyZWRpcmVjdF91cmkiOiJodHRwOi8vdGVzdC1wcy5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IkdsTGZ2QU9JcXVrU21sOEZtRENIeUp3SnJsMWttWl9oIiwiZXhwIjoxNzI5NjA0ODc1LCJmYW1pbHlfbmFtZSI6Ik90w61zIiwiaWF0IjoxNzI5NjA0ODE1LCJjb2RlX2NoYWxsZW5nZSI6IlpOZllZMzBGM3NleG9ieC13MjR4WnMyY0dWME1scHQtTTc1endxWElpR3ciLCJqdGkiOiI2ZjIxMWE1YzgzYWQwNjg5In0.U9ub8CVvFvqYCt1GFgU13zqAtZu_2UD1CPEhv70yK_hGeIeCERAm0sPi3IGIgm28q1sfVMH0prT8aCbi_2cvOg"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0MTY3NSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiUUJ6bEVLb2xSNWJQUmZVNXBJSnVNaFNLRHgtVDFEUDQiLCJvcmdhbml6YXRpb25JSyI6bnVsbCwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsImdpdmVuX25hbWUiOiJHw7xudGhlciBHcmFmIiwidG9rZW5fdHlwZSI6ImNvZGUiLCJub25jZSI6Ikd3N2JrZlFIR3RleGtOQ2Z4X3lIVl9CNld5X01nc1IxIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0IiwiYXV0aF90aW1lIjoxNzMwMTI3NzQ5LCJyZWRpcmVjdF91cmkiOiJodHRwOi8vdGVzdC1wcy5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IkstWjg1X0VoWXlDVVFNdUc1cFVTTTV2VU9KUkFZU2tCIiwiZXhwIjoxNzMwMTI3ODA5LCJmYW1pbHlfbmFtZSI6Ik90w61zIiwiaWF0IjoxNzMwMTI3NzQ5LCJjb2RlX2NoYWxsZW5nZSI6Im5keHkzQlp2bTJZS0RZTXc4RURHQ2VfRVlhdkNiMktTUERQbGdVel81NGciLCJqdGkiOiIxMzI4MDMzMTZhMmJlMjRmIn0.ckzjuMv9fj_BdUw1xOQVlMi8kATIS40Rvnyl9oPoZDaPAXkDqF4ymoCwoXiKU8SUBdcibnjueRzzgsAMwRN90w"
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:42231",
+  "iss" : "http://localhost:41675",
   "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" : "p8P5u8qMjwc9kgEsUqeSYoeHsysu7FDI",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "QBzlEKolR5bPRfU5pIJuMhSKDx-T1DP4",
server-nonce. Wird verwendet um noise hinzuzufügen.
"organizationIK" : null, "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" : "VaUvN3qal1fen68aoxHNnbZsRFYdSfde",
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" : "Gw7bkfQHGtexkNCfx_yHV_B6Wy_MgsR1",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "gematikTestPs",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604815,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127749,
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" : "GlLfvAOIqukSml8FmDCHyJwJrl1kmZ_h",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1729604875,
Gültigkeit des Tokens
+ "state" : "K-Z85_EhYyCUQMuG5pUSM5vUOJRAYSkB",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1730127809,
Gültigkeit des Tokens
"family_name" : "Otís", - "iat" : 1729604815,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "ZNfYY30F3sexobx-w24xZs2cGV0Mlpt-M75zwqXIiGw",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "6f211a5c83ad0689"
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

RES Body Empty

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

RES Body Empty

41 POST http://localhost:41367/token127.0.0.1:-1localhost:42231

41 POST http://localhost:37633/token127.0.0.1:-1localhost:41675

REQ Headers

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

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
{
+content-length: 2133

REQ Headers

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

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" : 1729604875
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0MjIzMSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoicDhQNXU4cU1qd2M5a2dFc1VxZVNZb2VIc3lzdTdGREkiLCJvcmdhbml6YXRpb25JSyI6bnVsbCwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsImdpdmVuX25hbWUiOiJHw7xudGhlciBHcmFmIiwidG9rZW5fdHlwZSI6ImNvZGUiLCJub25jZSI6IlZhVXZOM3FhbDFmZW42OGFveEhObmJac1JGWWRTZmRlIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwiYXV0aF90aW1lIjoxNzI5NjA0ODE1LCJyZWRpcmVjdF91cmkiOiJodHRwOi8vdGVzdC1wcy5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IkdsTGZ2QU9JcXVrU21sOEZtRENIeUp3SnJsMWttWl9oIiwiZXhwIjoxNzI5NjA0ODc1LCJmYW1pbHlfbmFtZSI6Ik90w61zIiwiaWF0IjoxNzI5NjA0ODE1LCJjb2RlX2NoYWxsZW5nZSI6IlpOZllZMzBGM3NleG9ieC13MjR4WnMyY0dWME1scHQtTTc1endxWElpR3ciLCJqdGkiOiI2ZjIxMWE1YzgzYWQwNjg5In0.U9ub8CVvFvqYCt1GFgU13zqAtZu_2UD1CPEhv70yK_hGeIeCERAm0sPi3IGIgm28q1sfVMH0prT8aCbi_2cvOg"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0MTY3NSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiUUJ6bEVLb2xSNWJQUmZVNXBJSnVNaFNLRHgtVDFEUDQiLCJvcmdhbml6YXRpb25JSyI6bnVsbCwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsImdpdmVuX25hbWUiOiJHw7xudGhlciBHcmFmIiwidG9rZW5fdHlwZSI6ImNvZGUiLCJub25jZSI6Ikd3N2JrZlFIR3RleGtOQ2Z4X3lIVl9CNld5X01nc1IxIiwiY2xpZW50X2lkIjoiZ2VtYXRpa1Rlc3RQcyIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0IiwiYXV0aF90aW1lIjoxNzMwMTI3NzQ5LCJyZWRpcmVjdF91cmkiOiJodHRwOi8vdGVzdC1wcy5nZW1hdGlrLmRlL2VyZXplcHQiLCJzdGF0ZSI6IkstWjg1X0VoWXlDVVFNdUc1cFVTTTV2VU9KUkFZU2tCIiwiZXhwIjoxNzMwMTI3ODA5LCJmYW1pbHlfbmFtZSI6Ik90w61zIiwiaWF0IjoxNzMwMTI3NzQ5LCJjb2RlX2NoYWxsZW5nZSI6Im5keHkzQlp2bTJZS0RZTXc4RURHQ2VfRVlhdkNiMktTUERQbGdVel81NGciLCJqdGkiOiIxMzI4MDMzMTZhMmJlMjRmIn0.ckzjuMv9fj_BdUw1xOQVlMi8kATIS40Rvnyl9oPoZDaPAXkDqF4ymoCwoXiKU8SUBdcibnjueRzzgsAMwRN90w"
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:42231",
+  "iss" : "http://localhost:41675",
   "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" : "p8P5u8qMjwc9kgEsUqeSYoeHsysu7FDI",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "QBzlEKolR5bPRfU5pIJuMhSKDx-T1DP4",
server-nonce. Wird verwendet um noise hinzuzufügen.
"organizationIK" : null, "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" : "VaUvN3qal1fen68aoxHNnbZsRFYdSfde",
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" : "Gw7bkfQHGtexkNCfx_yHV_B6Wy_MgsR1",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "gematikTestPs",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604815,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127749,
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" : "GlLfvAOIqukSml8FmDCHyJwJrl1kmZ_h",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1729604875,
Gültigkeit des Tokens
+ "state" : "K-Z85_EhYyCUQMuG5pUSM5vUOJRAYSkB",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1730127809,
Gültigkeit des Tokens
"family_name" : "Otís", - "iat" : 1729604815,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "ZNfYY30F3sexobx-w24xZs2cGV0Mlpt-M75zwqXIiGw",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "6f211a5c83ad0689"
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" : 1730127749,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "ndxy3BZvm2YKDYMw8EDGCe_EYavCb2KSPDPlgUz_54g",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "132803316a2be24f"
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" : "fE_n-71w8nT7sDL7LdqEzBmOnfi9zfsCDBSPPZtrLPk",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "ce7AMONSL9O_Q69VhZzNM8Ubnpm__mqHCYX-0uFkYD4",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "pdlmHBmQ4OxEQRQHvVU7UMzXd_oPdQOu7fNW3rmobAo",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "d-_TnhQE6FhhvljpGNBSePhN3qSj4HPixOJM4t0Sm20",
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" : "qXmMlOrZP5MFVXesM_8i4cj-bu_1fQbiJYZ83E2LtjU", - "code_verifier" : "puAgUET8q-gNil_jxE1JTTbeyA9ISnTjvz4N8P26kwY" -}

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

42200localhost:41675127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Date
Tue, 22 Oct 2024 13:46:58 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Mon, 28 Oct 2024 15:02:32 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Date
Mon, 28 Oct 2024 15:02:32 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcyOTYwNTExOH0..d3VthEQha7z5QHW8.tJasim9AFK9EbgQkqSyu8FHfA0UvJ14308Ox-p0sTZj8oURHy05Z-EIeK_ma3ia4PJkFrrDi2jPaPZPZbTt06ypx7m2ojd9XP8hF33M0HywxFpKRF1EyQQoFaibJnJJ-pHusDLzy1fZJkppbGHeB2ITBO1ePs_qH_aMMCC829wRUdbFHho2vOxymegl-ANSTejr7XDZ0dgnteh5CQLQSFbymntCGHmJXkufqa0MGkI3i7B48073HAPO3lixnQ3uwyDr_GBB8aFQg4d84DZA4h0BclpE_IdbjyvWabvFu2WaMndpKvZ1LjW2T8ZIjwWVGHUOzUZIC2W7nhtp0EB_mMYacpYq1oqnNX-1MO5Yp2tkRob6BZzTAtJyueagCXsm0yjbZRadtGvWwmJjRkkMFkTNt8EqMOOuhslg88GkFHMjeGQnJF8SoidAtm21OFvNi4UjdEunDK-ShwDKtSusVucyEYFV_Q-clwNVP1JdgchVMsgu7B-mN-plN-Z8Teci51PfUCoV8-jhekD4QioeUTYKEsl-dXWK39tpwG7VY_fEOwWr4ttyChasTl_GT-PuZxPEWTDXOJwttSOwSs2UyS3JD3F3nF4CEZGUz_MWzA8vLVaYwW63QPmA95SRWio8aJVFX6ETtHTSZBharPY5rcEPOdORIk4oP4_b2f3H1gopGGupuf3pYgO5LLyRz3BO3QEzcyO7AdGp1TdE6Bg8kv-jqCFGv_Pud9gZLLh9q7c9sNXoIBKa5EhzmpSsS_Ylno4zU57W2WAAY0kNbsW7tf7E0fk07M4gfO1CDWTyu-HRzNKeSMSUTfB8YPYkrsbLhCZtKV36rFs9i55uKrIMRzDcLehdJKGv0l_R5Uo9HQMyBzhWiJwRvjVQUBF8vEmgYbzPOU9OY-fAJg2DHJmMDq1lPurYmFL8zksyS42TVmZ3ak0Xi_W7zZFO0WWhkbJb8eOHAli5B7_CEWqwGLHs3FDAEvHnrUZWPT5V38oNBdfT5nsqKSQNMgnqX9VBjQNfcbk57VUw8hTqGrNkNo_z33AitNZw3iT5IUubbYwpBhCM9qO6GQSIWSSYJT2ul0F30AgSGBXxl97XWsK4gSKPv539KlxgAqXjhShad8R23MDndCsFu24aEoWU3WG2oePYujWRbxMdt1fYYymEUpF0nplc1DzXxcTuBP8NanvnH3qu2e1I0D8ptX7fdQWUowXAgwUUFdX9Xcha3XmgbnN15mA.Mhcu9sdLmG0Sq4HK-ReIwA",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcyOTYwNTExOH0..7unJYSPCAfpZ2Vs1.XRYDdWIPTofOmsOKc1oYNQli0PHjbXmyOKjgx0F02aGRRGbaUV7K5pNl0BN7LF6ewlGnCy3MwQ1mN5LU1p7biNUvNaRmF62dPK9u-9CykbYtyh8Jv5sazuHa4ovzJ5YywLhlZEmZK_LJoyxOuPIA_RQLWkLJZlxuj0O8PzfO3IrNlCeFxUnAP3jNY978j2ayUN9mVmiYE3pp3Km0Lp6_gCEN6WjPMC-Tl3fPXowQbw0jiZ0wE0n9FM9RAHoInKvL6g3rnVkd2UlrNLv8H6ispfjm4VbQn7HQTD6LZ0qkgWcmLCnjh_E9ayp8bzaWwnpU7p5KAfVn7nlocGECUDCRPLMNl7PJSZSdtXR0ilcorYuR0uf-3t6CGRooINZyt7XBhyXI0qg3mEy0HXysovye5voapWmbfuxZ8MO9Q_LTszphWXsL_RCSpp7UVcPjeKL1GTrI9VdAWWGFKf2fyHMlIzmdzb2jftpsKc0WWvCcAgOaPrq4MA5mIXvqOmzM2akDOrK_cwirkg2QBrhONoR1xS_SoGlYVd8_lJS6hvqwKOk2IFgNZsaY2uo1o_m-9K8ttUbxT6L5P7GSWkoTMZF5LFUCbXOwiaOoXnl4BM0jkeG561Dyy5XPpeEhDsrPctSXMj5IpDIX-8P9OHVUv4Vdu4iVl5ytRqeoK0MfejME9sPC2fWbAhsmIhiUQWl8MLQb5z_oCCg8wjgeTIYaght2XejKSJ9drTgyMqaGyStw7iA46taal4uJ4QbUS44BxwKr11ozTsPvqBMx0dbm73ux9m6A6rZn-zhF_oWVxc6_uq3wg3rTqu79qKX9ce_i9ETfg5oraPEd3WtMHEOWgq3LoZCCerMKj7nYM2UQnd6nmjp7rYXIrfLnY-0WkZk4o7mfU_AhdTl9LenSoV-rmIoFEofb_nTyd3O-bYfPZq3vtINNzV2PeM5uCOivwc6-DmpFk9l2RW-UHUhORIIl3ozj4TdO0wXm-ZrEfQuFdBi4_5psF2lJrA27soyG6VPiVDySZjc8Db1Ryuy4VEcikyCopP1xR0I8oMDTbu62i8EVU7sLPUSv-7Qr0DpjYwGKAjNp4O6O_1Anva98XS3ypt9xR93Zc27vsHxrkHvvzI7vTDCIMi8uioIO0GMSW2PV6D7m3xYO2gJDptowDRakDSKeO23K8DcIKFrFAWNQbQ-TFjlyX3X_YCh7R1I1KAhxrTxTfLF-v8YhvFYcX3MBaKB9j0LMhvlcKceA4aUkZwAIpMkiKPthkSuPgw.al5KOYVJZSSTHFZrsA97EA"
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyODA1Mn0..4xGezn9zFyrgWTGe.WJZEZgsNBb0cyap-lAKsHMwMDlDAJHWxSNVRh6H-Y0f2O6qKB3EvqOwugMRnpbDDFkeC3-iPMKyEmEEBDwiAwnisq1dnKY4dJKE137NY_9B85g2lXwN0cLVOcK7aCVp7ouryvRfp8wADyFPB8RFi99EQjdUzIDMoubS9JLMtYDFwEjuPc7IACkPdjLumLMvAxUvnmfK6b9ZUov_h7ClDrnKHJxcGg_ixttXtGkum61UDMoVx8uAWZ0yV_BcfTwrqJ_4IvFZuf-uHDhCfUWmZ2muXThCgDUlHNH9J9JXaTZwq8usLSQW0htS1YJqaNoeO51QslJ-gL_5kE7CHggcKU9YVvP6B6cLL-2e1Tg-NJcz6BHL3IfnM-nQX_sJ7mHJDlO-meOrF3qAigSOdXuBEcpB-UrgUXF9r-Q-KauWnsYrnvl0EhW4-eNqhiQu7qKCkt-bXwphBGhiKa3c9mlIReC898VRaHg-XM1M-IHec3JgSkmwSOlqVvT6XlxjQQJh0t_0QFEy2MEXBumwQKX3boDYL8R5-NhB82tO76KiRhRbcZf_rXtwFFO4cC2QB1864X8hPWB5KeqLPPK7OBj4mFilH9FbiQxR7Lj9MJ827UTbLkS129aX9dnIi0KA9nex-f7roKCsVVUDxUhAStrIUyzoypcq-LQycvOgl4rxbwYQm1PvF4oznXjtaWvkSzNVaff3UVEqRxprd6vu18Pn5XeKqquF8rIDC2a4_OU906q6vyTUx4wFjTFWzGIacKASTKUbXOjgO7IhUTQ10caoaBVh948XjFS-fIzLGYBom0qT00EMdQhVoOzQM_KmTL7mZZZz5Gqjkt8Ap1SswDPww6E-IToqg0OWBxOyLxWGHXoNnCV28Pv9otykMTIuKLN_hzAtYbFeeqEG906m4ccbllqNbopi7wpMqVyUwCWQveoapJwtOb2JCTqLxIrKMTGA0_0TPHwk0wu5gf-uy7XMmc7JHZol6gO3pLohOU97NcDPaPBDl9u01nSZ7WJ18ZgW_0ixw6MB8jZmUAt1VhhnDapvi19s54j9zObvydopJUP5nPBRvUoOHF3zMNRQxPLoWQ2M5YMq6rTXiEIrqvIFBx7oAOpF8WFVq2DKTt5DbSL9BugztuzPYnROY0cB1F-sYazoiNPOX7ybv2AF-Q2U2aJ_koteZ7EgbaoYO2GDQPCmpxlf1lxmA1r3qjiSTIM5FS1FMmz_WaWnQr7ThM62ePA.zLOG2SSTwbQYhNoWZbgavg",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyODA1Mn0..SUsYCo-0Ee-qrjBB.CU0hqJOQ2dpUFiIHovr9UKdtSuqWEbyBJJOPqPM1I116tsR6qfs_vGRNFyvYHdHovAb1v1ctzGJsWQv7s9npbBSn6ns2IPufu9UPimZvBDLKaJTZvIeTq7YAhaiBJjAOhN8OAvg4skTZUf_Ywl1k3eLj2KTTa8x_kMJA77M5FMu5GIxFXtj7nyLOkQMfZD8ED6kMXvLy8F8iA1Q33CihN70f7ugx8Zno-ZpT3bGzOaJxIMEwlIHSbYgmKf0svMPc_seVb8bWFiFttA1AqwVCOGZE6E7Zpf3mCz8DKe60gXo78IpgICZLiGFjAGzBBl98tiuZKOsJmvVmoDRlivYEy7LomRoGq7_u1rSYdTc8Thd4eYnnFuqcyyHsUAtoHF8OghjdDX73SEBvTrqM-gY_eyGFcMut4FwTlHn-DVxXqZSY-LZ1oMkuFWFPAGl_eWl34BvHSA79bj5RjIy8sNVk69hpW4KE-zuOs1wxcq_L5H185v8l4Vhd1Dzzj3uVQlOmyg50puZdIUJaRPyfQWvjQsWeiIf_NbSt4adyHqYxUFWItTjcOUOeDBTtCUZAqo6MjV4RikMHxKtDXl4_ytGCxygkCCV3_RuFaAGEDuH-8iwlzk4EmuzyXhKFXYX3ZymqEWiznl875obCroiRQjRuKIyI691zcsoNviKcmNnHHSJeYH5Jwrbr0Rebw3MlaxTCGYaGejoEun8cxbNCaygXxMHLIPPCu0d3nWpvDq6uVb6kDMvK2i34WlVf8f1WFz4y5NF3FnFdwHiOD5txsSy-DfAn0XGL28GOp1UbO5poGXJO8y1l3C_vcUNbbR5YA1mXnzrNGVzR4wlabFP6o_MbMOmmWdihvo1HeIGgwL2HdtMkMX37AEw-Ov6S-Uqj_5GQwMcy7wGhkTDSU7sOGrQuCYpKNj6fBKarTBX8TT9rwFIAAUzdBuhH5SdZAcCLjMXHxqjUFrub5B6TT5LftYv9wWGH42HVpoQ-uKTx0O4MQa10mIWSdYbQKtj_1tJsscj2JALdhIzSpMOoFoxU0euTj1LkEb8gUkBUJOAbjsVIFJ2ootXrXS8CBwr-9fX9zKaw_fZQA2n8aqz1ZfARK0WsDpyqzlSKF1s_oWK-t5ZE-OcefmFCOwKOnJg7exvtJRGfyOYxK33z47HlyuC8skuhAWxQk0R9Y_mNGZ6z_Df62KTNZpMV4vYSBv7Z_auPvnOzi_1ZyLZN8KEzuRetHHrpf4Tbu_0ajgNH6JpiDHTi1ZkY0sIDKPYHGA.39tk0_YTUMqyCHzjXqAXEg"
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" : 1729605118
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoidFI2em1qSjJqdjV6NmphWUhGSFo3dyIsInN1YiI6InhtTnlFdDBxR3pTT3M4Q0dORXRDUkNaa1ctbW5kdnVxV2hFWDdmU1FOODAiLCJvcmdhbml6YXRpb25OYW1lIjpudWxsLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuMzAiLCJpZE51bW1lciI6IjEtSEJBLVRlc3RrYXJ0ZS04ODMxMTAwMDAxMjkwODQiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwib3JnYW5pemF0aW9uSUsiOm51bGwsImdpdmVuX25hbWUiOiJHw7xudGhlciBHcmFmIiwiZGlzcGxheV9uYW1lIjoiR8O8bnRoZXIgR3JhZiBPdMOtcyIsIm5vbmNlIjoiVmFVdk4zcWFsMWZlbjY4YW94SE5uYlpzUkZZZFNmZGUiLCJhdWQiOiJnZW1hdGlrVGVzdFBzIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXpwIjoiZ2VtYXRpa1Rlc3RQcyIsImF1dGhfdGltZSI6MTcyOTYwNDgxNSwiZXhwIjoxNzI5NjA1MTE4LCJpYXQiOjE3Mjk2MDQ4MTgsImZhbWlseV9uYW1lIjoiT3TDrXMiLCJqdGkiOiI4ZWI2YzUxOGFhZjA4MDI4In0.llv99Zsa0lLVTEFUfQ2zMXc9agkkx4X6_Kkm0ra9efqoQR71RCTMlI70TvBwXDwsY0fVjbPWrKnB7wkNT-JbZQ"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

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

Body

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

Body

{
+  "at_hash" : "nWuA8pXne7YIv7q4mDvOMw",
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", @@ -867,27 +867,27 @@ "organizationIK" : null, "given_name" : "Günther Graf", "display_name" : "Günther Graf Otís", - "nonce" : "VaUvN3qal1fen68aoxHNnbZsRFYdSfde",
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" : "Gw7bkfQHGtexkNCfx_yHV_B6Wy_MgsR1",
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" : 1729604815,
Timestamp der Authentisierung
- "exp" : 1729605118,
Gültigkeit des Tokens
- "iat" : 1729604818,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1730127749,
Timestamp der Authentisierung
+ "exp" : 1730128052,
Gültigkeit des Tokens
+ "iat" : 1730127752,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Otís", - "jti" : "8eb6c518aaf08028"
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" : "7f0da35ef0a572a0"
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" : 1729605118
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJ4bU55RXQwcUd6U09zOENHTkV0Q1JDWmtXLW1uZHZ1cVdoRVg3ZlNRTjgwIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjMwIiwib3JnYW5pemF0aW9uTmFtZSI6bnVsbCwiaWROdW1tZXIiOiIxLUhCQS1UZXN0a2FydGUtODgzMTEwMDAwMTI5MDg0IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsIm9yZ2FuaXphdGlvbklLIjpudWxsLCJnaXZlbl9uYW1lIjoiR8O8bnRoZXIgR3JhZiIsImRpc3BsYXlfbmFtZSI6IkfDvG50aGVyIEdyYWYgT3TDrXMiLCJjbGllbnRfaWQiOiJnZW1hdGlrVGVzdFBzIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImdlbWF0aWtUZXN0UHMiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcyOTYwNDgxNSwiZXhwIjoxNzI5NjA1MTE4LCJmYW1pbHlfbmFtZSI6Ik90w61zIiwiaWF0IjoxNzI5NjA0ODE4LCJqdGkiOiI0MjZiMGE0ZGQ1N2M1YWE2In0.ehsvGu5TQT6zsQbaoMXMCR6-O5r1o8czl7FamEsEfjpZTA2We4u53wczUzXiZOo5wnV81f9TGRq8Tl2OeJ7uSg"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJ4bU55RXQwcUd6U09zOENHTkV0Q1JDWmtXLW1uZHZ1cVdoRVg3ZlNRTjgwIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjMwIiwib3JnYW5pemF0aW9uTmFtZSI6bnVsbCwiaWROdW1tZXIiOiIxLUhCQS1UZXN0a2FydGUtODgzMTEwMDAwMTI5MDg0IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsIm9yZ2FuaXphdGlvbklLIjpudWxsLCJnaXZlbl9uYW1lIjoiR8O8bnRoZXIgR3JhZiIsImRpc3BsYXlfbmFtZSI6IkfDvG50aGVyIEdyYWYgT3TDrXMiLCJjbGllbnRfaWQiOiJnZW1hdGlrVGVzdFBzIiwiYWNyIjoiZ2VtYXRpay1laGVhbHRoLWxvYS1oaWdoIiwiYXVkIjoiaHR0cHM6Ly9lcnAtdGVzdC56ZW50cmFsLmVycC5zcGxpdGRucy50aS1kaWVuc3RlLmRlLyIsImF6cCI6ImdlbWF0aWtUZXN0UHMiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTczMDEyNzc0OSwiZXhwIjoxNzMwMTI4MDUyLCJmYW1pbHlfbmFtZSI6Ik90w61zIiwiaWF0IjoxNzMwMTI3NzUyLCJqdGkiOiJhYTFiZjMxOWQzZDc4M2JmIn0.J04AQ_GMKC8dBcKvLhHwPwXoAPbu27UQnCuJajfUC5SkZm3EZkZ2eUvH5ojj5pdJJIZvufFWDElPYVVGv3KsAA"
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, @@ -901,13 +901,13 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "gematikTestPs", - "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604815,
Timestamp der Authentisierung
- "exp" : 1729605118,
Gültigkeit des Tokens
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127749,
Timestamp der Authentisierung
+ "exp" : 1730128052,
Gültigkeit des Tokens
"family_name" : "Otís", - "iat" : 1729604818,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "426b0a4dd57c5aa6"
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, 22 Oct 2024 15:47:01 +0200
\ No newline at end of file + \ No newline at end of file diff --git a/doc/tokenFlowSso.html b/doc/tokenFlowSso.html index 0944021..c43411f 100644 --- a/doc/tokenFlowSso.html +++ b/doc/tokenFlowSso.html @@ -511,55 +511,55 @@ color: #0fc5d9 !important; }
Gerendert mit https://github.com/gematik/app-RbelLogger
Created Tue, 22 Oct 2024 15:46:51 +0200
Created Mon, 28 Oct 2024 16:02:23 +0100

13 GET http://localhost:41367/.well-known/openid-configuration127.0.0.1:-1localhost:36429

13 GET http://localhost:37633/.well-known/openid-configuration127.0.0.1:-1localhost:42435

REQ Headers

Connection
Upgrade, HTTP2-Settings
Nicht verpflichtend
Nicht verpflichtend
Content-Length
0
Host
localhost:36429
Nicht verpflichtend
Nicht verpflichtend
Upgrade
h2c
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
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

REQ Body Empty

REQ Headers

Connection
Upgrade, HTTP2-Settings
Nicht verpflichtend
Nicht verpflichtend
Content-Length
0
Host
localhost:42435
Nicht verpflichtend
Nicht verpflichtend
Upgrade
h2c
Accept-Encoding
gzip
Nicht verpflichtend
Nicht verpflichtend
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

REQ Body Empty

14200localhost:36429127.0.0.1:-1

14200localhost:42435127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Content-Length
3118
Date
Tue, 22 Oct 2024 13:46:34 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/jwt;charset=UTF-8

RES Body

JWT

Headers
{
+Date: Mon, 28 Oct 2024 15:02:04 GMT
+Content-Type: application/jwt;charset=UTF-8

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Content-Length
3118
Date
Mon, 28 Oct 2024 15:02:04 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

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

Body

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

Signature

Was verified using Key puk_disc_sig

Signature

Was verified using Key puk_disc_sig

15 GET http://localhost:41367/idpSig/jwk.json127.0.0.1:-1localhost:36429

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

15 GET http://localhost:37633/idpSig/jwk.json127.0.0.1:-1localhost:42435

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

16200localhost:36429127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.3
Date
Tue, 22 Oct 2024 13:46:36 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:42435127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.4
Date
Mon, 28 Oct 2024 15:02:05 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
@@ -593,49 +593,49 @@ "crv" : "BP-256", "x" : "llCsbU1bEgHeTP_pnbOiOWQmo3e8ldncRmcnoldNfDk",
X-Koordinate des öffentlichen Punkts des Schlüssels
"y" : "ZDFZ5XjwWmtgfomv3VOV7qzI5ycUSJysMWDEu3mqRcY"
Y-Koordinate des öffentlichen Punkts des Schlüssels
-}

17 GET http://localhost:41367/idpEnc/jwk.json127.0.0.1:-1localhost:36429

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

17 GET http://localhost:37633/idpEnc/jwk.json127.0.0.1:-1localhost:42435

REQ Headers

accept-encoding
gzip
user-agent
IdP-Client

REQ Body Empty

18200localhost:36429127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.3
Date
Tue, 22 Oct 2024 13:46:36 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:42435127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Version
29.0.4
Date
Mon, 28 Oct 2024 15:02:05 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:41367/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=uxlc33mljnWKZGBo8EjVNRqhhb9HbSQs&code_challenge=4bBdGM7gxVFI8yXTksMmQ7exbiyM1-LYr5G_HsYIo48&code_challenge_method=S256&scope=e-rezept+openid&nonce=fl4ibNF3q-WBuo6NFlxhPCvNpp99SI8m127.0.0.1:-1localhost:36429

19 GET http://localhost:37633/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=RZGJSvVE3DLvWHvZgDdL0u0M3Vnd1PmF&code_challenge=d1IEe6mbDk0vZ-Xwj532Rg96-u9bx6mLOUh6ulwVxwM&code_challenge_method=S256&scope=openid+e-rezept&nonce=dUjxji83G_KS37Qglot3YgSnZdheOrtN127.0.0.1:-1localhost:42435

REQ Headers

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

REQ Body Empty

REQ Headers

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

REQ Body Empty

20200localhost:36429127.0.0.1:-1

20200localhost:42435127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Date
Tue, 22 Oct 2024 13:46:36 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM2NDI5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJILURzTkprV2pLLVo1eE5zSTlVaVRFWTc3emJqLWN1OVNtbk16bkU3dlBRIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImZsNGliTkYzcS1XQnVvNk5GbHhoUEN2TnBwOTlTSThtIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJ1eGxjMzNtbGpuV0taR0JvOEVqVk5ScWhoYjlIYlNRcyIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3Mjk2MDQ5NzcsImlhdCI6MTcyOTYwNDc5NywiY29kZV9jaGFsbGVuZ2UiOiI0YkJkR003Z3hWRkk4eVhUa3NNbVE3ZXhiaXlNMS1MWXI1R19Ic1lJbzQ4IiwianRpIjoiNWJmODQ2YzA1OThlYTI2MCJ9.o0GkyfT1csRV2PLzKeEsnhrMUagwb0ISlkaRCfKejtCjbEGHvxISAWsKEnRgCVzmtMPDSnX7dWDAzk5wLFmiNw",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Mon, 28 Oct 2024 15:02:05 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Date
Mon, 28 Oct 2024 15:02:05 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyNDM1IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJkZ1d5RTNmYUR4c0VJUkkwY1BCNXI4VTNUQk1hZGNIb21LMDIxX1hOYV9rIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImRVanhqaTgzR19LUzM3UWdsb3QzWWdTblpkaGVPcnROIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJSWkdKU3ZWRTNETHZXSHZaZ0RkTDB1ME0zVm5kMVBtRiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MzAxMjc5MDYsImlhdCI6MTczMDEyNzcyNiwiY29kZV9jaGFsbGVuZ2UiOiJkMUlFZTZtYkRrMHZaLVh3ajUzMlJnOTYtdTlieDZtTE9VaDZ1bHdWeHdNIiwianRpIjoiOTNkZTFmZDUyZGM3MDM4MSJ9.NG4NhdiMgiLFZe8kwP0ffDhaWtm6woXmuJ-3qzo62zYbIb7rDOAdJ2ubpUdBeWERDgiWHA__iuFZsZa9nrWDEg",
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.", @@ -651,137 +651,137 @@ "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:36429",
+}

Body

{
+  "iss" : "http://localhost:42435",
   "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" : "H-DsNJkWjK-Z5xNsI9UiTEY77zbj-cu9SmnMznE7vPQ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "dgWyE3faDxsEIRI0cPB5r8U3TBMadcHomK021_XNa_k",
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" : "fl4ibNF3q-WBuo6NFlxhPCvNpp99SI8m",
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" : "dUjxji83G_KS37Qglot3YgSnZdheOrtN",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "uxlc33mljnWKZGBo8EjVNRqhhb9HbSQs",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "RZGJSvVE3DLvWHvZgDdL0u0M3Vnd1PmF",
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" : 1729604977,
Gültigkeit des Tokens
- "iat" : 1729604797,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "4bBdGM7gxVFI8yXTksMmQ7exbiyM1-LYr5G_HsYIo48",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "5bf846c0598ea260"
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:41367/sign_response127.0.0.1:-1localhost:36429

21 POST http://localhost:37633/sign_response127.0.0.1:-1localhost:42435

REQ Headers

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

REQ Body

namevalue
signed_challenge

JWE

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

Headers
{
+content-length: 3978

REQ Headers

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

REQ Body

namevalue
signed_challenge

JWE

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

Headers
{
   "alg" : "ECDH-ES",
   "enc" : "A256GCM",
   "cty" : "NJWT",
-  "exp" : 1729604977,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
+ "exp" : 1730127906,
Gültigkeit des Tokens
Dieser EXP-Header muss exakt dem EXP-Wert aus dem Body der Server-Challenge entsprechen.
"epk" : { "kty" : "EC", - "x" : "dJFSW6zMLesqZnKZumvRfv9F4rx75s_o4UxHUU7WZ9g",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "mBjHVfWPueSe8de-VxoWU0VLnUhToW3BVVVz4scmkMM",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "ngIIOZg_U0LbdICMg4xKq85cr_oaLuprOrQIxEC8ixw",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "igRPvQ--ygAOKI_PWfo-7kD3E4xeqc2f1zOXIYW2ckc",
Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256" } -}

Body

{
-  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pNMk5ESTVJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKSUxVUnpUa3ByVjJwTExWbzFlRTV6U1RsVmFWUkZXVGMzZW1KcUxXTjFPVk50YmsxNmJrVTNkbEJSSWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNkltWnNOR2xpVGtZemNTMVhRblZ2Tms1R2JIaG9VRU4yVG5Cd09UbFRTVGh0SWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pWlMxeVpYcGxjSFFnYjNCbGJtbGtJaXdpYzNSaGRHVWlPaUoxZUd4ak16TnRiR3B1VjB0YVIwSnZPRVZxVms1U2NXaG9ZamxJWWxOUmN5SXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM01qazJNRFE1Tnpjc0ltbGhkQ0k2TVRjeU9UWXdORGM1Tnl3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lJMFlrSmtSMDAzWjNoV1JrazRlVmhVYTNOTmJWRTNaWGhpYVhsTk1TMU1XWEkxUjE5SWMxbEpielE0SWl3aWFuUnBJam9pTldKbU9EUTJZekExT1RobFlUSTJNQ0o5Lm8wR2t5ZlQxY3NSVjJQTHpLZUVzbmhyTVVhZ3diMElTbGthUkNmS2VqdENqYkVHSHZ4SVNBV3NLRW5SZ0NWem10TVBEU25YN2RXREF6azV3TEZtaU53In0.av1CCCNsO6P7K_69ldmrC-3HtdOIf8RX6MBiOib7BtdEbLwOWXhRPL876D0AFmRXpdKnp4bMmH2i5Xw-i5sTRA"
Ein verschachtelt enthaltenes JWT
-}

body.signed_challenge.body.njwt.content

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJ0eXAiOiJKV1QiLCJjdHkiOiJOSldUIiwieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwiYWxnIjoiQlAyNTZSMSJ9.eyJuand0IjoiZXlKaGJHY2lPaUpDVURJMU5sSXhJaXdpZEhsd0lqb2lTbGRVSWl3aWEybGtJam9pY0hWclgybGtjRjl6YVdjaWZRLmV5SnBjM01pT2lKb2RIUndPaTh2Ykc5allXeG9iM04wT2pReU5ETTFJaXdpY21WemNHOXVjMlZmZEhsd1pTSTZJbU52WkdVaUxDSnpibU1pT2lKa1oxZDVSVE5tWVVSNGMwVkpVa2t3WTFCQ05YSTRWVE5VUWsxaFpHTkliMjFMTURJeFgxaE9ZVjlySWl3aVkyOWtaVjlqYUdGc2JHVnVaMlZmYldWMGFHOWtJam9pVXpJMU5pSXNJblJ2YTJWdVgzUjVjR1VpT2lKamFHRnNiR1Z1WjJVaUxDSnViMjVqWlNJNkltUlZhbmhxYVRnelIxOUxVek0zVVdkc2IzUXpXV2RUYmxwa2FHVlBjblJPSWl3aVkyeHBaVzUwWDJsa0lqb2laVkpsZW1Wd2RFRndjQ0lzSW5OamIzQmxJam9pYjNCbGJtbGtJR1V0Y21WNlpYQjBJaXdpYzNSaGRHVWlPaUpTV2tkS1UzWldSVE5FVEhaWFNIWmFaMFJrVERCMU1FMHpWbTVrTVZCdFJpSXNJbkpsWkdseVpXTjBYM1Z5YVNJNkltaDBkSEE2THk5eVpXUnBjbVZqZEM1blpXMWhkR2xyTG1SbEwyVnlaWHBsY0hRaUxDSmxlSEFpT2pFM016QXhNamM1TURZc0ltbGhkQ0k2TVRjek1ERXlOemN5Tml3aVkyOWtaVjlqYUdGc2JHVnVaMlVpT2lKa01VbEZaVFp0WWtSck1IWmFMVmgzYWpVek1sSm5PVFl0ZFRsaWVEWnRURTlWYURaMWJIZFdlSGROSWl3aWFuUnBJam9pT1ROa1pURm1aRFV5WkdNM01ETTRNU0o5Lk5HNE5oZGlNZ2lMRlplOGt3UDBmZkRoYVd0bTZ3b1htdUotM3F6bzYyelliSWI3ckRPQWRKMnVicFVkQmVXRVJEZ2lXSEFfX2l1RlpzWmE5bnJXREVnIn0.MBnsgt3s-DW6N6ubfBjn57-6Sqp0rQ3SzDzQwVNI6qFrw-ztrCsj4qE_Yw3ws16aoMVamErC6xzZT75notHpRQ"
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

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM2NDI5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJILURzTkprV2pLLVo1eE5zSTlVaVRFWTc3emJqLWN1OVNtbk16bkU3dlBRIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImZsNGliTkYzcS1XQnVvNk5GbHhoUEN2TnBwOTlTSThtIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJ1eGxjMzNtbGpuV0taR0JvOEVqVk5ScWhoYjlIYlNRcyIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3Mjk2MDQ5NzcsImlhdCI6MTcyOTYwNDc5NywiY29kZV9jaGFsbGVuZ2UiOiI0YkJkR003Z3hWRkk4eVhUa3NNbVE3ZXhiaXlNMS1MWXI1R19Ic1lJbzQ4IiwianRpIjoiNWJmODQ2YzA1OThlYTI2MCJ9.o0GkyfT1csRV2PLzKeEsnhrMUagwb0ISlkaRCfKejtCjbEGHvxISAWsKEnRgCVzmtMPDSnX7dWDAzk5wLFmiNw"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

Headers
{
+}

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyNDM1IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJkZ1d5RTNmYUR4c0VJUkkwY1BCNXI4VTNUQk1hZGNIb21LMDIxX1hOYV9rIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImRVanhqaTgzR19LUzM3UWdsb3QzWWdTblpkaGVPcnROIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiJSWkdKU3ZWRTNETHZXSHZaZ0RkTDB1ME0zVm5kMVBtRiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MzAxMjc5MDYsImlhdCI6MTczMDEyNzcyNiwiY29kZV9jaGFsbGVuZ2UiOiJkMUlFZTZtYkRrMHZaLVh3ajUzMlJnOTYtdTlieDZtTE9VaDZ1bHdWeHdNIiwianRpIjoiOTNkZTFmZDUyZGM3MDM4MSJ9.NG4NhdiMgiLFZe8kwP0ffDhaWtm6woXmuJ-3qzo62zYbIb7rDOAdJ2ubpUdBeWERDgiWHA__iuFZsZa9nrWDEg"
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:36429",
+}

Body

{
+  "iss" : "http://localhost:42435",
   "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" : "H-DsNJkWjK-Z5xNsI9UiTEY77zbj-cu9SmnMznE7vPQ",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "dgWyE3faDxsEIRI0cPB5r8U3TBMadcHomK021_XNa_k",
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" : "fl4ibNF3q-WBuo6NFlxhPCvNpp99SI8m",
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" : "dUjxji83G_KS37Qglot3YgSnZdheOrtN",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "uxlc33mljnWKZGBo8EjVNRqhhb9HbSQs",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "RZGJSvVE3DLvWHvZgDdL0u0M3Vnd1PmF",
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" : 1729604977,
Gültigkeit des Tokens
- "iat" : 1729604797,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "4bBdGM7gxVFI8yXTksMmQ7exbiyM1-LYr5G_HsYIo48",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "5bf846c0598ea260"
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:36429127.0.0.1:-1

22302localhost:42435127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Content-Length
0
Date
Tue, 22 Oct 2024 13:46:38 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=uxlc33mljnWKZGBo8EjVNRqhhb9HbSQs
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Mon, 28 Oct 2024 15:02:08 GMT
+Location: http://redirect.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyNzc4OH0..KwxuEq-LqN9KgKc2.JgwqGl7eJOHon-2yfaD6SvVTr55XiAVeIhlxs4QU9i_tlsAUTtDw42mqoOx4tOc6VA1lBMPAjcOlxaEXYc8yNlnhYXp1KTVf2IbSnpLWGs8_dUfJXMEPr6P99dt-2W_JsY1vrxbvKmfL5TaBuqxGeFeq_gYQUh3c4CXzTBe9Be9GJJHryuUNMFmbnMPO3NjYCkg8C6mhV1kTb_siH47O6jDzruKrBNUAr0z6sM_t9URX8bBboJxqWLE_RiH0M7oYIb-AqZ_u-ENJw3PFlCb6LN04kgHcB6MUAsgpl923BYsrYu-PL-L69BuFQ27oAZMdANKtR46KQp3dNTIFRdxzDQtFap3qReVTsTOE8mqMYekI3lZaJTdVODvE7WxQk_71_0zzryYs6XgxBQSQBLOG4UxQnuIlYtRWa5DnQBOujMNGnqKfqBCUK_4oQffr4kyh39e03m8um482kuLVZqcrahEomKwgy76-htDvmEZ25k4N3YBJ_5JSBfWQWuWBZm0GtG3UWqdlHdKQS5sRxGTP9HLXUHCLCTouH6QOLIeZTlDS0zHSi10xy8FD8asLgUhx62vTSqBwkcqEDunIlGZ7nGspPIgkr2Ix83LlD60ko3Db6mSNNY251fWwo53fqNdzewRNNI17-o_gnXM-xi_bpW4AikLViQHumVTPxk-kRiZfHOXQbDe6AdUKqJ3mUNEsUPOlcVyhjppx-Ki0Don4e2Gp1a7-L_oAOmUgOBojXR-V6H2ogCPWemNGpdQWiT1k9KnA2qFMH9ploqWSIaWx2c8QkH7PQZRzPw9eWt-aG1-tpvAUFp-Tf5F8XT5WOfSuNX2UIhCkYxZ09ARnY11qCA22LSWsGD9F0i9vWiPS8y8xPnQr8v4vt0LpdBTxHbVroAcaUmsj3zJ5J84WXCkJ7_vPqYrzhmsTYK-AmLzQpfY-AFv4sGyaKwQrWtNjVOBeJdS0PCNv50QDwGa55V8M7JF7U-E8YXNERRwam0BGXRs2k2yG8X84S26oB2jHn-xX6stYogSHXfPTxeepCtznCKP5WELIv8wEHTdqexLKL_LLKOb7K1Yal_CJsBweyn75OAOUZUk8GvBxJus31zhPsCOuDGqy6YZ7Sc5sJirirlY_iXemklP2IpPg39UYI2dmPa5bKLQpUgnq1TNnwSsxr-Sqzt0ZJE5V8BWEGNpOWT7Ck4Orb2nVweMlaplA4xBjvd5IgT8pnKOUHRaRcEPeBirTjl4k5s4Far5fCsyDsI5BUL9PtF6dEyBA3hEm3LRxW-d9oYcRq7jyH8R9sXz5VYwPEWG3qyc7KhedCUUxiCHxaYrZuiNHZtG6ZYye65Zu3ONKmnxTjspM0_UjmpAqDo_-pgj2P2zPhOdQHCZs29tr6rhsL0bKRh9JZiSXFLjz5fkn-LdlFrzF9O6xLe7_7Bo4SNq8SPOs46arV6ca6rkfV8lzGOn9E4_JcD3SN0UI.DiKWKBLY9cDwvfIono8v2w&ssotoken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDE3MDkyOH0..tpx83gOaYiWcicp0.9nCp6R_gTAIqLGDjcgC1djV6kKhx63wF3OGePbAUA9HWpKuyfzw4TTMYZFEErwVYLjrHmOKPg2-e_Bl73M197Z2Wr_4AXgjf3_I_EnN-tI-1xaTpsenIc3DZAMfB01mphFSYhkqDZY5zfKFlvgzVKVsTub-mW_uuns0WCNXHB90Kta2j4UDL-klqEWw_-ujKfdSJLvACZJoD_0_70cdOMKyOoX5c24hGb0Xbq4iCFko1TRWaCSfX5yfoDNm5PfuSU1o2al0AJ7sIZo_O80yo39tQ5BTQX7DtOCxpvLd9GPGLsf9sQnO4Pexo7cJFG0OzzKf1dSv4B8ZIl2ABI4MJB5CpV_88rhjrLd_jfjd2eVLUIyoZqZsMX_5RcB5SHvnXS30ei3eq8OPiTO-YCIBOvSfrYNboUrxoA48k-9RMFNtG3BrG-d6uXKuMk60YTqKZqwTkOvyND7Gg8puYE5TqEhl_MR9zl537zmXkobqrlKKUWpQF7tJHhcXuf7TzSvDiUvtJSvJkkTD-FujiIyPQmZRyHVoBG-fNWmnG3xKPYnfgJtc-YuCJFE6ygW8ZXSdxzYuSlTjqwdObk6yN1NK8SrUwfuHrtGdHtOSLibqdcfUndBr082DwYrtxehRmwHu9H-zFxuvudUiSPPK8zEIfPXtFQXmvSFzmL-TYp2qgRXJlx9FHo0-DR5vClnz5BT1AY0UFYhK9cau0Erai_cgiwCkATuf0Up8WMPLSq7igoGHoVfUM-DO7T_yBRuzOUq1-pMxNr3i1sNBTilNqmlrJMZi81sbUwlZNt6zP8lVQUPlJYKq0Lz-AMri_iTsGEHtGRPbU5ptkJtPpHcF4cDKlBvQIYMjqoZqiAvfWH_USeLSGahMRYa-1jgdro8w-y1_bCVKB5v4SAEsmgkf6GD6W5wZ2SsvGmNwIZrfJGK9DYUwJcraxNTb_mECf_d5s3YNLMPOM7D3osME_dhY-yZEu4d6_GziEEE_X2TVb4fbor8jq4urJUfLk3_ffFZ3DeiWfoUxOaP2N_JnbuVdbQND2CmtuLqTLN391k5Uv6aQCrhsvbmd5uN5xglI6gFV7mq_8E4um8_fkf-GxWJkFHgRqnQ_b_iBd-faW1vmn3lrjLPh0_FXUMc9MByMWaSiw2qFrOnzSKx6I81sproeVlUUt8aR8IUHaeclGV4Tt3-9-8ok0cDyJ9Od0Nn9-05tP0TSNkBYe9163JmZEJnxURCel2r-uaQeLK-NSt-Ir8H0YmyN-7Lx0zfbY0P0ELcnQEaGg1qvGo99-HaybSgdXvjzZgq0ABrHFSlzX4IDifVqgH-eSqy20Mu6Q-KiAbcCd9hDZYTthajay2d4fk5Cxn83O_mU6JRmXzCpS0eZlzZLyMN3cnVhRYDk75kzaBch9OaKUaj3Gg-kMQcvbEzo4xxhuvPB3DPh6aoxeKzL_zOm9R-oASTxP2D41BOrK61W5Vv16XrOmrHqTiTTKHWsJJJpf1L_eCS3VRHCi0Ok-xBlWQEoC2FO5IRyvnxGQnmegGv0TRbOPlBxjcenLiPUInSDKGF273DvyDTsxE9xJ2Iq1JOeNA8B-I1jN70RAOALuvZKJQnn9Xim4UlePceKnrqC5e40u0Tr0JVjIJH55zImenWPX12Foy9E7k_CdKHOeD9tiKWS6TPeuh9ZpNT29rtpoBEwYyXlgW2Z_Y93zY_HU_-kC_zSh60nHW85cGBekrXtqVH8mZ1fG-4eBQTt-B4epZzbFMZRMhaICvEHsuoNKqhPBIaaW53Nz_0m5T21672KEqT6v7qZyZQIER1J1ERcJy3gRwePotwdX3fgsGJlRBqMQWA5BX9KcdTMy4XPWVfAwXTn3WlXP9ISTYUlr2AgJrQ2xr9mei_xQN6m49I42yz-9oZRI8tMcBiNzXlvNBjZzFu6gzwoHHMXWnvIQxsECF4-6KSlSu2Q4oS_FzznfZ8fPf10k5HXHmWxxSr0KDkKcd19KrbcRA189Oc9J-5vvRRB6ANYuZm8AE3rxIyqWHfecISiBJB7PPpwBh2T2AT6zB__Dk6YAHhRMPzhsbBxqmRsjFlwywfw4eMCVuw6-iL6BC0KBA9lYNY4-WpYFwf1E0ym_eoUY7Ej0donRafxRPzHUZvn6u2Y5mdnKbGlPBFvmLHSp8Pfz-bCDki5P62fwQ_W83OneysH0sFvf2WNZBxZJnVyIghqBDebMIpbcYpkCXUQ6Cqq6lghTz4x80R9rR5JFe6N5X-zpcje6BNmEOk5A03PDxX8WzJxBR2iEQcyIEhnMdRDxxrdidAGxx9weC0No4kZq6kRU-Yrz7Q6-_e1bkTwtF1C4eVQg7URtKEq4m-xTlo8vYjAysJjd2ksf4VYD6pu1Mf6LhDgunVk0RKR2NkI7rqJQjlqP5eK90Dkp_bbFYg-OsCq_kKbTu2ohIkZc6-5-PHwt_v_SariPlfVchzRMYuM_lfIj6ASEIuizIOh5NnveiyMqdZvc3YWJSA2eXv1kIDXgGrTA1gDmqkBMI7lipjzjwR9lVLqPUXbkLrNOlHal8LGl0xnNlOc_PcBIvwyKzrO1heCm2_0MozUn6radJNEbPCo87O1Srf7UbnU_GbXPor9VwE7a4Ghu8QLg1F6iRyNwQFTk_-_kc0Y69yZGvgOs2a5fTEiT7IF4eTAH6_srqiiJ5Lew5Boq4VjrCDpzHYs4j3SlmbB15AWI25Ei8vZ3qCl9rycWGDq9dIbMyDlHiCyFztvoP5N4KvSHOk_Asnnj_hT4GSr3tuptztBMIYD6VHys0rzUv_jo6vAfn8k3ccp9ex8eRCk4AagmwW4-ajL8wSpT3ZF9BGvyu1KqstbnKFWF6sI26eYmgedLzT5Cz8iLUnmEke2_ssCrZqZa5tBU_ev3-jpQPlinV8iwfRAtt_V0pxSM1gu0L9FvNVryOyGxfgiCh7aT9Kfe7hXxe9psm_pWTu2_JTYi_d7aQQJgY8sQ-Hx2lkcMJQBlfB1iPLbIe5sy3Fvygdh_m7abHv_TIAgJd4dejkLr7YnM1tnBsWSkNNMa42wr4vCO-BW-RMPiI9Pa8TOknxX36LrGfQfT8CyHd-cuvzQj1JwKKmPEITNT._0IIg5o9CA13Ut6JWP3nKw&state=RZGJSvVE3DLvWHvZgDdL0u0M3Vnd1PmF

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Content-Length
0
Date
Mon, 28 Oct 2024 15:02:08 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=RZGJSvVE3DLvWHvZgDdL0u0M3Vnd1PmF
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" : 1729604858
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNjQyOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiWHhEMWVEUFI5N0xhMWJQN2FlNGFfQ2xWbm54YnRRRjQiLCJvcmdhbml6YXRpb25JSyI6IjEwOTUwMDk2OSIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJmbDRpYk5GM3EtV0J1bzZORmx4aFBDdk5wcDk5U0k4bSIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcyOTYwNDc5OCwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoidXhsYzMzbWxqbldLWkdCbzhFalZOUnFoaGI5SGJTUXMiLCJleHAiOjE3Mjk2MDQ4NTgsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzI5NjA0Nzk4LCJjb2RlX2NoYWxsZW5nZSI6IjRiQmRHTTdneFZGSTh5WFRrc01tUTdleGJpeU0xLUxZcjVHX0hzWUlvNDgiLCJqdGkiOiI5MzY1MjdjMTRmODYxNWNkIn0.eUMiC1UNgo0ksmQCr_dquE_9pvAXwM4t0yesJX1YFhxY8WVZ3rzJ-JgN3_mBObfhPU-ztZ_riGdzvhhzwj54fA"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0MjQzNSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiX01tMm9aTjUzdlRBWWFZTENGT28xWDFyTWNrOEoyTnAiLCJvcmdhbml6YXRpb25JSyI6IjEwOTUwMDk2OSIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJkVWp4amk4M0dfS1MzN1FnbG90M1lnU25aZGhlT3J0TiIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTczMDEyNzcyOCwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiUlpHSlN2VkUzREx2V0h2WmdEZEwwdTBNM1ZuZDFQbUYiLCJleHAiOjE3MzAxMjc3ODgsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzMwMTI3NzI4LCJjb2RlX2NoYWxsZW5nZSI6ImQxSUVlNm1iRGswdlotWHdqNTMyUmc5Ni11OWJ4Nm1MT1VoNnVsd1Z4d00iLCJqdGkiOiI0YWM2MjhlNzZkZTY5MDk3In0.pU5T8QxfIxcmgUEzDZ_-XNc0VvFo9ni6IvhZCv7GQc8fQ1Yd0mM_2-Y23gNkTOBX8nKRjvyW0r-LSk_mV6Zvxw"
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:36429",
+  "iss" : "http://localhost:42435",
   "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" : "XxD1eDPR97La1bP7ae4a_ClVnnxbtQF4",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "_Mm2oZN53vTAYaYLCFOo1X1rMck8J2Np",
server-nonce. Wird verwendet um noise hinzuzufügen.
"organizationIK" : "109500969", "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" : "fl4ibNF3q-WBuo6NFlxhPCvNpp99SI8m",
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" : "dUjxji83G_KS37Qglot3YgSnZdheOrtN",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604798,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127728,
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" : "uxlc33mljnWKZGBo8EjVNRqhhb9HbSQs",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1729604858,
Gültigkeit des Tokens
+ "state" : "RZGJSvVE3DLvWHvZgDdL0u0M3Vnd1PmF",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1730127788,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1729604798,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "4bBdGM7gxVFI8yXTksMmQ7exbiyM1-LYr5G_HsYIo48",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "936527c14f8615cd"
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" : 1730127728,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "d1IEe6mbDk0vZ-Xwj532Rg96-u9bx6mLOUh6ulwVxwM",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "4ac628e76de69097"
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" : 1729647998
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3Mjk2MDQ3OTgsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJleHAiOjE3Mjk2NDc5OTgsImlhdCI6MTcyOTYwNDc5OCwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQifQ.KubCaPu6XptGcqhh5Ne3n5URl5JWh-rzkGCNTtP1ZVtGrog0juhBnpyjDdIEKMCKXy1JnbQY37g3wWdTYzoGwA"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MzAxMjc3MjgsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJleHAiOjE3MzAxNzA5MjgsImlhdCI6MTczMDEyNzcyOCwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQifQ.ZwJI9gwavsaAti0QBAOZbCz4BHBslcur1dm2KuoA1MVxtfxyHadt0U008x3J-j4cBXfD0-j6n3UhWht2XvHNZQ"
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" : 1729604798,
Timestamp der Authentisierung
+ "auth_time" : 1730127728,
Timestamp der Authentisierung
"amr" : [ "mfa", "sc", "pin" ], "idNummer" : "X110411675", "iss" : "https://idp.dev.gematik.solutions", @@ -795,100 +795,100 @@ }, "organizationIK" : "109500969", "given_name" : "Darius Michael Brian Ubbo", - "exp" : 1729647998,
Gültigkeit des Tokens
- "iat" : 1729604798,
Zeitpunkt der Ausstellung des Tokens
+ "exp" : 1730170928,
Gültigkeit des Tokens
+ "iat" : 1730127728,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld" -}

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

RES Body Empty

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

RES Body Empty

23 POST http://localhost:41367/token127.0.0.1:-1localhost:36429

23 POST http://localhost:37633/token127.0.0.1:-1localhost:42435

REQ Headers

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

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
{
+content-length: 2163

REQ Headers

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

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" : 1729604858
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDozNjQyOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiWHhEMWVEUFI5N0xhMWJQN2FlNGFfQ2xWbm54YnRRRjQiLCJvcmdhbml6YXRpb25JSyI6IjEwOTUwMDk2OSIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJmbDRpYk5GM3EtV0J1bzZORmx4aFBDdk5wcDk5U0k4bSIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6ImUtcmV6ZXB0IG9wZW5pZCIsImF1dGhfdGltZSI6MTcyOTYwNDc5OCwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoidXhsYzMzbWxqbldLWkdCbzhFalZOUnFoaGI5SGJTUXMiLCJleHAiOjE3Mjk2MDQ4NTgsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzI5NjA0Nzk4LCJjb2RlX2NoYWxsZW5nZSI6IjRiQmRHTTdneFZGSTh5WFRrc01tUTdleGJpeU0xLUxZcjVHX0hzWUlvNDgiLCJqdGkiOiI5MzY1MjdjMTRmODYxNWNkIn0.eUMiC1UNgo0ksmQCr_dquE_9pvAXwM4t0yesJX1YFhxY8WVZ3rzJ-JgN3_mBObfhPU-ztZ_riGdzvhhzwj54fA"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0MjQzNSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiX01tMm9aTjUzdlRBWWFZTENGT28xWDFyTWNrOEoyTnAiLCJvcmdhbml6YXRpb25JSyI6IjEwOTUwMDk2OSIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJkVWp4amk4M0dfS1MzN1FnbG90M1lnU25aZGhlT3J0TiIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTczMDEyNzcyOCwicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoiUlpHSlN2VkUzREx2V0h2WmdEZEwwdTBNM1ZuZDFQbUYiLCJleHAiOjE3MzAxMjc3ODgsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzMwMTI3NzI4LCJjb2RlX2NoYWxsZW5nZSI6ImQxSUVlNm1iRGswdlotWHdqNTMyUmc5Ni11OWJ4Nm1MT1VoNnVsd1Z4d00iLCJqdGkiOiI0YWM2MjhlNzZkZTY5MDk3In0.pU5T8QxfIxcmgUEzDZ_-XNc0VvFo9ni6IvhZCv7GQc8fQ1Yd0mM_2-Y23gNkTOBX8nKRjvyW0r-LSk_mV6Zvxw"
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:36429",
+  "iss" : "http://localhost:42435",
   "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" : "XxD1eDPR97La1bP7ae4a_ClVnnxbtQF4",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "_Mm2oZN53vTAYaYLCFOo1X1rMck8J2Np",
server-nonce. Wird verwendet um noise hinzuzufügen.
"organizationIK" : "109500969", "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" : "fl4ibNF3q-WBuo6NFlxhPCvNpp99SI8m",
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" : "dUjxji83G_KS37Qglot3YgSnZdheOrtN",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604798,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127728,
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" : "uxlc33mljnWKZGBo8EjVNRqhhb9HbSQs",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1729604858,
Gültigkeit des Tokens
+ "state" : "RZGJSvVE3DLvWHvZgDdL0u0M3Vnd1PmF",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1730127788,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1729604798,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "4bBdGM7gxVFI8yXTksMmQ7exbiyM1-LYr5G_HsYIo48",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "936527c14f8615cd"
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" : 1730127728,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "d1IEe6mbDk0vZ-Xwj532Rg96-u9bx6mLOUh6ulwVxwM",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "4ac628e76de69097"
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" : "NN-a6dkDr7LKPmVTCSPFjpKNdoYhrY2JjJK9QJbZ_QI",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "aTxrVFBN6h_XWRGvCEJwo6MvQX1jC5F0mXsG7N_Uomc",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "TV2pvcfDkG-ThyNQJzwat7_sP9RMGWtn76jMoY_dgJk",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "CxRjl7oiL--AomA6oFTR0PuVESX9FGLy6o9LfXXrE4M",
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" : "Z0kg9jR8DujhAANVibmIk1d9gmHQZyWHZJHf-0rn8E4", - "code_verifier" : "AeT1gV01xxySEDqwSRNfLcTmKJ1jGLA6-Wvr0GxGIOM" -}

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

24200localhost:42435127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Date
Tue, 22 Oct 2024 13:46:41 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Mon, 28 Oct 2024 15:02:11 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Date
Mon, 28 Oct 2024 15:02:11 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcyOTYwNTEwMX0..HU5njJ_LZgwAYaSK.e53jQCjOwjM2tgRdtE29KQvKnwFd4Az7fkVRimaxse7PyzW2RWb-AlFspHruamt27zl_mBOUPkFv-M_K7CGs2i6x31IYrA_Am1_D4EUe54-U3sfquKUs-i8GQZOuxe2YIwFeOybHpBYxhIHI8cO46kljwmjz3KAu7Xmfmctya-_CKWzFEI3LH_h4QigaTDnoHUOns-H_6CC5GjImM9y7BRk5hQAvjNz8O2b14tlF2FTpiWsmLDLw1DUb0uK62TZ7pSd2z2a1SOml1WcCo2NF6RlKGIgRiEWbpmdFe-fSDF0oGyxkfWCJ3IddqMqz-0cgEC_DJ-ofl6l5uw4fcAVpo9kDhe1LfFEuTv98N_AKHVt2LgibX0bMfYIFQDiguVQpGOSGVZF7uTxywGXwQKX1HJG4Jd1txJroJodbaYNcFUap9sQaGWB-A6mrLnTOgRaEStI9ZZqBLWFpN-DtBnu2oKzOmK45JttyeneIYj-Hf4RoikWSSr9wqkLVEuDhcnfTmtkYPhxmrKb124owhkbauHpLcCjDQ26W1hqsNF9-_JZw_M3IerRvTOAVgWF20eTjOSqU3W20agn9DtKhFoID0OYXybb9t0w9VjVSDoBef2iYi_vhj-YFddH59jb2t8U-m4uXcY1UXZgnqXdc9MxoMCeFlxcM5L5F-xZytK3LvRIYriuySqi0J-Kqu6loC8-ekC5-fs9f0RAI9CR5MSLOJd_b0MdCyVOvPg03mdHpTVk3DFDO__Pq-YwX9sLarYRAf2Kq_DAdU1nmed9rFyPLekTbM5qjeB2EnsQMv4LjuyLISxScoxhABgVhTA8GvL1PVnoX6c1AlNNvurkmjQsFBGRW5Ph38pUpOK8KZFwbw3LVLaXAd6YIH9iapggDhgX9YU7yW3arPzb61cceYZ8QWMdi-5iVnaDlZ5-oMJjrgnBySmJzJIY0CpQ9ybJud6OmDQFrzJ-h-7IncfisZ1mxxSBRW7ihzbaiADnduPk7HnPDmg3paGLMn9qb7sVV6Xt7i7UC4c6J6LX4UTAAnWvOO4YtwVMHd9HNtjotwldXDZw13LQW5S-vWeJRgF1dIP07kRS6N0MUNi5WDl9o42CPHU5tt0oq3LyjCtagAdLFNXTUnT2yfwbP7jD5KAqp55RzUWsaLfG4-ojRdvGGRLVfmGA48_fVgicOq4xLnCU0LFTJ3aC3H1B40HBJSFe69e3-HPF7hvbF5DLHusSNR0FEoFWbkk3VNFIOfV40hVCClWRS_C8jHJImQ6dx-OK3yLwKDQf2rmzEHto.gBbupsTfrB7CO3FBze76wQ",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcyOTYwNTEwMX0..Y8y_-vqbjzylec_0.AQNRAowLtX2yYNCqgexi3eBEjmEpI7gZ2kSi24dcrRc-hZcJROBMa9dsWftvR_1z0VtTAutAZ_Inkn2NkaCInCePsr09uJZnYGwrcgdgk_TMLrHkmQ6CO9aEhFV4FsaTL7dIMPng-kHo3vyw0HNzxT6jrAN8IwZxurY6xa80In1ThSVapVj0zBQkrdUOQe1qVSPvoexzitKjaPK-DFlaEDzZZh_kaCR3Q6gbpl9VfLsqrd6zV3ghC6CuqrH_OevZKqitduVMNoXpoythcn1q9CVkjL-fyTf4Aq6UBsy46dhsiLCnLZTrT7QCki_ZUAwaRRbAGD6Zt-QnsPtXeEz_3r5vXqoGDMwySpHLGBugWXQcC0Y6e9oQ1FtaYZoVhHmiBkw9TOH6-CpNHZ0w7OHhFtpDkfFEczvikAuO974I0gA3O-WpTlM1PBwLUr0fjt7OLKiOWWyTHmuec3Kvx166XriG6i2qRcY48puHrYscVqp6wjPidfnfjbZ0SINDFetJqSm48YQecl-Ho6_Ea2sVengLcNjqj8A77OlND1mNqQRK7tSo_2nnsd8o0_suyVMW5oe4gN_wg56E8kHa4sPijXtgjVzC5EzOKdNtN61ZG1sW4EKp3xVPhHHToV-uR8uzI4QL9icICfkFg-YRlz5mBtaiPIJIAwnXGNgyF91ZZ8Op0qJW4WbsYcLNvjOU8IdB6yr2zQoC97aHUBb3dbbfPG9gDDr5bfljbYCglDf43S0XskcPDoYARC3fvRn3Cm4M03APJZ6XL_SeIMd1XAVG2pf_31oRHNTt8MkuDwU0dyhGkbDjTks1Jvf1Zl_tGLEbvfejya05nTGB5_qBieREtIaJ3ZRDsHDh8xpH_cG6XLm0xk6CDg6PQKrQHQyYfEsim45-5JNgcwBbhl_hrNK9odNGdIW9ooXbvXInWCd9QvOvJUUzV17yHXNbOhctyMdOreaKXhGk96zALp0SNynTKX4fiidhWFdOQgYIiMrBghUFIxRdJesoqCq7iUoubPKQBGZ5kH7KEPhkP3pi3KbkPSX4LtLG7UEb6d9n2LjSJEPfmKfJFbFU1UXaJmBiZoZJ40J7qOH8GGzVT7W4F2F-PY9R5zERUjK21DJsv1XiRUIAjOosOxk5kJ2gE_CAqS-Dw8q9G8QLdubODh3sDdnkkv4_YYPX-9RBwE2_NAqtckXSoNVYz5TALP1CE385TjXU9sIQbtXdGSR882zFd9yF51DQPu8AEk3_mPJZWpWa_SAsoftEmvo6x0aIqj_6sSmpUx0HatpzDQVtV91DKpp5hODnulQbJ6Z1ZZ8v7kW4K6c.jE1SJUHCDulfAy08_b16FQ"
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyODAzMX0..2LyhGn7gsW_GyRiM.ywSrT5o5pEEiBxUnkWEmF33MpFR3zBTjhdITYemgADSbmPNYtsUCZ6VVDb5TUo4whts9HxBW6l177GS0Hkxf6Sz1YYWv1FcfptN6Kf9OTzTsvbzyuxCMhCwBpRLsO0J2ODIggqK_tRPn_l8k3RsNywFfIJShBuS_aRTCt829KqCKSqHlLSE6YPBUtg3qBMPvrious0z3nMzq4lL-qbi6J2JoiUFdeMyYXiDkBxOe9yW4i9vosbcIExpoOrkBhPhjneYmLDqsj1nQGWiuT_0373H3UWZ9ntB7c3ngEZ30Nm8Kpaq7DwSdoRx8pHJP9Pr3kJByiZ61s3rUZAzTiT7f1vmG5KkPf7mNEEsur8FjZ06p-yLnpVGBP0yPk8GGEOnd-ps_dUl500SCGrz276zDzDVxxuwBN7KRrSvJszG0byZ-lA0gi5HIUfdRCs8tChERJQq_L1n4KFCIk-k4dBDKDdp-QJH9mFZPwRbx_dViJJqbwjgye4-LYQdoDEKy5iL23Fgo5c_Adz9xu5wyA0T65LK9huhXZkYJE21Tz_QU1_17ON8AvyyWgrsDTpOv0HZrN1w-nYKITDF_IE2uN1OAgq2sZfvUWRSh54v1p65hJpLyzcjLvWEQ6CeKBgeU4-flu3h5hcmALWE-S_jVwz9fo5vPiakgYrrgPGTI99wFymwkVwi3-N1880Jdx3svYf67_SU0MhVDS_2E0gVwnmIlkXF3uKq_58dzg_p_MYWtQO9isIQMxfFXe8zSbQIcRwsSwEWk6awqt3cX5Z23TYs53znJraDzhdm_Orh4yevRKNyIKa7eCmbZw4PfFm-NkDsvOJLLPk8Mk0SQ2ffYsCZg6o_RGwN0-c7t8o1SE6jXfCXGJsAceDwfTP9YFtd3vQyfcaKqo4MRE7XaS6vONgV7yr7vXxapQJne78yk1rjPchEG0s4vaSUrFKQNEahyKEABMXrR2PyDBaMh8w8yDjWoe7f9gKzqdJmW7eJBa6sphBU_vzXdRj6zvb6DCG5wW3lhB1yEdT8TLq1gtlBBIv9EDdtArx8O14FBTAFJR1xPaVxndtHmDqT8iUanDXgWtGL5u6yCmpz_q_sPvDbN7b5w6xOMeWo_noZMPjARn7sAD64q8uqVpAg7Qd2pqy45lrmJBWMxLtb0xXzXVC2tTBd6_NBxwBxW8cn0nglebA-9lfHxC5P-UN73W3PS8RZ9svC8Cz-ZVoYfOumz5UyaLeYq3eknj_UOu9dN0g0R2kmKPX3B7Oc590Y4O9R7HWJX94Pu3SiSlCxs2NU.YXwquxiWWaPpJ06upLTItg",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyODAzMX0..5BpatHXQmUDqhuHk.TrSTobXXMioNrlNQ350oA8-A09K37ffX60OQmeFNDH7cvVVDe35TCrVGtDjyHazRt9IrNEbOZUhNy3Iv96QIsJsDyGlVKq7geMWoOqPoF1O7xne7QhkFLVwygZnxP6xaZtl87aS3pR3EyAJJMUA6c9GXPUn9BzA9lwrnxnOnAO9YYdxglEP5PhFcGlvToAx6RE1zRtreBTIETKVQkQ-iBhgErrldUn6Jt7xK6aclpWJu-C5t6Vb4aAp4QFLaoA34UAQTieqeN3rrB3xpVvZ7ClK6BHfWGOFF9g4TtzVxwZ_liqmz8uFjg1B9WFrMlqqWWjxIEwUAn1U5ETaWDhXqECzZf3dAjUiKwkGiFnRRSVGij5dQ3A7Ji6KRVcQPF2143fqz3ECvUfBnChoYb3EttjAM84Mj7-eSdwuOyjxgi3c__I4GfgeLBHBcqmujAA-l9hOLcL9k4SUkkqaFGef4XL1xWCnDpg8OI8Ng5G1FDYOUehC_8CKizCd4jcwh27mViZxMWkcGIfZq_OEBFMu44Rks0td9LRIZ1BDainstfMnVLNF8GgfqYOqVq7AKHxJA3pK_i8pvoJJV5LQHsh5_Nbh3ND1LSoj_lCkbSOO78FSqBz7lJZMgHBALLD9WpnxYw7_vGyHWQ5UsgjDbdLfqnyp8a9Uc0L4oGxlGYX4ga5aOF0mUC2w97Hva-s5_ae24LbQKkB9oYB5JaalSNhHBqmMz3yUsHLPHYdWOZg6joMcvtxU_ZHKS06JZWnnmV9vq0bGzVz9qH3KGUneBagef2mwgtZH2LNvQSW-K3npyM5AAZ4BEg3pZpoCsVOezLFHmJCNlIjK5u5HkeI4J7V6qLFH9E3IriGPPqf_QZRjaWuQ7jBUkHHOomfsNqB_5BXsd7UrEIvaGyagxTopBYQK1Lv-j7sEEsLNQeFQlhOizPcPCUJIFvqZHSmwK_B-yhwKX18AYTYb2iSNnfcOPLBB1c5Ag-RSBmL8h2c55bdKnvdpOieDSLBgPh-jHKmLOnc_MffFnPqZHmeNA0tsIOeyLguJNRKIlixYQ3EPwImb3ZlPzzTNOvjv99XNAU_Z1JLE8zwBqZfimMEcWcs-L7vNcQhEXCDFlW2rOQov4dgauvHX7x9ulkwUTU7FY9IPZvpCg1EjOuUGVOItdlYGaPcN_ekxCOYUCQk47Z88FPkX7vZELVYYW8G3kMH_8VbZAnBc10QGBEIkGv4IIOJmeGa4czEie0_QDDDCk-MDOO1VVq5jqf5HI2-rHbG9nmWNmcjfSawph8YoECLg6eshUXKF3zD-BcQ-VrONFBgaXGLF4rrk.YpgjyDzL8mkfmeU9MZhBGA"
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" : 1729605101
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiRGVIT2ZXYkxGWmRlclZQSVhPaEFuQSIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwib3JnYW5pemF0aW9uSUsiOiIxMDk1MDA5NjkiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsImRpc3BsYXlfbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8gQsO2ZGVmZWxkIiwibm9uY2UiOiJmbDRpYk5GM3EtV0J1bzZORmx4aFBDdk5wcDk5U0k4bSIsImF1ZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhenAiOiJlUmV6ZXB0QXBwIiwiYXV0aF90aW1lIjoxNzI5NjA0Nzk4LCJleHAiOjE3Mjk2MDUxMDEsImlhdCI6MTcyOTYwNDgwMSwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQiLCJqdGkiOiJkN2E0MzhhZmM2ZjgzYTZlIn0.o4eAyu9MH1cuJtAdW9UPv30bqx0txVA3weQHkKqVIuyA0PIFpJIOW41aU9tRAt-_FIIQ1mBEHN1FInoOG9yx7g"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoiZ2JIbG5iNjhrY3BNLW05bVBWN3JKdyIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwib3JnYW5pemF0aW9uSUsiOiIxMDk1MDA5NjkiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsImRpc3BsYXlfbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8gQsO2ZGVmZWxkIiwibm9uY2UiOiJkVWp4amk4M0dfS1MzN1FnbG90M1lnU25aZGhlT3J0TiIsImF1ZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhenAiOiJlUmV6ZXB0QXBwIiwiYXV0aF90aW1lIjoxNzMwMTI3NzI4LCJleHAiOjE3MzAxMjgwMzEsImlhdCI6MTczMDEyNzczMSwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQiLCJqdGkiOiJkZmMxZjUwODJiMjZlNTRmIn0.d9QiaKFQbil07gzUSDdzH050rFyUCPqqMY8_K4kpcYx-9L6dRKlhcDzw7Mt4plLUm-5xA_tBYFf3w6YSzBU_Bw"
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" : "DeHOfWbLFZderVPIXOhAnA",
Erste 16 Bytes des Hash des Authentication Tokens Base64(subarray(Sha256(authentication_token), 0, 16))
+}

Body

{
+  "at_hash" : "gbHlnb68kcpM-m9mPV7rJw",
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", @@ -898,27 +898,27 @@ "organizationIK" : "109500969", "given_name" : "Darius Michael Brian Ubbo", "display_name" : "Darius Michael Brian Ubbo Bödefeld", - "nonce" : "fl4ibNF3q-WBuo6NFlxhPCvNpp99SI8m",
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" : "dUjxji83G_KS37Qglot3YgSnZdheOrtN",
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" : 1729604798,
Timestamp der Authentisierung
- "exp" : 1729605101,
Gültigkeit des Tokens
- "iat" : 1729604801,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1730127728,
Timestamp der Authentisierung
+ "exp" : 1730128031,
Gültigkeit des Tokens
+ "iat" : 1730127731,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld", - "jti" : "d7a438afc6f83a6e"
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" : "dfc1f5082b26e54f"
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" : 1729605101
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhdWQiOiJodHRwczovL2VycC10ZXN0LnplbnRyYWwuZXJwLnNwbGl0ZG5zLnRpLWRpZW5zdGUuZGUvIiwiYXpwIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwiYXV0aF90aW1lIjoxNzI5NjA0Nzk4LCJleHAiOjE3Mjk2MDUxMDEsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzI5NjA0ODAxLCJqdGkiOiIzYzIzNGJkOGU0YmM2OGE2In0.Dv47CuyACBxsV1h7iywH2IJnSvidCbEO_XEm13smQu5Gu1Dg5KSBSvRlSQbbpGY3v6Je7CmnjQ2S_fSd-RCUzw"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhdWQiOiJodHRwczovL2VycC10ZXN0LnplbnRyYWwuZXJwLnNwbGl0ZG5zLnRpLWRpZW5zdGUuZGUvIiwiYXpwIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0IiwiYXV0aF90aW1lIjoxNzMwMTI3NzI4LCJleHAiOjE3MzAxMjgwMzEsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzMwMTI3NzMxLCJqdGkiOiI2YTIwZTk1ZTFlM2FiM2VmIn0.iI2O4Xn0gRbgFZUz5a56Y-Y86Cp1pdOh6GKxr1ZjVstWQ8p7N2bUmJlCHiAROxlW8_oTm_WMhHnCU4LfXZpxrQ"
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", @@ -932,34 +932,34 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "eRezeptApp", - "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604798,
Timestamp der Authentisierung
- "exp" : 1729605101,
Gültigkeit des Tokens
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127728,
Timestamp der Authentisierung
+ "exp" : 1730128031,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1729604801,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "3c234bd8e4bc68a6"
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:41367/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=mttCAAJNlLurT6Yy0HilESzNjzMF83vJ&code_challenge=xi9tD85diCozaTRQW5KmNMRJF_aGG7HzSW9gALAZD3Y&code_challenge_method=S256&scope=e-rezept+openid&nonce=iLFpDxN3MeBAxd_dG7nvcTNLmwdFI3JY127.0.0.1:-1localhost:36429

25 GET http://localhost:37633/sign_response?client_id=eRezeptApp&response_type=code&redirect_uri=http%3A%2F%2Fredirect.gematik.de%2Ferezept&state=6S1P15WygsXASQGVyJ1cc8mkxBVDyo4B&code_challenge=UQDUCnEeOPwW8qf0mRYNYcptaXen98nstyOa_jHQKgs&code_challenge_method=S256&scope=openid+e-rezept&nonce=r-HxhwrcJ8HPO_sYM4-uoLTVlmbvUNrS127.0.0.1:-1localhost:42435

REQ Headers

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

REQ Body Empty

REQ Headers

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

REQ Body Empty

26200localhost:36429127.0.0.1:-1

26200localhost:42435127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Date
Tue, 22 Oct 2024 13:46:44 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
-  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM2NDI5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJEN2FBZ014RjgwRmhXRk1wZTV3eWhMV0FERWNQMUJyUjNuTDh0WnAtTElVIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6ImlMRnBEeE4zTWVCQXhkX2RHN252Y1ROTG13ZEZJM0pZIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwic3RhdGUiOiJtdHRDQUFKTmxMdXJUNll5MEhpbEVTek5qek1GODN2SiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3Mjk2MDQ5ODQsImlhdCI6MTcyOTYwNDgwNCwiY29kZV9jaGFsbGVuZ2UiOiJ4aTl0RDg1ZGlDb3phVFJRVzVLbU5NUkpGX2FHRzdIelNXOWdBTEFaRDNZIiwianRpIjoiYzFmZDRkY2Y3ZWE1YjAwNCJ9.R-YqVd-sTzzXtj6UgHwrAcBjpbtCI4CzbvApg5SrRbdYV6zODy_OTgGKHmUkQRJE_WasTUWvWLJkkgvnwb1oiw",
Die vom Client mittels der eGK bzw. SMC-B zu signierende Challenge besteht aus einem Base64-codierten Challenge-Token.
+Date: Mon, 28 Oct 2024 15:02:15 GMT +Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Date
Mon, 28 Oct 2024 15:02:15 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+  "challenge" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyNDM1IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJpOWJlWkxWemFJa2NQTk51NnBSUG9DNEEwXzRtRW5pa2ZzaG0tWkNFRWZFIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsInRva2VuX3R5cGUiOiJjaGFsbGVuZ2UiLCJub25jZSI6InItSHhod3JjSjhIUE9fc1lNNC11b0xUVmxtYnZVTnJTIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0Iiwic3RhdGUiOiI2UzFQMTVXeWdzWEFTUUdWeUoxY2M4bWt4QlZEeW80QiIsInJlZGlyZWN0X3VyaSI6Imh0dHA6Ly9yZWRpcmVjdC5nZW1hdGlrLmRlL2VyZXplcHQiLCJleHAiOjE3MzAxMjc5MTUsImlhdCI6MTczMDEyNzczNSwiY29kZV9jaGFsbGVuZ2UiOiJVUURVQ25FZU9Qd1c4cWYwbVJZTlljcHRhWGVuOThuc3R5T2FfakhRS2dzIiwianRpIjoiYTBiYTI4NDY1NGE3YWEyZCJ9.IRWWtdUambyoRPHSxjkU2s_bojfLVlpT8DJPxO3AOHknBn7gFxVtJQdi4v77Wt1_ozKrhSvQU6d-2_-8MMBZpA",
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.", @@ -975,51 +975,51 @@ "family_name" : "Zustimmung zur Verarbeitung des Nachnamens" } } -}

body.challenge.content

JWT

Headers
{
+}

body.challenge.content

JWT

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

Body

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

Body

{
+  "iss" : "http://localhost:42435",
   "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" : "D7aAgMxF80FhWFMpe5wyhLWADEcP1BrR3nL8tZp-LIU",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "i9beZLVzaIkcPNNu6pRPoC4A0_4mEnikfshm-ZCEEfE",
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" : "iLFpDxN3MeBAxd_dG7nvcTNLmwdFI3JY",
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" : "r-HxhwrcJ8HPO_sYM4-uoLTVlmbvUNrS",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "mttCAAJNlLurT6Yy0HilESzNjzMF83vJ",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "6S1P15WygsXASQGVyJ1cc8mkxBVDyo4B",
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" : 1729604984,
Gültigkeit des Tokens
- "iat" : 1729604804,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "xi9tD85diCozaTRQW5KmNMRJF_aGG7HzSW9gALAZD3Y",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "c1fd4dcf7ea5b004"
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:41367/sso_response127.0.0.1:-1localhost:36429

27 POST http://localhost:37633/sso_response127.0.0.1:-1localhost:42435

REQ Headers

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

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
{
+content-length: 4044

REQ Headers

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

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" : 1729647998
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3Mjk2MDQ3OTgsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJleHAiOjE3Mjk2NDc5OTgsImlhdCI6MTcyOTYwNDc5OCwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQifQ.KubCaPu6XptGcqhh5Ne3n5URl5JWh-rzkGCNTtP1ZVtGrog0juhBnpyjDdIEKMCKXy1JnbQY37g3wWdTYzoGwA"
Ein verschachtelt enthaltenes JWT
-}

body.ssotoken.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJhdXRoX3RpbWUiOjE3MzAxMjc3MjgsImFtciI6WyJtZmEiLCJzYyIsInBpbiJdLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwczovL2lkcC5kZXYuZ2VtYXRpay5zb2x1dGlvbnMiLCJjbmYiOnsieDVjIjpbIk1JSURTekNDQXZLZ0F3SUJBZ0lIQTI1VktBSGN2ekFLQmdncWhrak9QUVFEQWpDQmxqRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhSVEJEQmdOVkJBc01QRVZzWld0MGNtOXVhWE5qYUdVZ1IyVnpkVzVrYUdWcGRITnJZWEowWlMxRFFTQmtaWElnVkdWc1pXMWhkR2xyYVc1bWNtRnpkSEoxYTNSMWNqRWZNQjBHQTFVRUF3d1dSMFZOTGtWSFN5MURRVEV3SUZSRlUxUXRUMDVNV1RBZUZ3MHlNakV4TWpRd01EQXdNREJhRncweU5UQTFNVGt5TXpVNU5UbGFNSUhPTVFzd0NRWURWUVFHRXdKRVJURWRNQnNHQTFVRUNnd1VWR1Z6ZENCSFMxWXRVMVpPVDFRdFZrRk1TVVF4RXpBUkJnTlZCQXNNQ2xneE1UQTBNVEUyTnpVeEVqQVFCZ05WQkFzTUNURXdPVFV3TURrMk9URVNNQkFHQTFVRUJBd0pRc08yWkdWbVpXeGtNU0l3SUFZRFZRUXFEQmxFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZNVDh3UFFZRFZRUURERFpFWVhKcGRYTWdUV2xqYUdGbGJDQkNjbWxoYmlCVlltSnZJRWR5WVdZZ2RtOXVJRUxEdG1SbFptVnNaQ0JVUlZOVUxVOU9URmt3V2pBVUJnY3Foa2pPUFFJQkJna3JKQU1EQWdnQkFRY0RRZ0FFSGxOY296bmpkb2kwWXh2MjdCM3lHYUUvMTl2ak9KSTc4d1QyeURjZWMrbVdBbFJjL2ZFL0J5aFBjL0lPTGtnc2FabWJLdU5RaGhlcEU0UFE0cXRZRGFPQjd6Q0I3REFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGRVN4VEFGWVZCN2MyVGUrNUxJL0ttNmtYSWtkTUIwR0ExVWREZ1FXQkJSS1YzM3hmcWsySHRkOEx6VTR0SlRZWFZMdG1UQTRCZ2dyQmdFRkJRY0JBUVFzTUNvd0tBWUlLd1lCQlFVSE1BR0dIR2gwZEhBNkx5OWxhR05oTG1kbGJXRjBhV3N1WkdVdmIyTnpjQzh3RGdZRFZSMFBBUUgvQkFRREFnZUFNQ0FHQTFVZElBUVpNQmN3Q2dZSUtvSVVBRXdFZ1NNd0NRWUhLb0lVQUV3RVJqQXdCZ1VySkFnREF3UW5NQ1V3SXpBaE1COHdIVEFRREE1V1pYSnphV05vWlhKMFpTOHRjakFKQmdjcWdoUUFUQVF4TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUh1c3dCSUlNVHZXUmYrYjVQdThudDltRVoxK0ZkOG8yQjNlMmF0VjJjNzNBaUJwQU1GdUlZMkpJQ1RpNW4xWWo2cnc5NFpMc2lFZlNKVzdtdTJlVTJMZGF3PT0iXSwia2lkIjoiOTY1NzM2OTUyNjE4MTc1Iiwia3R5IjoiRUMiLCJjcnYiOiJCUC0yNTYiLCJ4IjoiSGxOY296bmpkb2kwWXh2MjdCM3lHYUVfMTl2ak9KSTc4d1QyeURjZWMtayIsInkiOiJsZ0pVWFAzeFB3Y29UM1B5RGk1SUxHbVpteXJqVUlZWHFST0QwT0tyV0EwIn0sIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJleHAiOjE3MzAxNzA5MjgsImlhdCI6MTczMDEyNzcyOCwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQifQ.ZwJI9gwavsaAti0QBAOZbCz4BHBslcur1dm2KuoA1MVxtfxyHadt0U008x3J-j4cBXfD0-j6n3UhWht2XvHNZQ"
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" : 1729604798,
Timestamp der Authentisierung
+ "auth_time" : 1730127728,
Timestamp der Authentisierung
"amr" : [ "mfa", "sc", "pin" ], "idNummer" : "X110411675", "iss" : "https://idp.dev.gematik.solutions", @@ -1033,166 +1033,166 @@ }, "organizationIK" : "109500969", "given_name" : "Darius Michael Brian Ubbo", - "exp" : 1729647998,
Gültigkeit des Tokens
- "iat" : 1729604798,
Zeitpunkt der Ausstellung des Tokens
+ "exp" : 1730170928,
Gültigkeit des Tokens
+ "iat" : 1730127728,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld" -}

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
{
+}

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:36429",
+}

Body

{
+  "iss" : "http://localhost:42435",
   "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" : "D7aAgMxF80FhWFMpe5wyhLWADEcP1BrR3nL8tZp-LIU",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "i9beZLVzaIkcPNNu6pRPoC4A0_4mEnikfshm-ZCEEfE",
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" : "iLFpDxN3MeBAxd_dG7nvcTNLmwdFI3JY",
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" : "r-HxhwrcJ8HPO_sYM4-uoLTVlmbvUNrS",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "state" : "mttCAAJNlLurT6Yy0HilESzNjzMF83vJ",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "state" : "6S1P15WygsXASQGVyJ1cc8mkxBVDyo4B",
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" : 1729604984,
Gültigkeit des Tokens
- "iat" : 1729604804,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "xi9tD85diCozaTRQW5KmNMRJF_aGG7HzSW9gALAZD3Y",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "c1fd4dcf7ea5b004"
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:36429127.0.0.1:-1

28302localhost:42435127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Content-Length
0
Date
Tue, 22 Oct 2024 13:46:46 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=mttCAAJNlLurT6Yy0HilESzNjzMF83vJ
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.

header.Location.code.value

JWE

Headers
{
+Date: Mon, 28 Oct 2024 15:02:16 GMT
+Location: http://redirect.gematik.de/erezept?code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEzMTMzNn0..-yWGBILAchQyJu2p.q2ZYjnlpf-xdfB5TUeqctVLN7JD7nL8WIQ43yPa1WBI3TZHkINTq2rwCaW3rJcyEZbwH4i8vIIrNUIFveH1b0pHP9jMXFgJLJMHwJFvpny-1rLoG-82XsLMfH8kmJdZe2Cd-v_DbkqLxT6tMzD7jsUnHBoMtzBRkP9YBMJLKOB_CwWCy0wygbh6RUrR0En2FsWFWijoWllSkqpL7GeAUzrrrMtKp3dfFpSNbP2d_I2jZk5rI1MNlSQJXBsfZ6j9FdEa2DC9jS5MCAtWxv6Q1ZS4WuKMLQn76MMjKREKtsvANIyvpEp6-PvaGPkoSNijy3RZTcTqLbLQzuGhgcfjiKcWO7z9X_0aNGfxcpeukt8aGkNqMltgfC2pCu68QaXF9eMgi3yEz-5ZlRHhpZ3nXxclpk_hcTEnySIYFElfBxqXaGye_3FGd4vHt1p8sMa1HVqjuoHRK0ak8GusGadJvsTDrZDz2ks9pLQpSvLJaGavQeWQD5Qe69kivbCwJe1n1S4obtuzIXWfowyWoVWUrUwNLS2FXoKMYxJKXUiLPrZfc922dZ4BpFl2A_5zYJ3y77v1hkRNQOj2Mkx7v37P7WQZS3nt2Beguyh_80-OejpdisshJuJePfCYqjJ5LwBzknFq8jNPDrkQ4Api691sKbFZDqKJejBiWmZuMvAU3QzrTw1jLZwaY9sLSCGlXPDKK_vMLva2Whuc9dyAlE0o0qaZRgCJ7-pZcuupGTr0NLbrWUE6uQllS1s9n80rODm6W7_TgMMqrHgmRiDt_nyXk-5DgmviBosim1clxyTN0-Za3ceOJiaC_3Zo_XcXexVlojCKH8Z5nagdnhEZMwkIpTAe0ZMyjxys1N4Bdj74CMncCnNsbMZULYHe1UMydAb40ISXiSP_KbV-xV0YUa9mdyyiga1gISSx4uzFN_W8m6fVRC9Rqzd6g73Qdiz2s7Ypi3rREdrGhMfBZyxYcLDZlRGcjuTYzHZdAAbdF1U50N-f2ep-XARg03dZtAOhgfvnJ5ak35U--J3AGPOTK8mWOlOXVWRsXoKWTh42nmAACH8QWG_wh6E2wRz9QzLtEmaBrffAK0g1PohRwn1Y0mk6aDp2qJd2GU8XZeSWmSt6QlCugZgED5ZSkf3JJRZHmWQW9uguiz-B--lQ527MFTNCoyDz33--i5IfXh6oPyggeECWMDI8MbzHmrCepTp5PrJFTTlHjbnU-oIo0FMEliA15E-aEU70mfxooJWhWAdqsFZ7C__UPwOSehkn8lrIMm49yyFKm_zt_zryZPoJApwx3UBuRISxw33lE8kjXvQVwD5EfNZkkmTjfV6a4CgrV9RqQ_FAG18JSLs9l4s1FfYDjlujvu_pEEpPb4BcCjtTgj5NSr1GNBDiXgF-dFe6pP9cG7EhnbvapNXY3UHL4ozZR.lMXlG9MfrZAdZPt6FwdNJA&state=6S1P15WygsXASQGVyJ1cc8mkxBVDyo4B

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Content-Length
0
Date
Mon, 28 Oct 2024 15:02:16 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=6S1P15WygsXASQGVyJ1cc8mkxBVDyo4B
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" : 1729608406
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM2NDI5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJuYUxaZjNaVGotbTQwS3NhMHpPNGNGOHhkWWFtVlZnYyIsIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwidG9rZW5fdHlwZSI6ImNvZGUiLCJub25jZSI6ImlMRnBEeE4zTWVCQXhkX2RHN252Y1ROTG13ZEZJM0pZIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwiYXV0aF90aW1lIjoxNzI5NjA0ODA2LCJyZWRpcmVjdF91cmkiOiJodHRwOi8vcmVkaXJlY3QuZ2VtYXRpay5kZS9lcmV6ZXB0Iiwic3RhdGUiOiJtdHRDQUFKTmxMdXJUNll5MEhpbEVTek5qek1GODN2SiIsImV4cCI6MTcyOTYwODQwNiwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQiLCJpYXQiOjE3Mjk2MDQ4MDYsImNvZGVfY2hhbGxlbmdlIjoieGk5dEQ4NWRpQ296YVRSUVc1S21OTVJKRl9hR0c3SHpTVzlnQUxBWkQzWSIsImp0aSI6ImEzNWMzNzJhZmM4NTQzNjMifQ.ath1CO9PzV3FKGgBFbeLeCIQHlaDL3AitfsslB0wPsMqDl0pS51MKzK-0DF4DZ-IR2u8wyhB7-hz2C8j01DR8w"
Ein verschachtelt enthaltenes JWT
-}

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

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyNDM1IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJHTmhnVm8xRzV2WnlaUndpYTJrNlZJWnNEWnVUaU9LNiIsIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwidG9rZW5fdHlwZSI6ImNvZGUiLCJub25jZSI6InItSHhod3JjSjhIUE9fc1lNNC11b0xUVmxtYnZVTnJTIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0IiwiYXV0aF90aW1lIjoxNzMwMTI3NzM2LCJyZWRpcmVjdF91cmkiOiJodHRwOi8vcmVkaXJlY3QuZ2VtYXRpay5kZS9lcmV6ZXB0Iiwic3RhdGUiOiI2UzFQMTVXeWdzWEFTUUdWeUoxY2M4bWt4QlZEeW80QiIsImV4cCI6MTczMDEzMTMzNiwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQiLCJpYXQiOjE3MzAxMjc3MzYsImNvZGVfY2hhbGxlbmdlIjoiVVFEVUNuRWVPUHdXOHFmMG1SWU5ZY3B0YVhlbjk4bnN0eU9hX2pIUUtncyIsImp0aSI6IjBlNmE3ZjA2YjU0NzZkNTcifQ.cuiicezMdJ2SegMzAY6IhuB0Y6b5i9-q3xiLqwLLHEOAaDzn8YRYm0A3kMlWriu5-DIgNp91r8rJ9ygFiurziw"
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:36429",
+  "iss" : "http://localhost:42435",
   "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" : "naLZf3ZTj-m40Ksa0zO4cF8xdYamVVgc",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "GNhgVo1G5vZyZRwia2k6VIZsDZuTiOK6",
server-nonce. Wird verwendet um noise hinzuzufügen.
"organizationIK" : "109500969", "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" : "iLFpDxN3MeBAxd_dG7nvcTNLmwdFI3JY",
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" : "r-HxhwrcJ8HPO_sYM4-uoLTVlmbvUNrS",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604806,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127736,
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" : "mttCAAJNlLurT6Yy0HilESzNjzMF83vJ",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1729608406,
Gültigkeit des Tokens
+ "state" : "6S1P15WygsXASQGVyJ1cc8mkxBVDyo4B",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1730131336,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1729604806,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "xi9tD85diCozaTRQW5KmNMRJF_aGG7HzSW9gALAZD3Y",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "a35c372afc854363"
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

RES Body Empty

Signature

Was verified using Key puk_idp_sig

Encryption info

Was decrypted using Key IDP symmetricEncryptionKey

RES Body Empty

29 POST http://localhost:41367/token127.0.0.1:-1localhost:36429

29 POST http://localhost:37633/token127.0.0.1:-1localhost:42435

REQ Headers

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

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
{
+content-length: 2119

REQ Headers

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

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" : 1729608406
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjM2NDI5IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJuYUxaZjNaVGotbTQwS3NhMHpPNGNGOHhkWWFtVlZnYyIsIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwidG9rZW5fdHlwZSI6ImNvZGUiLCJub25jZSI6ImlMRnBEeE4zTWVCQXhkX2RHN252Y1ROTG13ZEZJM0pZIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwiYXV0aF90aW1lIjoxNzI5NjA0ODA2LCJyZWRpcmVjdF91cmkiOiJodHRwOi8vcmVkaXJlY3QuZ2VtYXRpay5kZS9lcmV6ZXB0Iiwic3RhdGUiOiJtdHRDQUFKTmxMdXJUNll5MEhpbEVTek5qek1GODN2SiIsImV4cCI6MTcyOTYwODQwNiwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQiLCJpYXQiOjE3Mjk2MDQ4MDYsImNvZGVfY2hhbGxlbmdlIjoieGk5dEQ4NWRpQ296YVRSUVc1S21OTVJKRl9hR0c3SHpTVzlnQUxBWkQzWSIsImp0aSI6ImEzNWMzNzJhZmM4NTQzNjMifQ.ath1CO9PzV3FKGgBFbeLeCIQHlaDL3AitfsslB0wPsMqDl0pS51MKzK-0DF4DZ-IR2u8wyhB7-hz2C8j01DR8w"
Ein verschachtelt enthaltenes JWT
-}

body.code.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQyNDM1IiwicmVzcG9uc2VfdHlwZSI6ImNvZGUiLCJzbmMiOiJHTmhnVm8xRzV2WnlaUndpYTJrNlZJWnNEWnVUaU9LNiIsIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIjoiUzI1NiIsImdpdmVuX25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIiwidG9rZW5fdHlwZSI6ImNvZGUiLCJub25jZSI6InItSHhod3JjSjhIUE9fc1lNNC11b0xUVmxtYnZVTnJTIiwiY2xpZW50X2lkIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0IiwiYXV0aF90aW1lIjoxNzMwMTI3NzM2LCJyZWRpcmVjdF91cmkiOiJodHRwOi8vcmVkaXJlY3QuZ2VtYXRpay5kZS9lcmV6ZXB0Iiwic3RhdGUiOiI2UzFQMTVXeWdzWEFTUUdWeUoxY2M4bWt4QlZEeW80QiIsImV4cCI6MTczMDEzMTMzNiwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQiLCJpYXQiOjE3MzAxMjc3MzYsImNvZGVfY2hhbGxlbmdlIjoiVVFEVUNuRWVPUHdXOHFmMG1SWU5ZY3B0YVhlbjk4bnN0eU9hX2pIUUtncyIsImp0aSI6IjBlNmE3ZjA2YjU0NzZkNTcifQ.cuiicezMdJ2SegMzAY6IhuB0Y6b5i9-q3xiLqwLLHEOAaDzn8YRYm0A3kMlWriu5-DIgNp91r8rJ9ygFiurziw"
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:36429",
+  "iss" : "http://localhost:42435",
   "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" : "naLZf3ZTj-m40Ksa0zO4cF8xdYamVVgc",
server-nonce. Wird verwendet um noise hinzuzufügen.
+ "snc" : "GNhgVo1G5vZyZRwia2k6VIZsDZuTiOK6",
server-nonce. Wird verwendet um noise hinzuzufügen.
"organizationIK" : "109500969", "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" : "iLFpDxN3MeBAxd_dG7nvcTNLmwdFI3JY",
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" : "r-HxhwrcJ8HPO_sYM4-uoLTVlmbvUNrS",
String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",
Die client_id des Clients. Wird bei der Registrierung vergeben.
- "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604806,
Timestamp der Authentisierung
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127736,
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" : "mttCAAJNlLurT6Yy0HilESzNjzMF83vJ",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
- "exp" : 1729608406,
Gültigkeit des Tokens
+ "state" : "6S1P15WygsXASQGVyJ1cc8mkxBVDyo4B",
Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
+ "exp" : 1730131336,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1729604806,
Zeitpunkt der Ausstellung des Tokens
- "code_challenge" : "xi9tD85diCozaTRQW5KmNMRJF_aGG7HzSW9gALAZD3Y",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
- "jti" : "a35c372afc854363"
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" : 1730127736,
Zeitpunkt der Ausstellung des Tokens
+ "code_challenge" : "UQDUCnEeOPwW8qf0mRYNYcptaXen98nstyOa_jHQKgs",
Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
+ "jti" : "0e6a7f06b5476d57"
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" : "NjZ04TAiSEwZy_z_2vmH69bavagGCxW9xR6lqDrLEzM",
X-Koordinate des öffentlichen Punkts des Schlüssels
- "y" : "PXadF0xwOwmnFpLbq5LVq2_BGDcA1rtVFzl1chrcbD4",
Y-Koordinate des öffentlichen Punkts des Schlüssels
+ "x" : "GSUoy7mlHKovbeTVkZZ8_frggCwMTTWQgTXwBcq-HQo",
X-Koordinate des öffentlichen Punkts des Schlüssels
+ "y" : "jp7ldegp_D0NJ8d3qkRlnD_uCax6db9AoNoDBJI3IC4",
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" : "ohtxoaz1K8sb301grURASIvxavolCQ1eMNlJAjvTWSk", - "code_verifier" : "Rm9Sp-_EmIUfGExTKAGGo9bp-G3INoir5dlSOq19eGM" -}

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

30200localhost:42435127.0.0.1:-1

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.3
Pragma
no-cache
Date
Tue, 22 Oct 2024 13:46:48 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
+Date: Mon, 28 Oct 2024 15:02:19 GMT
+Content-Type: application/json

RES Headers

Keep-Alive
timeout=60
Cache-Control
no-store
Version
29.0.4
Pragma
no-cache
Date
Mon, 28 Oct 2024 15:02:19 GMT
Zeitpunkt der Antwort.
Zeitpunkt der Antwort.
Content-Type
application/json

RES Body

{
   "expires_in" : 300,
   "token_type" : "Bearer",
-  "id_token" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcyOTYwNTEwOH0..l37ECHbB1F1ZOCzi.QcMAqK1-jvFNyfTwvZJdZn8uiU_nUtGJ2vuTTfAL6Sqi99JTj-RGmUwp1Yzpdqu4Q1mup4j1qfoE2b0hRsKEcWwGSBOaPNb-EfA7adHF-rygKo_ncvODGz-nTjXkDyHiAl4aNIt95-Cd2yFhPlWvliCUlCat498ZzsLhgr-1JDYedcQ4TSLdnCEQCYKhm1GL4IiFfz_Zzu_-so_AAJNEAOB4rDiWt5fsSVAZ-ajFz0VxtJV91LHG3bN95SX9FzgDJ4m1KgvPE4vI0_Ft-Qa9cmiF2YFGp_bdP5U5qF_UdCXdSxjo0ZITJtA20M6OAIeXNwngWXlJjSHocL1N4TyGXsxkacOz8PfVgnNkLLIWmIBWzE-zHneYsVBdEIp9T3Okr_6ezxsAHTiwbd_8ocSHuKWfHpAISTnDhk97QflcZEbDAXDr9t0vsg1m31EbJb3hT_MgBe8hMn45kaATbNJYyHgBqEijTpA1gSrv4INJNBx72eO7An1pnZM3FyhaQpW_ShGkGZN-ZoH3Pm2fmt3N0tkst2OqzclQLHknPdKRrIBh2-XLyyY5dxHjsKxn2yOvt7BC3VE50BIvxMeIRqmHBoYYYl8rjzfi6cO64v4y5YtTfeMb_M21coPn5nZ_7IO1bjqVFxI75KQ__Y5CQkvvuCBlVp-cAK7nBszznuKUjRK1TmEB1Ip-9LyZRANvovVcZ1V5UhTag-K7biVvKI1iUmJl5KecS9-7sBthiqftemfGVIpVTv7QrX-JWzWN_yq2MGyPfTHkKfJdFc87wFR4kzCScySI5s7mVESqWaSxuMePf4QVVAod16MTu9-ShDjP9TsKNXdRwwAX31XWFE_Cs0x94tT6-NK8aCxTonSQPiGAYOuVpFFXSAy5y8REQlTTNEr3wvtt-B-hytgNywb9LtH5fcKvjh1gGVNFGd0sjpBgIhvxhOeRqwtP3INceAKS2_mRtYhhV-Cwwg6ux3X2LUwkiaArMgtTVB30_jiMKa07_snjMem0aGbgod8qBnxpEJPhg_mz4eANAIjIQokBnbcvh51GvVPhUU-vpGTuwZjRMXBFcHGHQIMnk00g4RAi_eZNUMCUWH2x-c7QImU9ttoNM77U5MyMUalV_ZRtS9nIoz1oa73mzqazXUdJnkxamkvrDeXx9W6ah3GHnb3sT_B4uSaI3THOi3IY_ab6Psp4TQLlkv3HvImQC7yy2SdNNYcFvElXO8IDRNbQJ9fcXgUT58QGT_5Sxax_N2W7EoxukTu-7FirktTPJC_PNiWNVeEanxgGgis.UPPm4My0NBvuLG3LAJBE0w",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTcyOTYwNTEwOH0..yH7uXEWKyS-ZLCv_.lo7ISLRYShV-iuC0Fvzdp4Uzp4ZY9ua1Fpye2gmuHJlxNUCnfUQiaYfkz5Xt3_Hazl2wlqY6R-jyFIz4k5IfJvZ0VKjuml0QRYskBsPuEPEhU8cRtqJ1bC9sr1So70V5mprKcTCrGXH6idred13fRuQ0onvqmUgp_FU2xZH-tMythSxs8US0iDKWTizVu3hIqcY_GGjGHCYDsVjg19zXqUaSGvxTxCtuPcVg29w7KyJgKhClbspKxbqJIWw_Qf5q1kZetHx8Usl9tVOu70htt-BdUMIa4xkctyN0MAwzMWoJUEeoJkHpxpKSvOvA2nTETh1p2HLPPCZB_Jx3UtIM-i6QEhj9F-4WRBkp1GOIwtXgEWKEqSbmD-Rl5kDAfksH_NQjOijlio-0CKKNq_wGCYkvuKq3ZM84ByZb9TIN2ps-tuHgMDVHvXjKzXbov0rbQvveWcEdJ4XU-ULz5TC4lrQjmOBMOrynGAk2qCFQJQ7X8wMMgHbGIJPZ44mA1rH6ie__ZJmogz0ZoLNcBaLl56ujxCy5jUbDmGpHrqEGbczTC1KvTXrPTFR5lQsLKZzqXalohBr2rAYDzlGcThA5I44n3phZy5AkBfeQKw1yKTfiTqMa6SF3_6-rJtAY8Z6aLzyVNV_AbvKMbJ5xcippSJ1GDg0BJ3WQ_9EFYdqKLAJCKlUyyoUtyAgZpR-5NdVr5iDlUb-SWkA9yzwlBYAw6VIpi8LNN2EacWGY0W6t02RHTptKSVImzO7hozd4w5p4PDo7baXKRshkJkpOxluPriFVlTawZPYIbDkv7gITVIK37cPR8gMp9eC0sAXs8L0g-RlQ73DbU-bsNk6A3FYPaZE0Sc1xnv2HjVWYTXW1EAuZKVsUYWtuH8rgJxYTM2zdJbkAtaiHLnUS2RTXMRUiY-acGyAqqh_KYErdMZoK3PmeQO5Ev-dqHw4nF2El5wyNQaHfXDsq4fmxiclKIVGCrCT-5Vrtt1ZqAp-fVixVzJSuG99rApy6LSk_giOxMirm3sEG5EgCIrpCYk5rfd9FsT2uJWVvKAh4OGVFrq1DXci7cHXIUI5u7olNP-mB-d2jFQC0dsHbfVbQjy5xzPx0eN_v-GCV7xBm6lRizkUeOtBNy8f2S3osUMhC9T-UC_SGGO5F7hHV7HocYSwWoDBUSzE-qgJi93E9LbThIbszisJRqAPDUMk2UGtNefc7cVbKMsY1tS0ub2D28wWGQMHzwxCINLUu5bPEZe3QBVa5ygu9Pjva9OCuT-u_Moxf4ile7HetxwvlgG4hO74R2f4YpfXztor36ZYFp1wFdxP0Row.pFOZlHgEREceyhlO2Il-tw"
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyODAzOX0..BcplfuRqxc-P3Tqv.RWuyPGK1hRYI7389IKNqkYgmPxhU0h-qCQsdjjZDc3MN6cLdXLtQoGU27Jyk8xx9QLKCIAk1XOyaokp7znPGY94jqtXqmAzY62ZHp07fV4QUBR5HRDisftuDT2OFAUfLqD04ieuNrP2KsoW5wZqUULT-922lbRPuOlI8HH6oQ9fh5ybSCSo4bZ8bK66z-D5o_di13qRkocctD8eu10SxFR7LX2iGV1eED58YH5KIlu_0XLVEYH9j5hn80hRyBBqmr8RoiMstfURLBOMSfqvYYgxoI9VPaVSNIPzAMeqW7SNrVrPUP8tjAhc08XDufQhSlKCtW5lPRDtKRA2ljK-cLBH-OeQL2m-QY3pny4glM-QYLt2IjtpSgGfgbgQBb0-IaDPJRCoRBTq37B0zsW3CWRIIEmtAMFQuFSXeWL2gjG5psAIXNWnZEGUtkUCAa3ORzar77C-6ZfjBpNBHIzv9wmDrfEzW_8Naf-rlxO64JMqKydtBU_VG4xJ0OgvNSioa6GRlRYeLCKdXJdSABBNzGDSquhcVE6d7wKWxAj-wjxyCOjYZVfIHIm_4Z6eQDjCtLuucXksH_eWy2TWIhdfmfDmpysilLeGHw1EHQue7uFl5yM5p4TNm-wp_kbFke9XLF9gFsHK9ZSogrf7etEh77kaKq_9F8cOpp95DrC_F6zLvDQZx9EjYBTyCVS8NyA7v-p6dRqVIS7bjXeRnAmNRqOSvKFMewOY9-BKyruXncERaav0U1OAFWjNfYNh60aoVsO_wxVTlh9wRZCnEgNHBmYcXV7Tn31NE92MuGjcrahUD_u837qF_jKz5kdxnkchHb0h09PUMi9IcZKqJ9GyiQShy8Dj8HuhzyWoK8m80GNjlWXFDLYUGA_gecLfA4efxhSIbCotYrvCkzTsxinXUA8P4yIChm-gym-axRmIhz7DL4qLxIIw4o7DZCx5VSOPb1kXjB6WV83ZnMsVa-IICU7Q9L5Qmkr7eO_9t8zeb-JsPA-dmOmsEWH7NDfdrpaCcaGa2L_5KDyCls0PETQLSDwAbjyu8OhLeMcf1wly4Uql1OhEcEagXaJPC7WBDKw4RoDFRvIjtvIjhOum2IlCc6lpTBhuzKI9n_L4lRtuYoCt6zkfrqM6grSh-TaNxPOgOWTtJnGvERO01R0iw7yGJpPwqG98283mydr7f4KjgyUpmROIKczaT57j_kHh-u8TdcrzKEJ4AOph6G1t1qCTdLjkHTQREfCz1MNQKyodOdnlBl_PV7PmWQQECf7ZTGw5vh-ItouFpGgU.rDSRqmYs6zpY0yztM2USaw",
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" : "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTczMDEyODAzOX0..bCsDb6LBOtRopD7c.ruyUfknkloxuu5PB3ZUlBTvo6Tukp-n5zNR0nZTioKwLclunK3ZNOwkYjGbmNu70sDq1U4UDVZh4-ys2DxgM-WQj4ruln2r1ql1yWQVv9_TmVRpViYqKQ7qpMmaaIJ20nFi0RWEVu_RUhUU7OCZVyzeNxOeJX2asmY1o-0CknICkTFUHTAx6omfME5olxGrEvQuiK5XMIvF5HUrriFv4w06g8XfHYPZqdso7D9gyeGqVkjARRJK6zvHo34Up91uWEM2XW5hpXtVgQ5pFMlwnRl0cB1hn7NlHKqyYTLs-4-Q5Q9FOC2Z9FwtbGhXJ1O9gYoCVxRxm2YBil99ui-qxxCleeUOfvsjLUhLbFUXhDrbQOUuQCFLMtkYdRTViNAeQXJMwpholDnWozeMFwl93YdRnJu9BQXXRLzrxtcFfwwVVCKR7O0YVDCO3lYn1lNgmB1RIslCvWFHb17ifdaTot4TUtKRWdLWJFH3H2V2wegMEZe941C-nfwBEfkevK76QZIq-zhhaRRSN6dNVocM-jH6uAGkoZWRdGwpuxJYlXMKxDTnELOruRfibXozNBf4dzhE4lSdXotZyKzTbkiuTGIoZB8EN5INyc8dxoY4yvN_-jptmR5I1ZmUuv73ueZEYe3rmugz8horKvxxB3y5OuDsHatnZpDTxVv-_a-pFXqwqpXmctIjc-Z31DRQjCDlHQWEI8PmtRBzbPSO__TR4OLwhxeBPjXzqjx-RpnrCVvbIH3hUlTTAyjGLMvv4tp6Hzg3EjYF9vk-dFil1az6BO-pv75jRHFAe8WWb3GN1VOo2_7ObuHOzHFT5PL8bdtAAPf6YsPy3QJ2L8kKfGY6SPhLMAxeoUAz1IXMkeWuLzk1W4bj68keodqSMqSbUpH4zIhjp-fDnUApHebhbkyuicXGbD-ugrqIZBOpE4dsYMW9zAVTo7XVKFNvJ_7NWOWCEAnUk447DUcQgAwKQug__XuBwfLeP1dEOOqJfEpLS4TYVGi1xjoQh5kKi7i1fNZ5bKuqCnGooa-LwKVqJEwtgSZE-W3IBO1JpSoOTPqR0AY6njZ3dAG9hVnXUM_qfXzxI_BTl1Jvd2gmkEvNbtSS3uH9gpXd8FiySaSFDw-ZtVXhWS9kA-FOHJa03XisoqQNbRRz9qEhWmwxX6jA8jcdc3Zd7U1hMXyOF_K2AVvd71gbVnsrnfQ23GUFNXQdTyUOOllaRYBWuCZlRL9ktl0fzO_-INNn3nNj_kFwPYcnQ_RM1NVSvvHm7hmdhAwfujO35MXpNWIVatakHD54cs73TenLuEVHh8dp2wbOYvTlZB9c.8Fgx6lxtlxemgh95e3FZ_g"
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" : 1729605108
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJhdF9oYXNoIjoienkxQzJqWjZEQnZrVEpoSFF4d0JRdyIsInN1YiI6InAyaC1SVDZFRVJnaGJqUDhSMXdueXo4azR4aE9od2Jlc0pSUDBYbnVTbW8iLCJvcmdhbml6YXRpb25OYW1lIjoiVGVzdCBHS1YtU1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA0MTE2NzUiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cHM6Ly9pZHAuZGV2LmdlbWF0aWsuc29sdXRpb25zIiwib3JnYW5pemF0aW9uSUsiOiIxMDk1MDA5NjkiLCJnaXZlbl9uYW1lIjoiRGFyaXVzIE1pY2hhZWwgQnJpYW4gVWJibyIsImRpc3BsYXlfbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8gQsO2ZGVmZWxkIiwibm9uY2UiOiJpTEZwRHhOM01lQkF4ZF9kRzdudmNUTkxtd2RGSTNKWSIsImF1ZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhenAiOiJlUmV6ZXB0QXBwIiwiYXV0aF90aW1lIjoxNzI5NjA0ODA2LCJleHAiOjE3Mjk2MDUxMDgsImlhdCI6MTcyOTYwNDgwOCwiZmFtaWx5X25hbWUiOiJCw7ZkZWZlbGQiLCJqdGkiOiJlZTZiNjkzOWRjZGY1OTRkIn0.n-HIqdrrhRqcBlb53auzj18ULT20718cZ8itv_FG-XIbkc-aq7-qVpfY89eYS0uANim0n-p4a60Iz_svXct1CQ"
Ein verschachtelt enthaltenes JWT
-}

body.id_token.content.body.njwt.content

JWT

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

Body

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

Body

{
+  "at_hash" : "U5xvoK1y5enEjHYZk89eig",
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", @@ -1202,27 +1202,27 @@ "organizationIK" : "109500969", "given_name" : "Darius Michael Brian Ubbo", "display_name" : "Darius Michael Brian Ubbo Bödefeld", - "nonce" : "iLFpDxN3MeBAxd_dG7nvcTNLmwdFI3JY",
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" : "r-HxhwrcJ8HPO_sYM4-uoLTVlmbvUNrS",
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" : 1729604806,
Timestamp der Authentisierung
- "exp" : 1729605108,
Gültigkeit des Tokens
- "iat" : 1729604808,
Zeitpunkt der Ausstellung des Tokens
+ "auth_time" : 1730127736,
Timestamp der Authentisierung
+ "exp" : 1730128039,
Gültigkeit des Tokens
+ "iat" : 1730127739,
Zeitpunkt der Ausstellung des Tokens
"family_name" : "Bödefeld", - "jti" : "ee6b6939dcdf594d"
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" : "5e9c46d7e231a1dc"
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" : 1729605108
Gültigkeit des Tokens
-}

Body

{
-  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhdWQiOiJodHRwczovL2VycC10ZXN0LnplbnRyYWwuZXJwLnNwbGl0ZG5zLnRpLWRpZW5zdGUuZGUvIiwiYXpwIjoiZVJlemVwdEFwcCIsInNjb3BlIjoiZS1yZXplcHQgb3BlbmlkIiwiYXV0aF90aW1lIjoxNzI5NjA0ODA2LCJleHAiOjE3Mjk2MDUxMDgsImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzI5NjA0ODA4LCJqdGkiOiJmOGJlNjUyMDQ0ZDM3MGE0In0.YuAEkGmEBSLGc_B1Y33uPVNfWKMFEi45-IEPLSDL_38fQuTMmysGbF5rp59a98-A6tRhFSVfBAA1_8TB-K7llg"
Ein verschachtelt enthaltenes JWT
-}

body.access_token.content.body.njwt.content

JWT

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

Body

{
+  "njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiYXQrSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJzdWIiOiJwMmgtUlQ2RUVSZ2hialA4UjF3bnl6OGs0eGhPaHdiZXNKUlAwWG51U21vIiwicHJvZmVzc2lvbk9JRCI6IjEuMi4yNzYuMC43Ni40LjQ5Iiwib3JnYW5pemF0aW9uTmFtZSI6IlRlc3QgR0tWLVNWTk9ULVZBTElEIiwiaWROdW1tZXIiOiJYMTEwNDExNjc1IiwiYW1yIjpbIm1mYSIsInNjIiwicGluIl0sImlzcyI6Imh0dHBzOi8vaWRwLmRldi5nZW1hdGlrLnNvbHV0aW9ucyIsIm9yZ2FuaXphdGlvbklLIjoiMTA5NTAwOTY5IiwiZ2l2ZW5fbmFtZSI6IkRhcml1cyBNaWNoYWVsIEJyaWFuIFViYm8iLCJkaXNwbGF5X25hbWUiOiJEYXJpdXMgTWljaGFlbCBCcmlhbiBVYmJvIELDtmRlZmVsZCIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJhY3IiOiJnZW1hdGlrLWVoZWFsdGgtbG9hLWhpZ2giLCJhdWQiOiJodHRwczovL2VycC10ZXN0LnplbnRyYWwuZXJwLnNwbGl0ZG5zLnRpLWRpZW5zdGUuZGUvIiwiYXpwIjoiZVJlemVwdEFwcCIsInNjb3BlIjoib3BlbmlkIGUtcmV6ZXB0IiwiYXV0aF90aW1lIjoxNzMwMTI3NzM2LCJleHAiOjE3MzAxMjgwMzksImZhbWlseV9uYW1lIjoiQsO2ZGVmZWxkIiwiaWF0IjoxNzMwMTI3NzM5LCJqdGkiOiIwOTcxOWQyZmQyNGZiZTQ1In0.jSz3aAe7dEylgwYM04V2wbEjb6_440U-cTSD-c183T6E3dFjL0cUPQiOHnT07Tz0D_WLfnSTNYjZYbgz6Qd0Hg"
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", @@ -1236,13 +1236,13 @@ "acr" : "gematik-ehealth-loa-high", "aud" : "https://erp-test.zentral.erp.splitdns.ti-dienste.de/", "azp" : "eRezeptApp", - "scope" : "e-rezept openid",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
- "auth_time" : 1729604806,
Timestamp der Authentisierung
- "exp" : 1729605108,
Gültigkeit des Tokens
+ "scope" : "openid e-rezept",
Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
+ "auth_time" : 1730127736,
Timestamp der Authentisierung
+ "exp" : 1730128039,
Gültigkeit des Tokens
"family_name" : "Bödefeld", - "iat" : 1729604808,
Zeitpunkt der Ausstellung des Tokens
- "jti" : "f8be652044d370a4"
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, 22 Oct 2024 15:46:52 +0200
\ No newline at end of file + \ No newline at end of file diff --git a/idp-client/pom.xml b/idp-client/pom.xml index cc8d945..57861a2 100644 --- a/idp-client/pom.xml +++ b/idp-client/pom.xml @@ -7,13 +7,13 @@ de.gematik.idp idp-global - 29.0.3 + 29.0.4 ../pom.xml de.gematik.idp idp-client - 29.0.3 + 29.0.4 jar diff --git a/idp-commons/pom.xml b/idp-commons/pom.xml index 7a15809..64923fd 100644 --- a/idp-commons/pom.xml +++ b/idp-commons/pom.xml @@ -6,12 +6,12 @@ de.gematik.idp idp-global - 29.0.3 + 29.0.4 ../pom.xml idp-commons - 29.0.3 + 29.0.4 diff --git a/idp-commons/src/main/java/de/gematik/idp/token/IdpJoseObject.java b/idp-commons/src/main/java/de/gematik/idp/token/IdpJoseObject.java index 0f3aefe..de7d27f 100644 --- a/idp-commons/src/main/java/de/gematik/idp/token/IdpJoseObject.java +++ b/idp-commons/src/main/java/de/gematik/idp/token/IdpJoseObject.java @@ -71,6 +71,10 @@ public ZonedDateTime getExpiresAt() { return getDateTimeClaim(EXPIRES_AT, this::getBodyClaims).orElseThrow(); } + public boolean isExpired() { + return ZonedDateTime.now().isAfter(getExpiresAt()); + } + public ZonedDateTime getExpiresAtBody() { return getBodyClaimAsZonedDateTime(EXPIRES_AT).orElseThrow(); } diff --git a/idp-commons/src/test/java/de/gematik/idp/token/JsonWebTokenTest.java b/idp-commons/src/test/java/de/gematik/idp/token/JsonWebTokenTest.java index 5160115..f21aa2f 100644 --- a/idp-commons/src/test/java/de/gematik/idp/token/JsonWebTokenTest.java +++ b/idp-commons/src/test/java/de/gematik/idp/token/JsonWebTokenTest.java @@ -82,6 +82,22 @@ void getTokenExp_ShouldBeCorrect() { .isBetween(ZonedDateTime.now().plusMinutes(4), ZonedDateTime.now().plusMinutes(6)); } + @Test + void token_isExpired_isFalse() { + final JsonWebToken jsonWebToken = + idpJwtProcessor.buildJwt(new JwtBuilder().expiresAt(ZonedDateTime.now().plusMinutes(5))); + + assertThat(jsonWebToken.isExpired()).isFalse(); + } + + @Test + void token_isExpired_isTrue() { + final JsonWebToken jsonWebToken = + idpJwtProcessor.buildJwt(new JwtBuilder().expiresAt(ZonedDateTime.now().minusMinutes(5))); + + assertThat(jsonWebToken.isExpired()).isTrue(); + } + @Test void getBodyClaims_shouldMatch() { final JsonWebToken jsonWebToken = diff --git a/idp-crypto/pom.xml b/idp-crypto/pom.xml index 4fc5a65..00520e5 100644 --- a/idp-crypto/pom.xml +++ b/idp-crypto/pom.xml @@ -6,12 +6,12 @@ de.gematik.idp idp-global - 29.0.3 + 29.0.4 ../pom.xml idp-crypto - 29.0.3 + 29.0.4 diff --git a/idp-report/pom.xml b/idp-report/pom.xml index a1012c7..ab27db8 100644 --- a/idp-report/pom.xml +++ b/idp-report/pom.xml @@ -6,7 +6,7 @@ de.gematik.idp idp-global - 29.0.3 + 29.0.4 idp-report diff --git a/idp-sektoral/pom.xml b/idp-sektoral/pom.xml index a5c1df7..ab862b5 100644 --- a/idp-sektoral/pom.xml +++ b/idp-sektoral/pom.xml @@ -7,12 +7,12 @@ de.gematik.idp idp-global - 29.0.3 + 29.0.4 ../pom.xml idp-sektoral - 29.0.3 + 29.0.4 jar diff --git a/idp-server/pom.xml b/idp-server/pom.xml index 787cd43..c5fc3de 100644 --- a/idp-server/pom.xml +++ b/idp-server/pom.xml @@ -7,12 +7,12 @@ de.gematik.idp idp-global - 29.0.3 + 29.0.4 ../pom.xml idp-server - 29.0.3 + 29.0.4 jar diff --git a/idp-test/pom.xml b/idp-test/pom.xml index 58430b7..5d806fa 100644 --- a/idp-test/pom.xml +++ b/idp-test/pom.xml @@ -6,11 +6,11 @@ de.gematik.idp idp-global - 29.0.3 + 29.0.4 ../pom.xml idp-test - 29.0.3 + 29.0.4 diff --git a/idp-testsuite/pom.xml b/idp-testsuite/pom.xml index 684a193..063d703 100644 --- a/idp-testsuite/pom.xml +++ b/idp-testsuite/pom.xml @@ -6,7 +6,7 @@ de.gematik.idp idp-testsuite - 29.0.3 + 29.0.4 jar diff --git a/pom.xml b/pom.xml index e5e52d1..29e7063 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ de.gematik.idp idp-global - 29.0.3 + 29.0.4 pom IDP