Python 中的 OpenID Connect 提供程序

Posted

技术标签:

【中文标题】Python 中的 OpenID Connect 提供程序【英文标题】:OpenID Connect Provider in Python 【发布时间】:2015-03-27 09:53:03 【问题描述】:

我一直在寻找如何在 python 中实现 OpenID Connect 提供程序,我发现了由 Roland Hedberg (it's recommended by OpenID ) 制作的 this library。 但是我读过the docs、the examples,我认为对于没有太多知识的人来说,它的例子过于复杂(提供者、wsgi 和 cli 混合在一起)。

所以我的问题是:有谁知道更简单的示例或教程来实现这个库,还是我应该尝试在 OAuth2 库之上实现我的提供程序?

【问题讨论】:

我认为“OpenID 推荐”是一个强有力的声明。它们只是列出已提交给它们的实现。 【参考方案1】:

这里有一些更新

罗兰 oidc 提供商 https://github.com/IdentityPython/oidc-op 和 rp https://github.com/IdentityPython/JWTConnect-Python-OidcRP

SATOSA(IAM 代理)oidcop 前端 https://github.com/UniversitaDellaCalabria/SATOSA-oidcop

【讨论】:

【参考方案2】:

我以前也遇到过这个麻烦。在 OAuthlib 之上工作很痛苦(Roland lib 也很难理解),所以我决定从头开始。

django-oidc-provider 可以帮助您提供开箱即用的所有端点、数据和逻辑,以便将 OpenID Connect 功能添加到您的 Django 项目中。完全支持 Python 3 和 2。还有最新版本的 django。

在 GitHub 上查看:https://github.com/juanifioren/django-oidc-provider

有什么想知道的可以问。

【讨论】:

【参考方案3】:

以防万一有人发现这个问题。我在 Authlib 上工作了很长时间,在 Authlib 之前我创建了 Flask-OAuthlib。使用 Authlib v0.6+,您可以轻松create an OpenID Connect service in Flask(Django 集成即将到来)。

以下是您可能需要的一些资源:

    GitHub:https://github.com/lepture/authlib OAuth 2 示例:https://github.com/authlib/example-oauth2-server 关于 OAuth 2 的文档:https://docs.authlib.org/en/latest/flask/oauth2.html OpenID Connect 文档:https://docs.authlib.org/en/latest/flask/oidc.html

当有可用的 oidc 示例时,我会更新答案。

【讨论】:

以上是关于Python 中的 OpenID Connect 提供程序的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core OpenID Connect 中的单点注销

Okta 使用 OpenID Connect 配置中的公钥验证 JWT 令牌

IdentityServer:检查 OpenId Connect 中的身份验证策略中是不是存在范围

OpenID Connect 服务器流中的“state”参数可以防止啥攻击?

更改 Liferay 登录页面中的“OpenId Connect”链接的最佳方法是啥?

同一站点中的 asp net core 2.0 JWT 和 Openid Connect 身份验证