跳转到主要内容

实现eIDAS-Node 2.3.x特定连接器和代理服务。

项目描述

eIDAS特定节点

Django实现成员特定 连接器代理服务 用于 CEF eIDAS Node 版本2.4及以上。

需求

更改

有关更改,请参阅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_TOKENPROXY_SERVICE_RESPONSE_TOKENPROXY_SERVICE_LIGHT_STORAGEPROXY_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_CODEPROXY_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.czniaROOT_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_TOKENCONNECTOR_RESPONSE_TOKENCONNECTOR_LIGHT_STORAGECONNECTOR_SERVICE_PROVIDER(见下文)。

视图

ROOT_URLCONF设置为eidas_node.connector.urls将为您提供三个主要视图

  • /CountrySelector:从服务提供商接收SAML请求Relay State,并允许用户选择其国家(除非已经提供),然后将SAML请求转发到/ServiceProviderRequest端点。

    • 方法:HTTP POST。
    • POST参数
      • SAMLRequest(必需):转发到eIDAS网络的SAML请求。
      • RelayState(必需):中继状态。
      • countryCONNECTOR_SERVICE_PROVIDER['COUNTRY_PARAMETER']中设置的值(可选):公民国家代码。
  • /ServiceProviderRequest:从服务提供商接收SAML请求Relay State公民国家代码,并将请求转发到eIDAS网络。

    • 方法:HTTP POST。
    • POST参数
      • SAMLRequest(必需):转发到eIDAS网络的SAML请求。
      • RelayState(必需):中继状态。
      • countryCONNECTOR_SERVICE_PROVIDER['COUNTRY_PARAMETER']中设置的值(必需):公民国家代码。
  • /ConnectorResponse:接收来自eIDAS网络的轻量级令牌,并将相应的轻量级响应转发给服务提供商。

    • 方法:HTTP POST。
    • POST参数
      • tokenCONNECTOR_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_GCMAES192_GCMAES168_GCM。旧版 libxmlsec1 支持以下加密方法:AES256_CBCAES192_CBCAES168_CBCTRIPLEDES_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 配置。

版权

  • django-eidas-specific-node 项目
    • 版权所有 2019 CZ.NIC, z. s. p. o.
    • 许可证: GPL-3+
  • 国家旗帜:
    • 版权所有 2013 Panayiotis Lipiridis
    • 许可证: MIT

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

eidas_node-0.9.0.tar.gz (208.9 kB 查看哈希值)

上传于 来源

构建分发

eidas_node-0.9.0-py3-none-any.whl (258.9 kB 查看哈希值)

上传于 Python 3

由以下支持