我想使用Django为我们目前使用的多个应用程序实现单点登录(SSO)。如何使用Django实现这一功能?
我想使用Django为我们目前使用的多个应用程序实现单点登录(SSO)。如何使用Django实现这一功能?
我们正在使用 OpenAM。 http://forgerock.com/openam.html
OpenAM Cookie 表示用户已通过身份验证。
对于此项身份验证后端,代码非常简单,不到50行。
https://docs.djangoproject.com/en/3.1/topics/auth/customizing/#other-authentication-sources
我们编写了一小段代码,向 OpenAM 服务器发出 RESTful 请求以获取用户、组和角色信息。 然后,我们使用这些角色来确定用户的授权。
MamaCAS似乎是一个不错的解决方案。(截至撰写本文时已获得104个星标。)
https://github.com/jbittel/django-mama-cas
MamaCAS是一个Django中央认证服务(CAS)单点登录和单点注销服务器。它实现了CAS 1.0、2.0和3.0协议,包括一些可选功能。
CAS是一个单点登录和单点注销Web协议,允许用户在提供一次凭据后访问多个应用程序。它利用安全票证,这是由服务器生成和验证的唯一文本字符串,允许应用程序在没有直接访问用户凭据(通常是用户ID和密码)的情况下对用户进行身份验证。
请看一下django-cas-provider + django-cas-consumer(或者django-cas)。
我使用了https://github.com/onelogin/python3-saml与Azure AD和Google进行集成 - 这个工具的设置非常简单,文档和支持也很好。
“Original Answer”翻译成中文是“最初的回答”。
CAS(Central Authentication Service)是一个很好的解决方案,支持Django和Flask的SSO(单点登录)和单点注销(SLO)。以下是设置指南,以拥有CAS服务器和多个具有相同登录/注销的客户端:
[注意]:
[更新]:
SESSION_COOKIE_NAME
以创建可区分的会话。在Django中,您需要为每个Django客户端在settings.py
文件中添加以下行:SESSION_COOKIE_NAME = 'client1_sess'