использование pysaml2 — отсутствует спецификация entity_id

#python #saml #saml-2.0

#python #saml #saml-2.0

Вопрос:

Каков правильный формат данных для инициализации клиента pysaml2? Библиотека жалуется на это Missing entity_id specification , несмотря на наличие entityID в xml (ниже).

 spConfig = Saml2Config()
spConfig.load({
    'metadata': {
        'inline': [idp_metadata],
    },
    'service': {
        'sp': {
            'endpoints': {
                'assertion_consumer_service': [
                    (acs_url, BINDING_HTTP_REDIRECT),
                    (acs_url, BINDING_HTTP_POST),
                    (https_acs_url, BINDING_HTTP_REDIRECT),
                    (https_acs_url, BINDING_HTTP_POST)
                ],
            },
            # Don't verify that the incoming requests originate from us via
            # the built-in cache for authn request ids in pysaml2
            'allow_unsolicited': True,
            # Don't sign authn requests, since signed requests only make
            # sense in a situation where you control both the SP and IdP
            'authn_requests_signed': False,
            'logout_requests_signed': True,
            'want_assertions_signed': True,
            'want_response_signed': False,
        },
    },
})
saml_client = Saml2Client(config=spConfig)
 

XML:

 <?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor
  entityID="http://www.okta.com/[redacted]" 
  xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
...
 

Версия библиотеки является самой последней. python 3.10 работает на macOS Catalina.

Ответ №1:

Частичный ответ: pysaml2 хотел дополнительный параметр:

 settings = {
        'metadata': {
            'inline': [idp_metadata],
        },
        'entityid': ...
 

Документация ужасна, и очень неясно, является ли это полноценным решением.