python - pysaml2 - AuthnContextClassRef,PasswordProtectedTransport
问题描述
我正在努力了解如何配置 pysaml2 并在我的请求中添加 AuthnContext。我有一个 SP,当客户端执行登录请求时,我需要添加以下请求:
<samlp:RequestedAuthnContext>
<saml:AuthnContextClassRef>
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
我很挣扎,因为我尽我所能,我相信可以在我的请求中添加它,因为在这里https://github.com/IdentityPython/pysaml2/blob/master/src/saml2/samlp.py
我可以看到:
AUTHN_PASSWORD = "urn:oasis:names:tc:SAML:2.0:ac:classes:Password"
AUTHN_PASSWORD_PROTECTED = \
"urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"
我只是不知道如何引用它。我有一个简单的配置,如下所示:
"service": {
"sp": {
"name": "BLABLA",
"allow_unsolicited": true,
"want_response_signed": false,
"logout_requests_signed": true,
"endpoints": {
"assertion_consumer_service": ["https://mywebste..."],
"single_logout_service": [["https://mywebste...", "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"]]
},
"requestedAuthnContext" : true
}
}
有人知道如何添加上述配置吗?即使通过阅读他们的文档,我也很难理解如何构建配置字典。有任何想法吗?如果配置不允许,我很乐意直接在代码中添加“PasswordProtectedTransport”。但我不知道该怎么做。
谢谢,R
解决方案
在某些时候,您的客户会致电create_authn_request(...)
(或prepare_for_authenticate(...)
,或prepare_for_negotiated_authenticate(...)
)。您应该传递额外的 arg requested_authn_context
。
是一个包含想要requested_authn_context
的类型的对象。saml2.samlp.RequestedAuthnContext
AuthnContextClassRef
...
from saml2.saml import AUTHN_PASSWORD_PROTECTED
from saml2.saml import AuthnContextClassRef
from saml2.samlp import RequestedAuthnContext
requested_authn_context = RequestedAuthnContext(
authn_context_class_ref=[
AuthnContextClassRef(AUTHN_PASSWORD_PROTECTED),
],
comparison="exact",
)
req_id, request = create_authn_request(
...,
requested_authn_context=requested_authn_context,
)
推荐阅读
- react-native - 找不到 support-v4.aar (com.android.support:support-v4:25.2.0)
- javascript - 将组件整体的onClick和组件内的按钮分开
- mysql - 如何更改 MYSQL 数据库列归档排序规则
- mysql - MySQL 空行仅在表为空时显示
- vba - 根据保存位置/文件名更改工作簿的保护
- javascript - 如何在 .org 版本的网站上静态化 HTML 中的“.com”内容
- c# - 无法传递对象的引用
- cassandra - 将代码从 thrift 移动到 CQL 时不需要的 KEY 列
- javascript - 我想在同一张卡片中显示数据作为两列任何建议
- reactjs - 如何在 React 中使用 Material UI 图标?