SATOSA前端基于identity python oidcop
项目描述
SATOSA oidcop前端
SATOSA前端基于 Identity Python的idpyoidc(之前为 identity python oidcop)。
特性
端点
- 提供者发现
- jwks uri
- 授权
- 令牌
- 用户信息
- 注册
- 注册读取端点
- 内省端点
- 令牌交换
需求
- satosa
- mongodb,请参阅 Satosa-Saml2Spid mongo示例。
设置
pip install satosa_oidcop
配置
任何人都可以将其oidcop配置迁移到SATOSA,从flask_op或django-oidc-op或任何其他配置,无需任何特别努力。查看 示例配置,我们看到 config.op.server_info
具有标准的SATOSA配置,唯一的添加是以下自定义设置,这些设置在SATOSA中对于互操作性需求是必需的。这些是
- 身份验证
authentication:
user:
acr: urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocolPassword
class: satosa.frontends.oidcop.user_authn.SatosaAuthnMethod
- 用户信息
userinfo:
class: satosa.frontends.oidcop.user_info.SatosaOidcUserInfo
身份验证 继承自 oidcop.user_authn.user.UserAuthnMethod
并覆盖了两个涉及用户身份验证和验证的方法。这些任务由SATOSA在其身份验证后端处理。
用户信息 继承自 oidcop.user_info.UserInfo
并提出了一种存储来自后端用户声明的方法。声明存储在会话数据库(实际上是mongodb)中,然后在用户信息端点(以及令牌端点,以便在id_token声明中可选地获取它们)中检索。
SSO和cookie
oidcop SSO和cookie尚未实现,因为SATOSA不支持注销,因此它们目前相当无用。
客户端和会话存储
MongoDB是存储,[这里](https://github.com/italia/Satosa-Saml2Spid/tree/oidcop/mongo)有一些关于演示设置的简要描述。SATOSA oidcop存储的接口是satosa.frontends.oidcop.storage.base.SatosaOidcStorage
,它有三个方法
- get_client_by_id(self, client_id:str, expired:bool = True)
- store_session_to_db(self, session_manager, **kwargs)
- load_session_from_db(self, req_args, http_headers, session_manager, **kwargs)
satosa.frontends.oidcop.storage.mongo.Mongodb
扩展了这些方法以在MongoDB上执行I/O操作。
主题类型
客户端配置还可以包含subject_type
键,允许的值有public
和pairwise
。如果不存在,则默认选择public
。这是为了与现有行为保持向后兼容:oidcop (session_manager.create_session
)默认为public
。
为了用户隐私,我们强烈建议对于新的部署选择pairwise
,除非绝对需要public
(用于连接跨相关但不同的服务中的用户)。
演示
Satosa-Saml2Spid是针对处理许多SAML2和OIDC信赖方以及许多eduGain和SPID身份提供者的自定义Satosa配置。
贡献
请随意提出问题和拉取请求,我们共同建设社区!
开发者注意事项
存储设计
目前存储逻辑基于oidcop会话管理器的加载/导出/刷新方法。每次端点处理请求时,oidcop会话管理器都会从存储中加载定义,只加载与请求严格相关的定义到oidcop的内存存储中。
路线图
- 单元测试
- pytest mongo模拟
- 测试response_type = "code id_token token"([混合流程](https://github.com/IdentityPython/SATOSA/pull/378/commits/a61dc99503bcb9d4982b77a6ddcf0c41b6732915))
- 使用mongodb索引自动修剪过期会话([自动修剪](https://github.com/IdentityPython/SATOSA/pull/378/commits/137993f77bfb05b44f25ba6df3784e8fb86a31ce),[mongo索引](https://github.com/italia/Satosa-Saml2Spid/tree/oidcop/mongo#create-expired-session-deletion))
- 令牌刷新
- DPoP支持
测试
在运行测试之前,请注意您需要启动一个本地mongod实例,例如
sudo docker run \
--rm \
-e ALLOW_EMPTY_PASSWORD=yes \
-e MONGODB_ENABLE_JOURNAL=false \
-p 27017:27017 \
--name mongodb \
bitnami/mongodb:latest
如果您愿意,可以使用mongo-express作为本地mongo实例的管理UI
sudo docker run \
-e ME_CONFIG_MONGODB_SERVER=$MONGOHOST-OR-DOCKER-BRIDGE-LIKE-172.17.0.1 \
-p 8081:8081 \
mongo-express
然后运行测试
pip install pytest pytest-cov
pytest --cov=satosa_oidcop -v --cov-report term --cov-fail-under=95 tests/
作者
- Giuseppe De Marco @ Università della Calabria
鸣谢
- Roland Hedberg
- Andrea Ranaldi @ ISPRA Ambiente
- Pavel Břoušek @ CESNET
- Identity Python社区
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
satosa_oidcop-3.0.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 59b2967efad92b356be310d15ec1599fc1335127731b16311da2393d4108b00c |
|
MD5 | 7ac03fe48c5680c8c4f5fdb3d647b84b |
|
BLAKE2b-256 | 824bb8cc9d6c2d25fd57463c5d13f8f2d37743a21ef813994ff7b157b1af50ef |
satosa_oidcop-3.0.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4cad99b7003c322c915fa5ce12dbb80a9b99b4bead06d5ce7fb5c450acf98429 |
|
MD5 | 1c448c1b12321a7e8aa46de0b4f85f9e |
|
BLAKE2b-256 | 2f28815f42096f17de90df9e6ae2b241c9f4979e340beb01d6c07af417fe5f24 |