哪个 openid / oauth 库可将 django 项目连接到 Google Apps 帐户?

2024-01-25

我正在为一家使用 Google Apps 登录的公司开发一个 Intranet django 项目(不使用 GAE)。所以我希望我的用户能够使用他们的 google 帐户登录来登录我的 django 项目。 OpenID 似乎很合适,尽管也许 Oauth 也可以工作?

我看到很多类似名称的库用于将 django 的身份验证系统连接到外部登录系统:

  • django-authopenid-http://bitbucket.org/benoitc/django-authopenid http://bitbucket.org/benoitc/django-authopenid
  • django-openid -http://github.com/simonw/django-openid http://github.com/simonw/django-openid
  • django-openidauth -http://code.google.com/p/django-openid-auth/ http://code.google.com/p/django-openid-auth/
  • django-oauth-http://bitbucket.org/david/django-oauth http://bitbucket.org/david/django-oauth

这是我想要对集成执行的操作:让用户使用他们的 google 帐户而不是本机 django 系统登录。保留 Django 的权限模型,例如管理系统。所以我认为这意味着当我们之前没有见过的新帐户第一次登录时,会在 django 中自动创建新的用户记录。

任何有使用这些项目经验的人都可以建议我哪一个最有效吗?或者只是建议您尝试过哪些是最活跃/最实用的?谢谢!


我终于开始工作了,所以我将回答我自己的问题,因为之前的答案很有帮助,但没有讲述整个故事。

Django-openid-auth https://launchpad.net/django-openid-auth实际上很容易设置和使用。 README 文件非常清楚。如果您只想使用标准谷歌帐户(即@gmail.com地址),那么您可以在settings.py中配置它:

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'

但如果您想使用“google apps”帐户,即在您自己公司的域中托管的 gmail,那么情况会更复杂。我的详细信息来自这个问题 https://stackoverflow.com/questions/2313573/google-apps-login-in-django。要使用您的 Google Apps 帐户,请将您的 settings.py 配置为:

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=example.com'
# replace example.com with your hosted google apps domain

在未来,这可能会起作用,但今天可能不会。问题出在 django-openid-auth 所依赖的 python-openid 中。 python-openid 的标准构建不理解 google 正在使用的一些协议扩展。 (为什么谷歌需要扩展协议?深入挖掘http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains并报告回来。祝你好运。)所以你需要使用 adieu 的 python-openid 补丁,它可以在这里找到:http://github.com/adieu/python-openid http://github.com/adieu/python-openid

在现有的 python-openid 上安装它。现在应该可以了。

小心OPENID_USE_AS_ADMIN_LOGIN自此设定requires您必须拥有一个“员工”或“超级用户”的 openid 用户帐户才能使用管理员,默认情况下不会发生这种情况。因此,您需要执行一个两步过程:启用 openid,使用您的 openid 登录以在 django 中创建一个帐户,然后使用您的旧管理员帐户将您自己的 openid 帐户标记为超级用户,然后禁用非 openid 管理员使用权。

