跳转到主要内容

endi_oidc_provider

项目描述

此项目仍在开发中。

基于enDI (http://endi.coop) 的Open Id连接提供者。

仅支持授权代码流

入门

安装

在endi相同的虚拟环境中安装oidc提供者。

$VENV/bin/pip install endi_oidc_provider

配置您的development.ini文件

  • 确保会话文件的路径

    • session.data_dir : 磁盘上的路径

    • session.lock_dir : 磁盘上的路径

  • 设置数据库访问的连接uri

    • sqlalchemy.url : 访问endi数据库的mysql uri

  • 配置oidc特定的密钥(唯一的盐和oidc端点url)

启动服务

  • $VENV/bin/pserve development.ini

enDI集成

在您的enDI的ini文件中添加以下内容

pyramid.includes =
                    ...
                    endi_oidc_provider
                    ...

这是模型注册,以便在数据库启动时初始化表。

并添加以下内容

endi.includes =
                    ...
                    endi_oidc_provider.plugin
                    ...

它添加了一个管理面板来管理访问API的oidc消费者。

授权处理

客户端密钥

您可以通过命令行或通过管理面板 https://myendi.coop/admin/oidc/ 生成客户端私钥

oidc-manage <config_uri> clientadd --client=<client> --uri=<redirect_uri> --scopes=<scopes> --cert_salt=<cert_salt> --logout_uri=<logout_uri> --admin_email=<admin_email>
  • config_uri : 您的ini文件

  • client: 您客户端的标签

  • redirect_uri : 根据open id连接规范描述的重定向uri(在授权步骤中传递的)

  • scopes : 应用程序请求的范围(至少应提供openid范围)例如:“openid profile”

  • cert_salt:用于加密数据库中客户端机密的随机盐密钥

  • logout_uri:全局登出的uri(将通过iframe调用)

  • admin_email:消费者管理员的电子邮件

生成客户端ID和客户端密钥后,客户端应用可以请求认证。客户端密钥和客户端ID应传递给消费者管理员,它们是允许OIDC认证/授权的必要条件。

授权端点

客户端应用可以调用授权url

https://myoidc_provider.com/oidc/authorize

它验证用户,并在响应中返回授权代码。

令牌url

在后台调用,令牌端点可通过以下url访问

https://myoidc_provider.com/oidc/token

RFC:https://tools.ietf.org/html/rfc6749#section-2.3.1

描述了客户端密码传输方法。

支持的客户端认证方法

  • 通过请求头:支持基本认证令牌

  • 通过请求POST参数:期望有client_id和client_secret键

在响应中您将获得

  • 一个包含必要信息的访问令牌

  • 一个id_token,如规范中所述进行JWS加密

  • 由于我们使用代码流,id_token还返回at_hash访问令牌识别键

支持者

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