跳转到主要内容

未提供项目描述

项目描述

ckanext-saml

添加了从其他来源(称为身份提供者)使用SAML2标准登录的功能。您的实例作为服务提供者

需求

ckanext-saml 使用 python3-saml 库向身份提供者发送请求并从其返回响应。GitHub仓库可以在此处找到。您还可以在此处找到可以用于 settings.jsonadvanced_settings.json 的字段示例。

安装

要安装 ckanext-saml

  1. 安装额外的包(以下示例为CentOS)

     yum install python3-devel xmlsec1-devel libtool-ltdl-devel
    
  2. 安装扩展

    pip install ckanext-saml
    
  3. saml 添加到您的 CKAN 配置文件中的 ckan.plugins 设置。

  4. 初始化新表(如果您之前使用了ckanext-saml2,您可以跳过此步骤或确保您的数据库中存在saml2_user表)

     ckan db upgrade -p saml
    

如果在CentOS上出现以下错误,您可能需要安装额外的软件包 - yum install libxml2-devel xmlsec1-devel xmlsec1-openssl-devel libtool-ltdl-devel

	import xmlsec
	SystemError: null argument to internal routine

配置

在开始配置之前,请确保您的配置设置ckan.saml_custom_base_path已设置,如果您的配置文件不在/etc/ckan/default目录中。

ckanext-saml中的saml文件夹复制到您的CKAN配置文件所在的目录

	cp -R saml_example/saml YOUR_CONFIG_DIRECTORY/saml

打开您复制的saml文件夹中的settings.json文件,以便对其进行修改。

配置主设置文件

在文件中应更新的主要部分是spidp

为了使内容更清晰,我们从配置idp开始

  1. 修改entityId,用从IdP发送给您的idp_metadata.xml文件(文件名可能不同)中存在的entityID填充(

  2. singleSignOnService中修改url。您可以在idp_metadata.xmlSingleSignOnService部分找到此url,它应具有Location属性,其中指定了url。

  3. idp_metadata.xml中存在的 X509Certificate修改x509cert。确保将其设置为一条单行字符串

注意:未实现singleLogoutService

sp(CKAN)的修改

  1. 用您的门户网站的域名修改entityId

  2. assertionConsumerService中修改url,用您的门户网站的域名加上在末尾添加/saml/。这是IdP将发送带有用户数据的响应的URL。确保URL末尾有斜杠。

advanced_settings.json用于安全等附加配置。如果您打算向IdP提供您的SP数据,还需要修改其中的contactPersonorganization部分。

更新settings.json中提到的所有值后,在DOMAIN_NAME/saml/metadata URL处您可以找到生成的sp.xml,您可以将其提供给IdP以在他们的侧进行配置。

IdP所需的主要信息是应设置在他们的SAML应用中的AssertionConsumerService(ACS)。AssertionConsumerService应与您的settings.json和IdP应用中的设置匹配,否则可能会出现错误。

配置设置

  • ckan.saml_use_https - 当使用https发送数据时使用,将on设置为启用它。默认设置为off,使用http

  • ckan.saml_use_nameid_as_email - 如果您希望将NameID用作用户的电子邮件地址,以避免从IdP额外声明它,则将其设置为true。默认设置为false

  • ckan.saml_login_button_text - 提供自定义登录按钮文本的能力。默认设置为SAML 登录

  • ckan.saml_custom_base_path - 提供搜索saml文件/文件夹的自定义路径。默认设置为/etc/ckan/default/saml

  • ckan.saml_custom_attr_map - 用于修改映射器文件名。默认搜索mapper.py

  • ckan.saml_use_root_path - 如果您使用ckan.root_path运行您的门户网站,则需要将其设置为true。默认设置为false

  • ckan.saml_relaystate - 设置自定义RelayState path。默认设置为/dashboard

SP元数据文件

如上所述,您可以在配置advanced_settings.json后,在DOMAIN_NAME/saml/metadata URL处找到SP元数据。此URL仅对sysadmins可访问,并以XML格式呈现。在/ckan-admin/上添加了主选项卡,该选项卡可引导到该页面。

数据加密

为了加密从身份提供者(IdP)传来的数据,请使用 advanced_settings.json 文件。在 security 部分,您可以启用对 NAMEID 和所有其他将返回给服务提供者(SP)的数据的加密。

如果您启用了以下任一选项:authnRequestsSignedlogoutRequestSignedlogoutResponseSignedwantAssertionsEncryptedwantNameIdEncrypted(您可以在这里找到每个选项的说明),您将需要在您的 SP 中创建x509 证书。证书应在 certs 文件夹中创建,文件应命名为 sp.crtsp.key(私钥)。创建后,您的 sp.xml 将显示公钥 ds:X509Certificate,该公钥应发送给您的 IdP 以配置加密。

附加信息

ckanext-saml 有一个名为 ICKANSAML 的接口,该接口有两个钩子,可用于在登录时修改用户数据和组织成员资格逻辑。

  • after_mapping - 在用户数据映射之后,但在创建用户之前使用。

  • roles_and_organizations - 用于添加将应用于用户的组织成员资格的自定义逻辑。没有默认逻辑,因此应在使用此钩子的自定义扩展中添加。

项目详情


下载文件

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

源分布

ckanext_saml-0.3.4.tar.gz (30.9 kB 查看哈希)

上传时间

构建分布

ckanext_saml-0.3.4-py3-none-any.whl (34.1 kB 查看哈希)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面