Я реализую запрос на аутентификацию 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
Программы на Python
-
Anonymous
1737880515
Anonymous
Я реализую запрос на аутентификацию 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>
Результат заключается в том, что: [b] подпись действительна < /strong>. Подпись не подтвердилась против ключа учетных данных [/b], хотя они использовали тот же сертификат, который я использовал для проверки подписи.
Подробнее здесь: [url]https://stackoverflow.com/questions/79388199/signature-did-not-validate-against-the-credentials-key-python-sso[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия