跳转到主要内容

未提供项目描述

项目描述

smolsaml

PyPI - Version PyPI - Python Version Codecov


针对现代Python版本的一个非常简单的SAML 2.0 SP实现。

支持

此库并非旨在成为功能齐全的SAML 2.0实现,而是提供一个最小化、健壮的实现,依赖性尽可能少。

它已成功测试过

  • Google Workspace SAML
  • Keycloak 12.0.4
  • Okta
  • Microsoft Azure AD
    • 请注意,当使用元数据URL的federationmetadata.xml时,您需要指定您的应用ID(appid)在URL中,以便Azure提供验证签名所需的正确密钥材料。也就是说,https://login.microsoftonline.com/TENANTID/federationmetadata/2007-06/federationmetadata.xml?appid=APPID。省略appid参数将导致无法正常工作。

安装

此包可在PyPI上找到。

pip install smolsaml

此外,您还需要xmlsec (也称为xmlsec1) 工具,以避免对lxmlpython-xmlsec的依赖(这些库可能难以安装,并且由于libxml版本要求可能相互冲突)。

  • 在Debian/Ubuntu上,可以使用apt install xmlsec1进行安装。
  • 在macOS上,可以使用brew install libxmlsec1进行安装。

用法

我们将假设您已经选择了使用某种类型的Web框架(库并不关心)。

用户身份验证的步骤如下

  • 构建一个描述您的应用程序的SPConfiguration。值需要与您在身份提供者中配置的值相匹配,并且自然地,ACS URL需要以某种方式连接到您的Web框架。
  • 构建一个 IDPConfiguration;最简单的方法是使用 IDPConfiguration.from_metadata_xml。 (您需要自己获取元数据,库并不关心您是如何做到这一点的。)
  • 调用 initiate_login;您将得到一个 Redirect 对象,它描述了您希望将用户带到哪里。
  • 用户将在 IdP 进行身份验证,然后被重定向回您的 ACS URL。
  • 在您的 ACS 端点中,读取 SAMLResponse POST 参数。使用它和您的配置对象调用 process_saml_response。如果数据无效,这将引发异常。如果有效,您将得到一个包含用户属性的 SAMLResponse 对象。尝试不允许具有相同 ID 的多个 SAMLResponse 可能是个好主意;这听起来像是重放攻击。

不支持的功能,已知错误等。

  • :point_right: 此库尚未针对上述以外的任何 IdP 进行测试。如果您有其他 IdP 并且它工作正常,请告诉我!
  • :point_right: 此库实际上不支持任何可选的 SAML 2.0 功能。
  • :point_right: 目前并未检查所有可能需要检查的声明。
  • 身份验证请求签名目前不受支持。然而,值得高兴的是,大多数 IdP 都不需要它。

许可证

smolsaml 在 MIT 许可证的条款下分发。

项目详情


下载文件

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

源代码分发

smolsaml-0.0.5.tar.gz (13.5 kB 查看哈希)

上传时间 源代码

构建分发

smolsaml-0.0.5-py3-none-any.whl (17.3 kB 查看哈希)

上传时间 Python 3

由以下机构支持

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