SPID/CIE OIDC 联邦实体
项目描述
SPID/CIE OIDC 联邦 SDK
SPID/CIE OIDC 联邦是一套 Django 应用程序,旨在简化构建 Openid Connect 联邦,每个都可以在 django 项目中单独安装。以下是一些
应用程序 | 描述 |
---|---|
spid_cie_oidc.accounts | 可定制的应用程序,扩展了 django 用户模型。 |
spid_cie_oidc.entity | 实现 OIDC 联邦 1.0 实体声明、元数据发现、信任链、信任标记和元数据策略的 OpenID Connect 联邦 Django 应用程序。技术规范: OIDC 联邦实体 |
spid_cie_oidc.authority | OIDC 联邦信任链/中间件的 OpenID Connect 联邦 API 和模型,技术规范 和 教程。 |
spid_cie_oidc.onboarding | OpenID Connect 联邦入职演示服务 和工具 |
spid_cie_oidc.relying_party | OpenID Connect 依赖方 和 OIDC 提供商的测试套件 |
spid_cie_oidc.provider | OpenID Connect 提供商 和 OIDC 依赖方的测试套件 |
摘要
一个成功进行身份验证的已入职依赖方。
设置
所有的Django应用都存放在 spid_cie_oidc/
文件夹中。示例项目存放在 examples/
文件夹中。
应用程序和项目之间存在显著差异。应用程序使用通用的Python包管理器安装,如 poetry 或 pip,并且可以被使用、继承和集成到其他项目中。
项目是将一个或多个应用程序集成的服务配置。在这个仓库中,我们有三个示例项目
- 联邦权威
- 依赖方
- 提供者
联邦权威为开发需求加载所有应用程序,充当权威、SPID RP和SPID OP。这使我们能够通过启动单个服务来制作演示。请参阅管理页面 http://127.0.0.1:8000/admin/
和用户登录页面 http://127.0.0.1:8000/oidc/rp/landing/
。
然后我们还有一个作为独立项目的依赖方,以及另一个配置了CIE配置文件的提供者。依赖方和提供者仅集成 spid_cie_oidc.entity 和 spid_cie_oidc.provider 或 .relying_party 作为应用程序的示例。
阅读 设置文档 以开始。
Docker
Docker镜像
docker pull ghcr.io/italia/spid-cie-oidc-django:latest
Docker Compose
使用官方网站提供的软件包和以下工具安装Docker。
sudo pip install docker-compose
请在每个 settingslocal.py 文件中以及/或在示例导出json文件中进行自定义。
在 settingslocal.py 文件和 dumps/example.json 文件中将主机名从 127.0.0.1 更改为在 compose 文件中配置的主机名。在我们的示例中,我们将
- http://127.0.0.1:8000 更改为 http://trust-anchor.org:8000/
- http://127.0.0.1:8001 更改为 http://relying-party.org:8001/
- http://127.0.0.1:8002 更改为 http://cie-provider.org:8002/
我们可以通过以下步骤来完成
- 执行
bash docker-prepare.sh
- 如果需要,请自定义
examples-docker/
中包含的示例数据和设置(快速演示不需要)
运行堆栈
sudo docker-compose up
为 trust-anchor.org 配置适当的DNS解析。在GNU/Linux中,我们可以在 /etc/hosts
中进行配置
127.0.0.1 localhost trust-anchor.org relying-party.org cie-provider.org wallet.trust-anchor.org
将您的网络浏览器指向 http://relying-party.org:8001/oidc/rp/landing
并执行您的第一次oidc身份验证。
用法
演示提出了一个由以下实体组成的小型联邦
- 联邦权威,充当信任锚和入职系统。它可在
http://127.0.0.1:8000/
上找到。它还有一个嵌入的Spid提供者和一个嵌入的依赖方,可在/oidc/rp/landing
上找到。 - OpenID依赖方,可在
http://127.0.0.1:8001/
上找到 - CIE OpenID提供者,可在
http://127.0.0.1:8002/
上找到
在docker示例中,我们只有联邦权威,其中包含嵌入的SPID OP和RP。
示例用户和密码
- admin oidcadmin
- user oidcuser
OpenAPI Schema 3
每个应用程序都有一个可导出的OAS3,可在 /rest/schema.json
找到,并且有一个可浏览的reDoc UI,可在 /rest/api/docs
上找到。
reDoc OAS3可浏览页面。
工具
入职应用程序附带以下工具集
- JWK
- 创建jwk
- 将私有JWK转换为PEM
- 将公共JWK转换为PEM
- 将私有PEM转换为JWK
- 将公共PEM转换为JWK
- JWT解码和验证
- 联邦
- 解析实体声明
- 应用策略
- 验证器
- 验证OP元数据SPID
- 验证OP元数据CIE
- 验证RP元数据SPID
- 验证RP元数据CIE
- 验证认证请求SPID
- 验证认证请求CIE
- 验证实体配置
- 信任标记验证
- 模式
- 授权端点
- 检查端点
- 元数据
- 令牌端点
- 撤销端点
- Jwt客户端断言
OIDC工具简化了开发者和服务运营商的工作,这里有一个简单的界面来解码和验证JWT。
要在命令行中探索联盟,请使用ofcli工具。它可以用来将联盟元数据导出到json文件,以便进一步分析。
贡献
欢迎您的贡献,任何问题都不会无用,任何答案都不会明显,我们需要您。
作为最终用户贡献
如果您发现了错误或想提出一些功能,请提交一个问题。
作为开发者贡献
请在dev分支上打开您的Pull Requests。请考虑以下分支:
- main:我们在发布新稳定版本之前合并代码的地方。
- dev:我们在开发过程中推送代码的地方。
- other-custom-name:新功能/贡献/错误修复将被处理、修订,然后合并到dev分支。
备份和共享您的演示数据
# backup your data (upgrade example data), -e excludes.
./manage.py dumpdata -e admin -e spid_cie_oidc_relying_party -e spid_cie_oidc_provider -e spid_cie_oidc_relying_party_test -e auth -e contenttypes -e sessions --indent 2 > dumps/example.json
在本项目中,我们采用Semver和Conventional Commits规范。
实现说明
与JWT签名和加密相关的所有操作都是基于IdentityPython的cryptojwt构建的。
本项目提出了一个具有自动客户端注册和强制采用信任标志的意大利OIDC联盟配置文件的实现。
如果您正在寻找一个完全符合OIDC联盟1.0规范的实现,具有完全支持显式客户端注册,请查看idpy的fedservice。
通用功能
- SPID和CIE OpenID Connect提供商
- SPID和CIE OpenID Connect依赖方
- OIDC联盟入站演示服务
- OIDC联盟1.0
- 信任锚和中间人
- 自动客户端注册
- 实体配置文件和信任标志
- 信任链存储和发现
- 实体声明解析端点
- 获取声明端点
- 列表实体端点
- 高级列表端点
- 联盟CLI
- RP:为所有可用的OP构建信任链
- OP:为所有可用的RP构建信任链
- 多租户,单个服务可以配置多个实体,如RP、OP、信任锚和中间人
- 支持gettext(国际化)
- Bootstrap Italia设计模板
许可证和作者
本软件由Giuseppe De Marco发布,采用Apache 2许可证:
- Giuseppe De Marco giuseppe.demarco@teamdigitale.governo.it.
在本项目中,我们使用了由Roland Hedberg编写的元数据策略代码,该代码采用相同的Apache 2许可证。
项目详情
下载文件
下载适用于您平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。