Я реализую запрос на аутентификацию SSO с помощью Python
После создания библиотеки SAML XML Snig LXML, я подписываю ее с помощью библиотеки XMLSEC и закрытого ключа PEM: < /p>
def sign_response(self, response, private_key_path, assertion_id_str, assertion):
try:
private_key = self.load_private_key(private_key_path)
private_key_pem = crypto.dump_privatekey(crypto.FILETYPE_PEM, private_key)
response_tree = etree.ElementTree(response)
sign_ctx = xmlsec.SignatureContext()
sign_key = Key.from_memory(private_key_pem, constants.KeyDataFormatPem, None)
sign_ctx.key = sign_key
signature_node = template.create(response_tree, constants.TransformExclC14N, constants.TransformRsaSha1, ns=None)
assertion.insert(1, signature_node)
ref = template.add_reference(signature_node, constants.TransformSha1, uri=f"#{assertion_id_str}")
template.add_transform(ref, constants.TransformEnveloped)
template.add_transform(ref, constants.TransformExclC14N)
tree.add_ids(response, ["ID"])
sign_ctx.sign(signature_node)
< /code>
Затем я проверяю подпись с помощью библиотеки XMLSEC и сертификата: < /p>
def verify_signature(self, response, certificate_path):
try:
cert_pem = self.o_load_cert(certificate_path)
xmlsec.tree.add_ids(response, ["ID"])
signature_node = xmlsec.tree.find_node(response, xmlsec.constants.NodeSignature)
ctx = xmlsec.SignatureContext()
key = xmlsec.Key.from_memory(cert_pem, xmlsec.constants.KeyDataFormatCertPem)
ctx.key = key
ctx.verify(signature_node)
print("Signature is valid.")
except xmlsec.Error as e:
print(f"XMLSec error during verification: {e}")
except Exception as e:
print(f"General error during verification: {e}")
< /code>
Результат заключается в том, что: подпись действительна < /strong>. Подпись не подтвердилась против ключа учетных данных , хотя они использовали тот же сертификат, который я использовал для проверки подписи.
Подробнее здесь: https://stackoverflow.com/questions/793 ... python-sso
Подпись не подтвердилась против ключа учетных данных, Python SSO ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как использовать AWS Python SDK при подключении с помощью учетных данных SSO
Anonymous » » в форуме Python - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-