还有一件事:您的域管理员可能需要为您的域启用 openid 登录,然后才能正常工作。控制点位于http://www.google.com/a/cpanel/example.com/SetupIdp http://www.google.com/a/cpanel/example.com/SetupIdp

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪个 openid / oauth 库可将 django 项目连接到 Google Apps 帐户? 的相关文章

  • 从sklearn PCA获取特征值和向量

    如何获取 PCA 应用程序的特征值和特征向量 from sklearn decomposition import PCA clf PCA 0 98 whiten True converse 98 variance X train clf f
  • 无故运行测试时 PyCharm 抛出“AttributeError: 'module' object has no attribute”

    因此 我有一个 Django REST Framework 项目 有一天它无法在 PyCharm 中运行测试 从命令行我可以使用它们来运行它们paver or the manage py直接地 曾经有一段时间 当我们没有在文件顶部导入类的超
  • 字符串中的注释和注释中的字符串

    我正在尝试使用 Python 和 Regex 计算 C 代码中包含的注释中的字符数 但没有成功 我可以先删除字符串以删除字符串中的注释 但这也会删除注释中的字符串 结果会很糟糕 是否有机会通过使用正则表达式来询问不匹配注释中的字符串 反之亦
  • ImportError:运行 jupyter Notebook 时没有名为 IPython.paths 的模块?

    我通过以下方式安装了 jupyter usr local opt python bin python2 7 m pip install jupyter 这将安装 ipython 版本 4 1 2 但是 当我运行 jupyter Notebo
  • 小部件之间的自定义信号

    尝试将信号从一个 gtk EventBox 子级发送到另一个 在 init HeadMode 第 75 行 上出现错误 类型错误 未知信号名称 消息发送 why usr bin env python coding utf8 import p
  • 如何在Python中高效地添加稀疏矩阵

    我想知道如何在Python中有效地添加稀疏矩阵 我有一个程序 可以将大任务分解为子任务 并将它们分配到多个 CPU 上 每个子任务都会产生一个结果 一个 scipy 稀疏矩阵 格式为 lil matrix 稀疏矩阵尺寸为 100000x50
  • 根据 Pandas 中的列表对多列进行排序

    感谢有关如何根据 pandas 中的倍数列表对给定多列进行排序的任何提示 如下所示 import pandas as pd sort a a d e sort b s1 s3 s6 sort c t1 t2 t3 df pd DataFra
  • 将 numpy 代码点数组与字符串相互转换

    我有一个很长的 unicode 字符串 alphabet range 0x0FFF mystr join chr random choice alphabet for in range 100 mystr re sub W mystr 我想
  • ValueError:不支持连续[重复]

    这个问题在这里已经有答案了 我正在使用 GridSearchCV 进行线性回归的交叉验证 不是分类器也不是逻辑回归 我还使用 StandardScaler 对 X 进行标准化 我的数据框有 17 个特征 X 和 5 个目标 y 观察 约11
  • Pandas:如何将数据框插入 Clickhouse

    我正在尝试将 Pandas 数据框插入 Clickhouse 这是我的代码 import pandas import sqlalchemy as sa uri clickhouse default localhost default ch
  • 如何使用 Bokeh 动态隐藏字形和图例项

    我正在尝试在散景中实现复选框 其中每个复选框应显示 隐藏与其关联的行 我知道可以通过图例来实现这一点 但我希望这种效果同时在两个图中发生 此外 图例也应该更新 在下面的示例中 出现了复选框 但不执行任何操作 我显然不明白如何更新用作源的数据
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • Python:我不明白 sum() 的完整用法

    当然 我明白你使用 sum 与几个数字 然后它总结所有 但我正在查看它的文档 我发现了这一点 sum iterable start 第二个参数 start 的作用是什么 这太尴尬了 但我似乎无法通过谷歌找到任何示例 并且对于尝试学习该语言的
  • Werkzeug 中的线程和本地代理。用法

    首先 我想确保我正确理解了功能的分配 分配本地代理功能以通过线程内的模块 包 共享变量 对象 我对吗 其次 用法对我来说仍然不清楚 也许是因为我误解了作业 我用烧瓶 如果我有两个 或更多 模块 A B 我想将对象C从模块A导入到模块B 但我
  • 为什么我应该使用 WSGI?

    使用 mod python 一段时间了 我读了越来越多关于 WSGI 有多好的文章 但没有真正理解为什么 那么我为什么要切换到它呢 有什么好处 这很难吗 学习曲线值得吗 为了用 Python 开发复杂的 Web 应用程序 您可能会使用更全面
  • ModelChoiceField 在提交表单时给出无效选择错误

    我想允许用户删除特定模型的关联外键列表 假设我们有这两个模型 class IceBox models Model class FoodItem models Model name models CharField icebox models
  • Flask 应用程序的测试覆盖率不起作用

    您好 想在终端的 Flask 应用程序中测试 删除路由 我可以看到测试已经过去 它说 test user delete test app LayoutTestCase ok 但是当我打开封面时 它仍然是红色的 这意味着没有覆盖它 请有人向我
  • 操作错误:(sqlite3.OperationalError) SQL 变量太多,同时将 SQL 与数据帧一起使用

    我有一个熊猫数据框 如下所示 activity User Id 0 VIEWED MOVIE 158d292ec18a49 1 VIEWED MOVIE 158d292ec18a49 2 VIEWED MOVIE 158d292ec18a4
  • python 日志记录会刷新每个日志吗?

    当我使用标准模块将日志写入文件时logging 每个日志会分别刷新到磁盘吗 例如 下面的代码会将日志刷新 10 次吗 logging basicConfig level logging DEBUG filename debug log fo
  • tkinter:打开一个带有按钮提示的新窗口[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 用户如何按下 tkinter GUI 中的按钮来打开新窗口 我只需要非常简单的解决方案 如果代码也能被解释那就太好了 这

随机推荐

  • Apache POI评估公式

    我的工作表单元格中有一些公式 我想在插入一些值后评估它们 前任 我的公式是 SUM B1 B2 插入值之前B1值为1 and B2值为3 公式结果为4 插入值后 现在 B1 有了值5 并且 B2 有值2但公式仍然产生4 我如何评估 触发这个
  • 使用 FQL 的随机好友

    我现在正在使用 fql 它将所有朋友列表放入数组中 然后我对该数组进行排序以获得随机朋友 但似乎需要很长时间 因为我必须收集所有朋友才能获得单个随机朋友 我如何在 fql 中找到随机好友 SELECT uid name pic sex FR
  • 搜索 WindowBuilder 文档/API

    我正在使用 WindowBuilder Pro 进行一个项目 在试图很好地掌握它的同时 我一直在寻找好的文档 但没有任何运气 我发现的最好的是Google WindowBuilder Pro 信息页面 http code google co
  • 带有 x86-64 组件的谐波系列

    尝试计算调和级数 现在我正在输入我想要添加的数字 当我输入像 1 2 这样的小数字时 程序只是停止 不会崩溃 它似乎正在进行计算 但它永远不会完成程序 这是我的代码 denominator xor r14 r14 zero out r14
  • MVC:我可以在控制器外的类内部使用 ModelState 吗?

    我可以在一节课上做这个吗 using System Web Mvc public static class aaa public static test if something ModelState AddModelError test
  • 安装 opencv-python-headless 需要很长时间

    当我安装时opencv python headless在 Google Colab 中 需要 15 分钟才能完成 My code pip install upgrade pip pip install opencv python headl
  • 在 Android studio 2.2.3 中找不到工具 > Firebase

    根据开发人员指南 https developer android com studio write firebase html https developer android com studio write firebase html 我
  • 验证库 (.lib) 中使用的 CRT

    如何检查 Windows 中的静态库 lib 链接到哪个运行时库 我正在使用 MDd 编译我的项目 并且我假设我链接到的库正在使用 MTd 多线程调试 Error 7 error LNK2005 public thiscall std Lo
  • 为什么我的手机无法访问电脑网络?

    我有一个问题 昨天我可以从手机访问我的计算机网络 但今天它不起作用 为什么会这样 我准备的东西 我已经使用 XAMPP 运行本地服务器 我已经开始Apache and MySQL 我通过 WIFI 连接到同一网络 我的手机是通过USB连接到
  • 在 IIS6 上使用 Decimal In Route 进行路由

    我的 MVC3 项目中有一条路线 当通过调试器和 IIS7 运行时 该路线在本地运行得非常好 但是 我们的服务器是 IIS6 当我将应用程序移出时 我收到 找不到页面 错误 我的猜测是这与路线中的小数有关 所以我尝试实现一个 RouteHa
  • 如何将参数传递给 webpack.config.js?

    我正在跟进these https www hipstercode com blog 27 指令基于this https github com vuejs templates webpack tree master template项目 官方
  • 在视图上创建全文索引时出现问题

    我有一个这样创建的视图 CREATE VIEW dbo vwData WITH SCHEMABINDING AS SELECT DataField1 DataField2 DataField3 FROM dbo tblData 当我尝试在其
  • 有时会出现模式关闭时的空白屏幕

    我有一个动态创建的表格 每行都有按钮 如果我单击按钮 模式将打开以输入模式后面带有黑屏的详细信息 单击接受按钮时 模式将关闭 黑屏必须消失 它有时会消失 但在其他情况下不会消失 这就是在模式中单击 接受 按钮后我的屏幕有时会出现的情况出现的
  • 无法调用基类的受保护函数?

    我无法在基类中调用受保护的函数 为什么 它看起来像这样 class B B2 public virtual f1 B 0 protected virtual f2 B codehere class D public B public vir
  • Matlab 中的相关可观测属性。有效吗?

    在 Matlab 类中 声明在语法上似乎是正确的property那是依赖者 计算未存储 和可观察的在同一时间 考虑代码 properties Access private instanceOfAnotherClass end propert
  • Android 上有时会忽略 LD_LIBRARY_PATH

    我有一个 Android 应用程序 它会生成许多与我随包分发的库动态链接的本机可执行文件 为了启动这些二进制文件 我使用 LD LIBRARY PATH 环境变量让它们知道从中加载库的位置 但在某些设备上这根本不起作用 LD LIBRARY
  • 如何将无头铬模块与AWS Lambda捆绑在一起?

    我尝试将 Puppeteer 与 Lambda 结合使用 但是 在无服务器部署中 由于超过 250mb 未捆绑包大小限制 Lambda 会出错 因此 为了突破限制 我改用了 Puppeteer 核心 它不包含铬 这需要引用可执行文件的路径来
  • 是否有库或其他方法可以进行 128 位数学运算?

    我正在编写一个加密应用程序 需要使用 128 位整数 除了标准的加 减 乘 除和比较之外 我还需要幂和模函数 有谁知道可以做到这一点的库或其他实现 如果不是 128 位 是否有 64 位选项可用 查看GNU 多精度算术库 http gmpl
  • 如何在react中为状态分配prop值

    我有一个覆盖层 它是从另一个 React 组件启动的 该组件有一个也会自行更改的按钮 当用户单击按钮时 更改就会发生 然后按钮会更改其类名 它还向作为覆盖层的子组件发送一个 prop 值 叠加层会根据属性以及是否单击添加一个类 一切都进展顺
  • 哪个 openid / oauth 库可将 django 项目连接到 Google Apps 帐户?

    我正在为一家使用 Google Apps 登录的公司开发一个 Intranet django 项目 不使用 GAE 所以我希望我的用户能够使用他们的 google 帐户登录来登录我的 django 项目 OpenID 似乎很合适 尽管也许