跳转到主要内容

使用OpenID Connect (OIDC) 验证您的用户

项目描述

Makina Django OIDC

这个库允许通过Open ID Connect (OIDC) 协议将单点登录 (SSO) 集成到Django中。

它可以用于使用身份提供者(Keycloak等)设置单点登录,或使用Google、Twitter等登录。

警告:这个库尚未经过审计。然而,我们基于 pyoidc,我们认为这是一个合理的OIDC实现。

功能

  • 通过预制的 Provider 类轻松配置。
  • 支持多个提供者
  • 易于与 Django权限系统 集成
  • 高度可定制的架构,适用于大多数需求
  • 后端注销
  • 合理的默认安全设置

路线图

  • 支持 django-rest-framework 集成的 Bearer 认证
  • 前端注销

致谢

这个库建立在许多人的工作之上。首先,感谢所有 pyoidc 的维护者,因为他们完成了所有的规范实现。这个库主要关注Django和pyoidc之间的粘合剂。

我们还受到了许多启发

如果您想了解我们为什么决定实现自己的库,请参阅此处的文档。

文档

文档由 readthedocs 提供托管。

安装

首先,安装 Python 包

pip install makina-django-doic

然后,在 django.contrib.sessionsdjango.contrib.auth 之后将库应用到您的Django应用程序中

INSTALLED_APPS = [
    "django.contrib.auth",
    "django.contrib.sessions",
    ...
    "django-pyoidc"
]

别忘了添加会话中间件!在 settings.py 中添加

MIDDLEWARE = [
    "django.contrib.sessions.middleware.SessionMiddleware",
]

现在,是时候运行迁移操作了,因为我们创建了一个数据库表(在此处了解原因)。在项目目录中运行

./manage.py migrate

我们还需要一个缓存(在此处了解原因),因此让我们为开发目的配置一个简单的缓存。在 settings.py 中添加

CACHES = {
    "default": {
        "BACKEND": "django.core.cache.backends.locmem.LocMemCache",
        "LOCATION": "unique-snowflake",
    }
}

现在,您可以从 可用的提供者 中选择一个身份提供者。提供者类是快速生成特定身份提供者的库配置和URL的一种方法。您也可以选择[手动设置]。

在您的设置文件旁边创建一个名为 oidc.py 的文件并初始化您的提供者

from django_pyoidc.providers.keycloak import KeycloakProvider

my_oidc_provider = KeycloakProvider(
    op_name="keycloak",
    client_secret="s3cret",
    client_id="my_client_id",
    keycloak_base_uri="http://keycloak.local:8080/auth/", # we use the auth/ path prefix option on Keycloak
    keycloak_realm="Demo",
    logout_redirect="http://app.local:8082/",
    failure_redirect="http://app.local:8082/",
    success_redirect="http://app.local:8082/",
    redirect_requires_https=False,
)

然后,您可以在Django配置中添加以下行

from .oidc_providers import my_oidc_provider

DJANGO_PYOIDC = {
    **my_oidc_provider.get_config(allowed_hosts=["app.local:8082"]),
}

最后,将OIDC视图添加到URL配置(urls.py)中

from .oidc_providers import my_oidc_provider

urlpatterns = [
    path("auth", include(my_oidc_provider.get_urlpatterns())),
]

现在,您可以开始了!

如果您在执行这些说明时遇到困难,请查看快速入门教程

用法/示例

我们在文档中编写了大量的“如何做”指南。

附录

商业支持

该项目由Makina Corpus赞助。如果您需要关于您项目的帮助,请联系我们:contact@makina-corpus.com

报告安全漏洞

许可证

GPL

作者

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分发

django_pyoidc-0.0.13.tar.gz (30.9 kB 查看哈希值)

上传时间 源代码

构建分发版

django_pyoidc-0.0.13-py3-none-any.whl (35.3 kB 查看哈希值)

上传时间 Python 3

支持者

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面