Es kann keine Möglichkeit gefunden werden, ein JWE-Token in Python (aber in ASP.Net erstellt) mit jwcrypto zu entschlüssPython

Python-Programme
Guest
 Es kann keine Möglichkeit gefunden werden, ein JWE-Token in Python (aber in ASP.Net erstellt) mit jwcrypto zu entschlüss

Post by Guest »

Ich habe Schwierigkeiten, mein JWE-Token in Python zu entschlüsseln, nachdem es mit ASP.Net verschlüsselt wurde.

Hier ist mein C#-Code (gefälschte Passwörter):

Code: Select all

var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("ae743683f78d498a9026d0c87020b9d3"));
var secret = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("MbPeShVmYq3t6w9z"));

var signingCreds = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);
var encryptingCreds = new EncryptingCredentials(secret, SecurityAlgorithms.Aes128KW, SecurityAlgorithms.Aes128CbcHmacSha256);
var handler = new JwtSecurityTokenHandler();

var jwtSecurityToken = handler.CreateJwtSecurityToken(
_issuer,
_audience,
new ClaimsIdentity(claimsList),
DateTime.Now,
_expires,
DateTime.Now,
signingCreds,
encryptingCreds);

var token = handler.WriteToken(jwtSecurityToken);
Das Token sieht bei Verwendung der verschlüsselnden Anmeldeinformationen so aus (sollte typ nicht JWE sein?):

Code: Select all

{
{
"alg": "A128KW",
"enc": "A128CBC-HS256",
"typ": "JWT"
}.{
"userId": "151aedd5-76c3-4eb2-8b73-a16004315731",
"prop1": "test1",
"prop2": "test2",
"nbf": 1549894420,
"exp": 1550240017,
"iat": 1549894420,
"iss": "https://localhost:56880/",
"aud": "https://localhost:56880/"
}
}
Dies ist das Token, wenn es verschlüsselt ist:

Code: Select all

eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwidHlwIjoiSldUIn0.4w4MZv5WFALGbXhmaYqtTv1VGrUpQpDJ0jN8VmLpQwDRU0j16RbPyg.hGt_z5j8THCiNEhpVvlJmw.WehLBKdyB_eYtDRvHxJHgYwa4GA7f8oKYf3GgIqAAih1eVqU084kHu1lIhC8ibxxziwmFZ4IhBFT-nWgWQrH9thhgqndF4ojtGRBgdHtW3GDAgYV6fgI11h6meyBBuLBs7mkQC5PX8EYsMTDiNE9iNTH4pWtDElc07CGGXlHsm6ntuq7G3sinagZtZMchy1shTY73NTS40FqW37C9HTIPDbrTdsm-USHcGaBMLSmjF5eOZ9Po3p4fhRT42l_gwJc9tlurttYBucvIiO1r_3NB8xGeORizYW1P_P9XGusAFy4L8h8XU9P0FctsMjUFy64LOIK8Qv8YZVq4q82vv-r9uGH6bApUdpCIcYFfGu86w63t1QLQcDT_OYMCqwo9ZmZP5Gd07lB1ypNZbP6hQTgkosp3js3i4K4bFQY7CiSXB_pSTH623TMLHNfUXWMRMIBHmXGr-zTZiKj5vkVUZLjNg.sdBUYvadnwMhkCXP8sABgA
Ich habe ein paar verschiedene Python-Pakete ausprobiert, darunter 2 Versionen von Jose (

Code: Select all

python-jose
und jose), aber ich konnte jose nicht dazu bringen, mit der Verschlüsselung zu arbeiten (scheint den A128KW-Algorithmus nicht zu unterstützen).

Ich bin jetzt Ich versuche jwcrypto, aber es scheint zu erwarten, dass ich einen neuen Schlüssel erzeuge, anstatt meinen vorhandenen zu verwenden (den, der zum Verschlüsseln des JWT in ASP.Net verwendet wird):

Code: Select all

from jwcrypto import jwk, jwe

encrypted_token = request.cookies.get(cookie_name)
private_key = "MbPeShVmYq3t6w9z"

jwk_key = jwk.JWK()

# not sure how to use my existing "private_key" value,
# and no support for "A128KW" with jwcrypto despite
# the documentation saying there is support
key = jwk_key.import_key(alg='A128KW', kty="A256CBC-HS512")

jwe_token = jwe.JWE()
jwe_token.deserialize(encrypted_token)
jwe_token.decrypt(key) # decrypt requires an instance of JWK
decrypted_payload = jwe_token.payload
Wie kann ich das zum Laufen bringen? Vielen Dank für jeden Rat, den Sie geben können.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post