Отримуємо зашифровані авторизаційні дані зашифрувавши тіло запиту “Процес створення JWE зашифрованих даних” та відправити “Запит створення технічної сесії”
Розшифровуємо отримані дані
Уточнення: URL криптування і розкриптування
{{url}}cipher/decrypt_by_jwk?message=
{{url}}cipher/encrypt_by_jwk?message=
- тільки для допомоги під час тестів! Їх заборонено виконувати з прод ключами.
Приклад по encrypt/decrypt
def encrypt_data(self, msg: str, use_server_public_key: bool = False) -> str:
"""Get compact JWE token with encrypted data"""
if not use_server_public_key:
with open(self.public_key, 'rb') as public_key_file:
public_key_raw = json.loads(public_key_file.read().decode())
public_key = jwk.JWK()
key_raw = self.server_public_key if use_server_public_key else public_key_raw
public_key.import_key(**key_raw)
protected_header = {'alg': 'ECDH-ES+A256KW', 'enc': 'A256GCM'}
jwetoken = jwe.JWE(msg.encode('utf-8'), recipient=public_key, protected=protected_header)
return jwetoken.serialize(compact=True)
def decrypt_data(self, msg: str) -> str:
"""Get decrypted data (from JWE)"""
with open(self.private_key, 'rb') as private_key_file:
private_key_raw = json.loads(private_key_file.read().decode())
private_key = jwk.JWK()
private_key.import_key(**private_key_raw)
jwetoken = jwe.JWE()
jwetoken.deserialize(msg, key=private_key)
return jwetoken.payload.decode()
Процес генерації комунікаційних JWK ключів клієнта
Генерація публічного та приватного ключа (JSON Web Key) здійснюється з наступними параметрами:
Об'єкт є зашифрованими даними.
Для створення необхідно вказати наступні параметри:
● Кодування даних, що шифруються UTF-8
● Алгоритм шифрування ECDH-ES+A256KW
● Метод шифрування A256GCM
● Та використовувати відповідний алгоритму публічний ключ.