code | JWEeyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiY3R5IjoiTkpXVCIsImV4cCI6MTc1MDQyNjkwN30..Pqp4zHWUryzBp537.ii7uYgIgAgwM0_zGbumktVv_gIrMK2HQAs8zuBla77GEP6T9bn3uqB3sW3GwP2OtmvBlLcTLsEXjU-_2Ck0k1QSx8rl8_GpHb0vt8yVJrU9YmXDJwBqTKB5ZXOSdnRXueNZUOBLQrnp5kY3GDW1y5TbzK1hAg8P_LVfzWadXY6m5Ag2t47pCIqf3n0AkH4W4Z8dY2rW1e0WC0xusLtGKrO94thQs5-OJx4RQTXfXoNdjetAavliQWqJwE4AXx_bDgN58KQx0LOc64KPfPjZdJqJwZ-tM8H-0Wn7a6PY_xwMyV5uUdQEZOTc3vphBhLObi59bWdoFGiyprpCF4nRBncyBtlxpzYhSnS84uGwL_Lu-U2W7sEzc40_J9N8iN4r6ycmyBCWdwHqTub5OA68f3c1DviteTdxYJT5bE2-7GAydJAoiBaKB5dm6oNetRVw22Il8-ms0SHSDIqgXr-RJihS4j6_urH8_FZVqQXPRq2twe67Aq-F1W4GilfhLueMkDvSH86nK8nwL1UsI3-qk486q4AJX9Vdd15byPPlxj54g1lGFoszaCEoVuBhSkU2SkY3LzGlMlGF6oHTpIHmHQk3q9l30VgDmubJNLS_JJQn-WAW3Qm945ZaGb2-4_sotUv5vPmrLE4BXAuONMxXysJ3KOoA5DFV7CiGfJjRLqfYHvjLmmS49jUUF9pVJsTQfT5inUKq12HCay_L-8KmV3QywNg5caLbkjOLrOTpBA0H9kNy2SarIyzx1eW0705RiVRYtsUkmfqdL8wwnPaKzxq-7mSCMFe5kZpgXvmgS2vZwYJBWIiF-vmMTQQbZupVHZfi8NB4ZzVqdMeerhkw04wtv0UrkkaWcBY9-j55b-FtbGdFBiDVnhHFEHJg2t9Kv75xsoIBf2oXKgElNHqc47rYQWfgLNrBKsDY_sLXUwmlxjtCoHkv2twYV9m_-IoK5DqT9sZtyNL7Gn-ubGhoK3JzcRWACeMoqY08sHgoQaEuKBWOlhIds2GlWHaYlce6oscClgbyxmd_60Xgt3Swhiwxl4H9s9CpZPZAYmtvyXchOdmQ2qEO_pBRNgBduLW3AedIII_xqsBUwLzSjpQKMv6C1JAUL-Ky3s6d0Qba9dwU73bgvmF9PDmrT5jv7yPfo8eQiiQ52PGM_HgKILZGvd0GPHgRqvkB19NuolnC1TkZZcGEkFYQPlAziF0DyuNBENprx4-Jkn-aTkC877XoNzbTA24GsuMuYpcOZZtSInNIX4RDwjGi5vzcNJ-GnPqHX6xVNB2yYlp_Dyg5cUig341qvPYp3XpaboxzpOKdBVriwcXhVmAxHOGxg7Dtw6txPXI-wHlabplJugeJ2MZ9rg_jf2CFIgbBNAs7k0vKYiZo0njuHtG_BNUca5612BfvZr1XKb2ifHXg72p2nX0PoeAX4XHaqFGXH_DcvEqZ9Vi1bCgruFoThiq8IrWiHh5AUyePY49fCA0s.JgbTk397IIoTSoedMLCBzg 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":1750426907} {
"alg" : "dir",
"enc" : "A256GCM",
"cty" : "NJWT",
"exp" : 1750426907Gültigkeit des Tokens
} Body{"njwt":"eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiZ2VtYXRpayBNdXN0ZXJrYXNzZTFHS1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA2NzU5MDMiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NDcxOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiMFpjM2t2eWdycmpyZHg3V1hTT1NwSEN6b2F1eVJnd0IiLCJvcmdhbml6YXRpb25JSyI6Ijk5OTU2Nzg5MCIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRnJhbnogRGFuaWVsIEp1bGlhbiIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJ6d2FOdVJsTkt6LTNoUmRNOUNjN1R6OG5OM3dFN204LSIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTc1MDQyNjg0NywicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoielF2RXRrSUJLVXg0dmhoUm5kcUp1TGhLWV9XcTVTclUiLCJleHAiOjE3NTA0MjY5MDcsImZhbWlseV9uYW1lIjoiSMO8bGxtYW5uIiwiaWF0IjoxNzUwNDI2ODQ3LCJjb2RlX2NoYWxsZW5nZSI6ImVzMlhkSHUzblMwT29OZmF6VlhDNjZrWkQ0VXdXRkNMdUdhaEZ1QU9NU0EiLCJqdGkiOiJmNTg2Y2NkMTBlYzFhZDZlIn0.M0vRa1ohLfTRtONfwRCoH7FNhaUrViSK0dHVXhRed2wivh2YVnBXdaoU6DhpTssBLTMG1q4A2CqJ_aq0kQTO1Q"} {
"njwt" : "eyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiZ2VtYXRpayBNdXN0ZXJrYXNzZTFHS1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA2NzU5MDMiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NDcxOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiMFpjM2t2eWdycmpyZHg3V1hTT1NwSEN6b2F1eVJnd0IiLCJvcmdhbml6YXRpb25JSyI6Ijk5OTU2Nzg5MCIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRnJhbnogRGFuaWVsIEp1bGlhbiIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJ6d2FOdVJsTkt6LTNoUmRNOUNjN1R6OG5OM3dFN204LSIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTc1MDQyNjg0NywicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoielF2RXRrSUJLVXg0dmhoUm5kcUp1TGhLWV9XcTVTclUiLCJleHAiOjE3NTA0MjY5MDcsImZhbWlseV9uYW1lIjoiSMO8bGxtYW5uIiwiaWF0IjoxNzUwNDI2ODQ3LCJjb2RlX2NoYWxsZW5nZSI6ImVzMlhkSHUzblMwT29OZmF6VlhDNjZrWkQ0VXdXRkNMdUdhaEZ1QU9NU0EiLCJqdGkiOiJmNTg2Y2NkMTBlYzFhZDZlIn0.M0vRa1ohLfTRtONfwRCoH7FNhaUrViSK0dHVXhRed2wivh2YVnBXdaoU6DhpTssBLTMG1q4A2CqJ_aq0kQTO1Q"Ein verschachtelt enthaltenes JWT
} JWTeyJhbGciOiJCUDI1NlIxIiwidHlwIjoiSldUIiwia2lkIjoicHVrX2lkcF9zaWcifQ.eyJvcmdhbml6YXRpb25OYW1lIjoiZ2VtYXRpayBNdXN0ZXJrYXNzZTFHS1ZOT1QtVkFMSUQiLCJwcm9mZXNzaW9uT0lEIjoiMS4yLjI3Ni4wLjc2LjQuNDkiLCJpZE51bW1lciI6IlgxMTA2NzU5MDMiLCJhbXIiOlsibWZhIiwic2MiLCJwaW4iXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo0NDcxOSIsInJlc3BvbnNlX3R5cGUiOiJjb2RlIiwic25jIjoiMFpjM2t2eWdycmpyZHg3V1hTT1NwSEN6b2F1eVJnd0IiLCJvcmdhbml6YXRpb25JSyI6Ijk5OTU2Nzg5MCIsImNvZGVfY2hhbGxlbmdlX21ldGhvZCI6IlMyNTYiLCJnaXZlbl9uYW1lIjoiRnJhbnogRGFuaWVsIEp1bGlhbiIsInRva2VuX3R5cGUiOiJjb2RlIiwibm9uY2UiOiJ6d2FOdVJsTkt6LTNoUmRNOUNjN1R6OG5OM3dFN204LSIsImNsaWVudF9pZCI6ImVSZXplcHRBcHAiLCJzY29wZSI6Im9wZW5pZCBlLXJlemVwdCIsImF1dGhfdGltZSI6MTc1MDQyNjg0NywicmVkaXJlY3RfdXJpIjoiaHR0cDovL3JlZGlyZWN0LmdlbWF0aWsuZGUvZXJlemVwdCIsInN0YXRlIjoielF2RXRrSUJLVXg0dmhoUm5kcUp1TGhLWV9XcTVTclUiLCJleHAiOjE3NTA0MjY5MDcsImZhbWlseV9uYW1lIjoiSMO8bGxtYW5uIiwiaWF0IjoxNzUwNDI2ODQ3LCJjb2RlX2NoYWxsZW5nZSI6ImVzMlhkSHUzblMwT29OZmF6VlhDNjZrWkQ0VXdXRkNMdUdhaEZ1QU9NU0EiLCJqdGkiOiJmNTg2Y2NkMTBlYzFhZDZlIn0.M0vRa1ohLfTRtONfwRCoH7FNhaUrViSK0dHVXhRed2wivh2YVnBXdaoU6DhpTssBLTMG1q4A2CqJ_aq0kQTO1Q Headers{"alg":"BP256R1","typ":"JWT","kid":"puk_idp_sig"} {
"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{"organizationName":"gematik Musterkasse1GKVNOT-VALID","professionOID":"1.2.276.0.76.4.49","idNummer":"X110675903","amr":["mfa","sc","pin"],"iss":"http://localhost:44719","response_type":"code","snc":"0Zc3kvygrrjrdx7WXSOSpHCzoauyRgwB","organizationIK":"999567890","code_challenge_method":"S256","given_name":"Franz Daniel Julian","token_type":"code","nonce":"zwaNuRlNKz-3hRdM9Cc7Tz8nN3wE7m8-","client_id":"eRezeptApp","scope":"openid e-rezept","auth_time":1750426847,"redirect_uri":"http://redirect.gematik.de/erezept","state":"zQvEtkIBKUx4vhhRndqJuLhKY_Wq5SrU","exp":1750426907,"family_name":"Hüllmann","iat":1750426847,"code_challenge":"es2XdHu3nS0OoNfazVXC66kZD4UwWFCLuGahFuAOMSA","jti":"f586ccd10ec1ad6e"} {
"organizationName" : "gematik Musterkasse1GKVNOT-VALID",
"professionOID" : "1.2.276.0.76.4.49",
"idNummer" : "X110675903",
"amr" : [ "mfa", "sc", "pin" ],
"iss" : "http://localhost:44719",
"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" : "0Zc3kvygrrjrdx7WXSOSpHCzoauyRgwB",server-nonce. Wird verwendet um noise hinzuzufügen.
"organizationIK" : "999567890",
"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" : "Franz Daniel Julian",
"token_type" : "code",
"nonce" : "zwaNuRlNKz-3hRdM9Cc7Tz8nN3wE7m8-",String zu Verhinderung von CSRF-Attacken. Dieser Wert ist optional. Wenn er mitgegeben wird muss der gleiche Wert im abschließend ausgegebenen ID-Token wieder auftauchen. WICHTIG: Darf nicht länger als 512 Zeichen sein.
"client_id" : "eRezeptApp",Die client_id des Clients. Wird bei der Registrierung vergeben.
"scope" : "openid e-rezept",Der Scope entspricht dem zwischen E-Rezept-Fachdienst und IDP festgelegten Wert. Mit diesem antwortet der E-Rezept-Fachdienst bei fehlendem ACCESS_TOKEN und http-Statuscode 401.
"auth_time" : 1750426847,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" : "zQvEtkIBKUx4vhhRndqJuLhKY_Wq5SrU",Der state der Session. Sollte dem zufällig generierten state-Wert aus der initialen Anfrage entsprechen.
"exp" : 1750426907,Gültigkeit des Tokens
"family_name" : "Hüllmann",
"iat" : 1750426847,Zeitpunkt der Ausstellung des Tokens
"code_challenge" : "es2XdHu3nS0OoNfazVXC66kZD4UwWFCLuGahFuAOMSA",Der Hashwert des Code-Verifiers wird zum IDP als Code-Challenge gesendet. Teil von PKCE.
"jti" : "f586ccd10ec1ad6e"A unique identifier for the token, which can be used to prevent reuse of the token. Value is a case-sensitive string.
} SignatureWas verified using Key puk_idp_sig Encryption infoWas 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 |
key_verifier | JWEeyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSIsImN0eSI6IkpTT04iLCJlcGsiOnsia3R5IjoiRUMiLCJ4IjoiRW1Ha09BUEx0aXIzX1p5V3dQczN6OFRWRU1ad1pyT0hMRS1mVUFEYURjayIsInkiOiJBX1Y5aWJqWTE4RDRLalN0Z0VicG14Q0ViU2g0U1NUaVFVWklZRVFDMkZZIiwiY3J2IjoiQlAtMjU2In19..SfVt9jR533Py-8RK.JGL8eWzM4LJyNAEn6W0Zo2gYA9D4ZTCrbUUg1tC6fKnyIycP-zgijQ8UwmCe9nhGTYMQkzhtaWKB_yTsyI2J8FiLU7aBFOZ15wVWcOutsJWgqixHpfmqy4xyLM3l9Bwbza_kELMC8iWt-girCFkZw_SmmXFA0kWCsg.T4iAjGjkbTetye2QjGSwuA 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{"alg":"ECDH-ES","enc":"A256GCM","cty":"JSON","epk":{"kty":"EC","x":"EmGkOAPLtir3_ZyWwPs3z8TVEMZwZrOHLE-fUADaDck","y":"A_V9ibjY18D4KjStgEbpmxCEbSh4SSTiQUZIYEQC2FY","crv":"BP-256"}} 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" : "EmGkOAPLtir3_ZyWwPs3z8TVEMZwZrOHLE-fUADaDck",X-Koordinate des öffentlichen Punkts des Schlüssels
"y" : "A_V9ibjY18D4KjStgEbpmxCEbSh4SSTiQUZIYEQC2FY",Y-Koordinate des öffentlichen Punkts des Schlüssels
"crv" : "BP-256"
}
} Body{"token_key":"_Hjr22q0D9YJHpor_DXO2TrILHaxPfRMZTqu3CXHxx4","code_verifier":"lO3zBd7Hsm-0GnDrS8oVxViY2QabDQtp-HLPI0gxXrE"} 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" : "_Hjr22q0D9YJHpor_DXO2TrILHaxPfRMZTqu3CXHxx4",
"code_verifier" : "lO3zBd7Hsm-0GnDrS8oVxViY2QabDQtp-HLPI0gxXrE"
} Encryption infoWas 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. |