首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django中使用多个提供程序实现OpenID连接?

如何在Django中使用多个提供程序实现OpenID连接?
EN

Stack Overflow用户
提问于 2022-07-13 08:41:04
回答 2查看 334关注 0票数 1

我试图在我的应用程序中实现多个SSO (OpenID连接)登录,除了常规的登录。

当前的提供者请求是Azure和Okta,但是还会有更多。对于使用我的应用程序的每个更大的客户,我想让他们能够使用自定义的SSO登录,他们可以在管理面板中设置。

为此,我尝试使用的所有库要么使用settings.py和本地django身份验证,要么不推荐它们。

流程是这样的:

用户选择他们的公司和SSO登录按钮->被重定向到登录-> i发送客户端id,机密等(他们在注册sso连接时输入到管理面板中) ->我得到一个令牌作为回报,以用户名和电子邮件->与此信息(电子邮件)我发现已经存在的用户在我的本地数据库和登录他在

EN

回答 2

Stack Overflow用户

发布于 2022-07-14 10:21:34

您自己的应用程序通常倾向于只信任一个提供程序,并且当您希望涉及多个提供程序时,最好的方法是在本地添加您自己的提供程序,即您的应用程序和的信任。然后,您的OIDC提供程序可以信任其他各种提供程序。就像下面的图片显示的那样:

票数 0
EN

Stack Overflow用户

发布于 2022-07-17 01:20:33

  1. 用户选择他们的公司和SSO登录按钮

好的,你可以简单地把按钮放在你的网站上。

  1. 被重定向到登录

您可以添加/redirect端点,并确保为从OAuth2提供程序获取用户信息做好准备。

  1. I发送客户端id、机密等(他们在注册sso连接时输入到管理面板中)

这也是步骤2的继续,但我不知道如何连接Django管理面板。抱歉的。

  1. 我得到一个令牌作为回报,用户名和电子邮件

使用OAuth2提供者的用户信息API。这样你就可以得到用户想要的任何信息,就像他们提供的一样多。

  1. 通过这个信息(电子邮件),我在本地数据库中找到了已经存在的用户,并将他记录在

中。

只需用数据库编写一个函数即可。这并不难。

我认为这足以实现这一点。但是,that they can setup in the admin panel.我不能确定您是否可以自定义“已经制作”Django管理面板。这可能很难做到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72963273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档