2015-10-08 3 views
0

Я выполняю аутентификацию пользователей приложений, использующих djangosaml2. Использование NAMEID_FORMAT_TRANSIENT в моей SAML_CONFIG Словаре так:Настройки безопасности Django SAML

'service': { 
    # My SP SP 
    'sp': { 
     'name': 'My local SP', 
     'name_id_format': NAMEID_FORMAT_TRANSIENT, 
     'endpoints': { ... } 

Пользователь проходит проверку подлинности, но имя пользователя принимается в зашифрованном виде. Это требование от SP. Я вижу в документации pysaml (https://github.com/onelogin/python-saml), что есть «безопасность» набор параметров и один из параметров есть

"nameIdEncrypted": False 

Мой вопрос: Как включить «безопасность» параметры в SAML_CONFIG словарь в settings.py? следующее не похож на работу:

'service': { 
    'sp': { ... } 
} 
'metadata': { 
    .... 
} 
'security': { 
     # The nameID of the <saml:logoutRequest> sent by the SP will be encrypted 
     "nameIdEncrypted": True, 
     # Indicates whether the <samlp:AuthnRequest> messages sent by this SP 
     # will be signed. [Metadata of the SP will offer this info] 
     "authnRequestsSigned": False 
} 

Edit: исправляющие себя: Работа с моей SP я удостоверился, что метаданные и сертификаты, являются правильными и моим пользователь может проверить подлинность, если безопасность выключена на стороне SP. Однако, когда они правильно активировать функции безопасности для моего сайта я вижу следующее в моих журналах, когда первоначальный запрос SAML переходит:

INFO 2015-10-13 10: 00: 43478 ответ STATUS_OK 3188 Не успешная операция: подписи требуется ERROR 2015-10-13 10: 00: 43478 client_base parse_authn_request_response 3188 ошибка статуса SAML: Подпись требуется от урновых: оазис: названий: дц: SAML: 2.0: статус: Запрос

Тем не менее проблема остается, как для передачи настроек безопасности в словаре SAML_CONFIG. Я попытался установить их на уровне корня или под «sp» безрезультатно. Другой способ - поместить их в отдельный json-файл, и djangosaml2 каким-то образом использует этот файл, но я не вижу, как это сделать.

+0

Обратите внимание, что вы не используете pysaml2, вы используете python-saml – smartin

ответ

0

Посмотрите на этот конкретный удлинитель django-saml (https://github.com/KristianOellegaard/django-saml-service-provider).

Но питона-SAML вы можете найти Джанго-демо, которое покажет вам, как справиться с этим настройки: https://github.com/onelogin/python-saml/tree/master/demo-django Вы можете увидеть, как настройки считываются из папки SAML.

nameIdEncrypted false означает, что идентификатор NameID, отправленный из SP, не отправляется зашифрованным. Если вы хотите выбросить исключение, если полученный идентификатор NameID из IdP не зашифрован, вы можете установить для функции wantNameIdEncrypted значение true.

Пожалуйста, прочитайте документацию: https://github.com/onelogin/python-saml#settings

И если вы находите любой вопрос, пожалуйста, сообщите об этом на GitHub :)

0

, как smartin упоминалось, вы смотрите в документации неправильной упаковки. Документация pySAML2 here.

Чтобы ответить на ваш вопрос:

"service": { 
    "sp": { 
     "authn_assertions_signed": "true", 
    } 
} 

Вам нужно установить authn_assertions_signed истина/ложь, так что IDP знает это зр предпочтение.

Смежные вопросы