未提供项目描述
项目描述
smolsaml
针对现代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参数将导致无法正常工作。
- 请注意,当使用元数据URL的federationmetadata.xml时,您需要指定您的应用ID(appid)在URL中,以便Azure提供验证签名所需的正确密钥材料。也就是说,
安装
此包可在PyPI上找到。
pip install smolsaml
此外,您还需要xmlsec
(也称为xmlsec1
) 工具,以避免对lxml
和python-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 查看哈希)
关闭
smolsaml-0.0.5.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1ffbc02616805491acc8b5dcba1dd46f55a16fcf9c937c826c20e7a3b126373b |
|
MD5 | 4fa013cb0aa3bf5bc287d5a8da8693d6 |
|
BLAKE2b-256 | 7970df6203f4f6a50ee39ffded7fceed7edea0017759af16860b279bc851d6e2 |
关闭
smolsaml-0.0.5-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9ca3fd7e1b34582fd18fc4245e35d67e5bbfef374a277c6b521de11e4f7df79 |
|
MD5 | 4e057b74c04830e5b9db51b6dd6cad6c |
|
BLAKE2b-256 | 30d0f8edfa644660204f3f25f59bec5006b469fca1daf00b86754e6b0ea6922e |