实现eIDAS-Node 2.3.x特定连接器和代理服务。
项目描述
eIDAS特定节点
Django实现成员特定 连接器 和 代理服务 用于 CEF eIDAS Node 版本2.4及以上。
需求
- Django 2.2.x
- Django AppSettings >= 0.5
- lxml
- xmlsec
- Apache Ignite Python客户端(可选)
更改
有关更改,请参阅CHANGELOG.md。
特定代理服务
示例设置在samples/proxy_service_settings.py
中提供。
用法
要使用eIDAS代理服务,调整Django设置
- 设置Django模板引擎和静态文件。
- 将
'eidas_node.proxy_service.apps.ProxyServiceConfig'
添加到INSTALLED_APPS
。 - 将
ROOT_URLCONF
设置为'eidas_node.proxy_service.urls'
或在URL配置中包含它。 - 提供必需的配置选项
PROXY_SERVICE_REQUEST_TOKEN
、PROXY_SERVICE_RESPONSE_TOKEN
、PROXY_SERVICE_LIGHT_STORAGE
和PROXY_SERVICE_IDENTITY_PROVIDER
(见下文)。
设置
PROXY_SERVICE_REQUEST_TOKEN
设置对应于传入光请求的光令牌。以下项目组成的字典
HASH_ALGORITHM
(可选,默认'sha256'
):用于令牌摘要的哈希算法。SECRET
(必需):与eIDAS节点共享的令牌密钥。ISSUER
(必需):光令牌的发行者。LIFETIME
(可选,默认10
):光令牌的有效期,以分钟为单位,直到被视为过期。设置为0
表示无限期。PARAMETER_NAME
(可选,默认'token'
):提供编码光令牌的HTTP POST参数名称。
PROXY_SERVICE_RESPONSE_TOKEN
设置对应于传出光响应的光令牌。以下项目组成的字典
HASH_ALGORITHM
(可选,默认'sha256'
):用于令牌摘要的哈希算法。SECRET
(必需):与eIDAS节点共享的令牌密钥。ISSUER
(必需):光令牌的发行者。PARAMETER_NAME
(可选,默认'token'
):提供编码光令牌的HTTP POST参数名称。
PROXY_SERVICE_LIGHT_STORAGE
设置用于存储光请求和响应的存储。以下项目组成的字典
BACKEND
(可选,默认'eidas_node.storage.ignite.IgniteStorage'
):与光存储通信的后端类。OPTIONS
(必需):所选后端的配置字典。《IgniteStorage》后端需要以下选项host
:Apache Ignite服务主机。port
:Apache Ignite服务端口。request_cache_name
:检索光请求的缓存(例如,nodeSpecificProxyserviceRequestCache
)。response_cache_name
:存储光响应的缓存(例如,specificNodeProxyserviceResponseCache
)。timeout
:套接字操作的超时时间。
PROXY_SERVICE_IDENTITY_PROVIDER
设置与身份提供者交互的参数。以下项目组成的字典
ENDPOINT
(必需):身份提供者期望的认证请求的URL。REQUEST_ISSUER
(必需):在身份提供者处注册的认证请求的发行者。KEY_FILE
(可选,默认None
):解密身份提供者认证响应的密钥路径。CERT_FILE
(可选,默认None
):验证身份提供者认证响应签名的证书路径。REQUEST_SIGNATURE
(字典,必需,使用{}
禁用签名):对发送给服务提供商的SAML请求进行签名的选项KEY_FILE
(必需,字符串):签名密钥的路径。CERT_FILE
:(必需,字符串):相应证书的路径。SIGNATURE_METHOD
(可选,字符串,默认RSA_SHA512
):XML签名方法。DIGEST_METHOD
(可选,字符串,默认SHA512
):XML摘要方法。
PROXY_SERVICE_EIDAS_NODE
设置与eIDAS节点交互的参数。以下项目组成的字典
PROXY_SERVICE_RESPONSE_URL
(必需):eIDAS节点期望的认证响应的URL(例如,https://test.example.net/EidasNode/SpecificProxyServiceResponse
)。RESPONSE_ISSUER
(必需):在eIDAS节点配置中指定的光响应的发行者。
PROXY_SERVICE_TRANSIENT_NAME_ID_FALLBACK
可选布尔值,默认禁用。如果启用,则必须设置PROXY_SERVICE_AUXILIARY_STORAGE
。如果请求中请求的是临时名称ID格式,但响应中提供了不同的格式,则生成新的随机临时ID,而不是提供的ID。
PROXY_SERVICE_TRACK_COUNTRY_CODE
可选布尔值,默认禁用。如果启用,则必须设置PROXY_SERVICE_AUXILIARY_STORAGE
。一旦启用,请求的国家代码将与对应请求的状态一起记录。
PROXY_SERVICE_AUXILIARY_STORAGE
一个辅助存储,用于在请求处理期间保存一些必要的响应元数据。如果启用PROXY_SERVICE_TRACK_COUNTRY_CODE
或PROXY_SERVICE_TRANSIENT_NAME_ID_FALLBACK
,则此存储是必需的。
以下项目组成的字典
BACKEND
(可选,默认'eidas_node.storage.ignite.AuxiliaryIgniteStorage'
):与光存储通信的后端类。OPTIONS
(必需):一个包含所选后端配置的字典。AuxiliaryIgniteStorage
后端期望以下选项host
:Apache Ignite服务主机。port
:Apache Ignite服务端口。cache_name
:存储数据的缓存。prefix
:缓存键的前缀(可选)。timeout
:套接字操作的超时时间。
PROXY_SERVICE_LEVELS_OF_ASSURANCE
一个可选的映射,将认证上下文类(str
)映射到保证水平(eidas_node.constants.LevelOfAssurance
)。默认映射为空,因此其他类(保证水平除外)将被识别为错误并传播错误。示例
from eidas_node.constants import LevelOfAssurance
PROXY_SERVICE_LEVELS_OF_ASSURANCE = {
'urn:oasis:names:tc:SAML:2.0:ac:classes:Password': LevelOfAssurance.LOW,
}
自定义
您可以通过在eidas_node.proxy_service.views
中子类化视图类、覆盖必要的方法和调整URL配置来自定义授权流程。
CZ NIA
eidas_node.proxy_service.cznia
(ROOT_URLCONF = 'eidas_node.proxy_service.cznia.urls'
)包含CZ NIA(捷克共和国官方身份提供者)所需的修改,以下设置
PROXY_SERVICE_STRIP_PREFIX
(布尔值,可选,默认False
):如果主题ID以'CZ/CZ/'
前缀开头,则将其删除。
特定连接器
示例设置在samples/connector_settings.py
中提供。
用法
要使用eIDAS连接器,调整Django设置
- 设置Django模板引擎和静态文件。
- 将
'eidas_node.connector.apps.ConnectorConfig'
添加到INSTALLED_APPS
。 - 将
ROOT_URLCONF
设置为'eidas_node.connector.urls'
或在您的URL配置中包含它。 - 提供必需的配置选项
CONNECTOR_REQUEST_TOKEN
、CONNECTOR_RESPONSE_TOKEN
、CONNECTOR_LIGHT_STORAGE
和CONNECTOR_SERVICE_PROVIDER
(见下文)。
视图
将ROOT_URLCONF
设置为eidas_node.connector.urls
将为您提供三个主要视图
-
/CountrySelector
:从服务提供商接收SAML请求和Relay State,并允许用户选择其国家(除非已经提供),然后将SAML请求转发到/ServiceProviderRequest
端点。- 方法:HTTP POST。
- POST参数
SAMLRequest
(必需):转发到eIDAS网络的SAML请求。RelayState
(必需):中继状态。country
或CONNECTOR_SERVICE_PROVIDER['COUNTRY_PARAMETER']
中设置的值(可选):公民国家代码。
-
/ServiceProviderRequest
:从服务提供商接收SAML请求、Relay State和公民国家代码,并将请求转发到eIDAS网络。- 方法:HTTP POST。
- POST参数
SAMLRequest
(必需):转发到eIDAS网络的SAML请求。RelayState
(必需):中继状态。country
或CONNECTOR_SERVICE_PROVIDER['COUNTRY_PARAMETER']
中设置的值(必需):公民国家代码。
-
/ConnectorResponse
:接收来自eIDAS网络的轻量级令牌,并将相应的轻量级响应转发给服务提供商。- 方法:HTTP POST。
- POST参数
token
或CONNECTOR_RESPONSE_TOKEN['PARAMETER_NAME']
中设置的值(必需):与轻量级响应相对应的轻量级令牌。
将ROOT_URLCONF
设置为eidas_node.connector.demo.urls
将为您提供另外两个视图
/DemoServiceProviderRequest
:用于向特定连接器发送预设SAML请求的演示服务提供商页面。/DemoServiceProviderResponse
:显示来自特定连接器的SAML响应的演示服务提供商页面。
设置
CONNECTOR_REQUEST_TOKEN
出站轻量级请求的对应轻量级令牌的设置。包含以下项的字典
HASH_ALGORITHM
(可选,默认'sha256'
):用于令牌摘要的哈希算法。SECRET
(必需):与eIDAS节点共享的令牌密钥。ISSUER
(必需):光令牌的发行者。PARAMETER_NAME
(可选,默认'token'
):提供编码光令牌的HTTP POST参数名称。
CONNECTOR_RESPONSE_TOKEN
入站轻量级响应的对应轻量级令牌的设置。包含以下项的字典
HASH_ALGORITHM
(可选,默认'sha256'
):用于令牌摘要的哈希算法。SECRET
(必需):与eIDAS节点共享的令牌密钥。ISSUER
(必需):光令牌的发行者。PARAMETER_NAME
(可选,默认'token'
):提供编码光令牌的HTTP POST参数名称。LIFETIME
(可选,默认10
):光令牌的有效期,以分钟为单位,直到被视为过期。设置为0
表示无限期。
CONNECTOR_LIGHT_STORAGE
设置用于存储光请求和响应的存储。以下项目组成的字典
BACKEND
(可选,默认'eidas_node.storage.ignite.IgniteStorage'
):与光存储通信的后端类。OPTIONS
(必需):所选后端的配置字典。《IgniteStorage》后端需要以下选项host
:Apache Ignite服务主机。port
:Apache Ignite服务端口。request_cache_name
:检索轻量级请求的缓存(例如,specificNodeConnectorRequestCache
)。response_cache_name
:存储轻量级响应的缓存(例如,nodeSpecificConnectorResponseCache
)。timeout
:套接字操作的秒数超时。
CONNECTOR_SERVICE_PROVIDER
与服务提供商交互的设置。包含以下项的字典
ENDPOINT
(必需):服务提供商期望身份验证响应的URL。CERT_FILE
(可选,默认None
):用于验证服务提供商身份验证请求签名的证书路径。REQUEST_ISSUER
(必填): 期望的服务提供方认证请求的发行者。RESPONSE_ISSUER
(必填): 在服务提供方注册的认证响应的发行者。COUNTRY_PARAMETER
(可选,默认country
): 包含公民国家代码的 POST 参数名称,用于/CitizenCountrySelector
和/ServiceProviderRequest
视图。RESPONSE_SIGNATURE
(字典,必填,使用{}
来禁用签名): 用于对返回给服务提供方的 SAML 响应进行签名的选项KEY_FILE
(必需,字符串):签名密钥的路径。CERT_FILE
:(必需,字符串):相应证书的路径。SIGNATURE_METHOD
(可选,字符串,默认RSA_SHA512
):XML签名方法。DIGEST_METHOD
(可选,字符串,默认SHA512
):XML摘要方法。
RESPONSE_ENCRYPTION
(字典,必填,使用{}
来禁用加密): 用于加密返回给服务提供方的 SAML 响应的选项CERT_FILE
: (必填,字符串): 用于加密生成的加密密钥的证书路径。ENCRYPTION_METHOD
(可选,字符串,默认AES256_GCM
): XML 加密方法。 libxmlsec1 >= 1.2.27 支持以下加密方法:AES256_GCM
、AES192_GCM
和AES168_GCM
。旧版 libxmlsec1 支持以下加密方法:AES256_CBC
、AES192_CBC
、AES168_CBC
和TRIPLEDES_CBC
,但应谨慎使用,因为可能存在严重的安全风险。KEY_TRANSPORT
(可选,字符串,默认RSA_OAEP_MGF1P
): XML 密钥传输方法。支持以下方法:RSA
(RSA 版本 1.5) 和RSA_OAEP_MGF1P
(使用 MGF1-SHA1 作为掩码生成函数的 RSA-OAEP)。
RESPONSE_VALIDITY
(整数,可选,默认 10): SAML 响应在分钟内的有效性。
CONNECTOR_EIDAS_NODE
设置与eIDAS节点交互的参数。以下项目组成的字典
CONNECTOR_REQUEST_URL
(必填): eIDAS 节点期望的认证请求 URL(例如,https://test.example.net/EidasNode/SpecificConnectorRequest
)。REQUEST_ISSUER
(必填): eIDAS 节点配置中指定的轻请求的发行者。
CONNECTOR_ALLOWED_ATTRIBUTES
一个包含 URI 名称(字符串,例如 'http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier'
)的集合,表示服务提供方可以请求的属性。其他属性将从认证请求中删除。默认启用所有 eIDAS 自然人和法人属性。一个空集将禁用过滤器。
CONNECTOR_SELECTOR_COUNTRIES
要显示在公民国家选择器(/CitizenCountrySelector
)中的国家代码和名称的列表。默认为欧盟的 28 个国家。
CONNECTOR_TRACK_COUNTRY_CODE
可选布尔值,默认禁用。如果启用,则必须设置 CONNECTOR_AUXILIARY_STORAGE
。一旦启用,将记录请求的国家代码以及相应请求的状态。
CONNECTOR_AUXILIARY_STORAGE
辅助存储,用于在请求处理期间保存一些所需的响应元数据。如果启用 CONNECTOR_TRACK_COUNTRY_CODE
,则必须设置。
以下项目组成的字典
BACKEND
(可选,默认'eidas_node.storage.ignite.AuxiliaryIgniteStorage'
):与光存储通信的后端类。OPTIONS
(必需):一个包含所选后端配置的字典。AuxiliaryIgniteStorage
后端期望以下选项host
:Apache Ignite服务主机。port
:Apache Ignite服务端口。cache_name
:存储数据的缓存。prefix
:缓存键的前缀(可选)。timeout
:套接字操作的超时时间。
自定义
您可以通过在 eidas_node.connector.views
中子类化视图类来自定义授权流程,重写必要的函数并调整 URL 配置。
版权
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分发
eidas_node-0.9.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9bd6192ba28aa50a81bd7e319c4a8fc7498166613742a61585f525d275e73c2f |
|
MD5 | b9bcd612a77b9a222c4de168406fe65b |
|
BLAKE2b-256 | 3c36cf69e9dd9e128e1ee098a7b1e2b0da49d53d9b19b8a5424cbc5bcb4e8859 |
eidas_node-0.9.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 85ac987bcb5d9a531ffb24101fc3d4e6642004b4166f7acbf8868bd27a95b1cb |
|
MD5 | 16069a6c34efd0abaee15c90ccc89e28 |
|
BLAKE2b-256 | c282535dd4454031558bc4e3075c0912c97ebd5b6fadd7797e58cff6a320be82 |