gpt4 book ai didi

python - 使用 OAuth 2.0 简单注册+登录

转载 作者:太空狗 更新时间:2023-10-30 00:18:13 26 4
gpt4 key购买 nike

我对 OpenID OAuth 的东西有点困惑。
(通过 OAuth - 我的意思是这里和以后的 OAuth 2.0)

我的目标是创建一个带有 OpenID(或 OAuth)身份验证以及遗留的站点
电子邮件 + 密码验证。该站点将基于 Django 框架。 (Python)
我了解 OAuth 和 OpenID 之间的区别以及授权和身份验证之间的区别。
我的主要目标是使用 google 作为身份提供者实现 openid 登录。

登录和注册流程必须与许多站点一样。
正如我所见:

注册场景:

1)用户输入openid url(点击谷歌按钮)

2) 用户被重定向到身份验证提供程序 ( google )
页面说:
“很棒的网站”询问您:
电子邮件、语言、国家...

3)用户说是..被重定向回来
幕后“真棒网站”
重试电子邮件语言和其他用户信息
使用访问 token

4)用户填写个人资料中需要的其他内容..
就是这样..他现在注册了。

登录场景:

1)用户输入openid url(点击谷歌按钮)

1.a) 如果用户已经登录认证提供商
嗯......我不清楚......但不知何故用户
在不显示提供者页面的情况下登录(也许它关闭得很快?)

1.b) 如果用户未登录提供程序
然后提供程序显示登录页面并重定向回来
到令人敬畏的网站成功。

因为我必须得到一些用户数据
在我看来,我必须使用:
OAuth 或混合(OpenID + OAuth 扩展)
协议(protocol)。

不清楚的地方:

  • 我如何获得我需要的信息的范围..
    我搜索但找不到..在某人的博客上找到
    “https://www.googleapis.com/auth/userinfo#email”用于电子邮件
    但是用户语言,国家......等等如何记录它?

  • 如果我将使用 OAuth - 就足够了吗
    两者都做 - 注册和登录
    否则我将不得不通过 OAuth 获取用户数据
    并使用 OpenID 登录?

  • 在我的场景中可以使用 OAuth 2.0 吗?
    或者使用 1.0 会更简单,因为我不需要
    初始帐户注册后不再有用户数据?
    (我认为 1.0 更复杂,因为它有 3 个阶段..
    但是 2.0 更复杂,因为访问 token 会过期.. 但是
    到期在我的场景中不会成为问题,因为我不需要用户数据
    注册后)

  • 那里有几个库:
    在阅读 google api 文档时,我发现:

  • google-api-python-client
  • openid-python-openid
  • gdata-python-客户端
    (应该是谷歌服务的 api 不知道它是否有 oauth
    嗯..根据这个http://code.google.com/intl/ru/apis/gdata/docs/auth/oauth.html
    它有 oauth
    )
  • python-oauth-client (http://code.google.com/p/python-oauth-client/)
  • 我虽然那很多,但后来发现:
    http://your-move.appspot.com(源文件:https://github.com/sje397/Chess)
    似乎正在使用 google.app.engine lib
    从 google.appengine.api 导入用户
  • 那么该选择哪一个呢?

  • 到目前为止,我认为最简单的实现是:
    像这样:
    http://code.google.com/p/google-api-python-client/source/browse/samples/oauth2/django_sample/buzz/views.py
    但是第 38-44 行:在我的情况下,将获取用户电子邮件语言和其他内容(而且我将使用其他范围......第 29 行)
    对于新注册用户.. 或者如果它是注册用户只需忽略凭据并删除它。 (继续现场 session )

    我错了吗 ?
    我在上面提到的库上看到了很多实现,我怀疑我是对的。

  • 还有一个问题:
    我的后备旧身份验证将使用电子邮件作为登录名..
    如果身份提供商是电子邮件提供商 ( google )..
    当用户尝试登录时,我可以从提供商处获取电子邮件......并进行搜索
    从数据库中的提供商获取的电子邮件.. 所以我可以找到用户。

    如果身份提供商不是电子邮件提供商怎么办:
    喜欢 Facebook ?我将如何在数据库中搜索用户?
  • 最佳答案

    在我看来,OpenID 和 OAuth 2.0 是两个不同的概念。

  • OpenID 顾名思义,主要集中在管理身份。所以它更像是一个管理用户身份的框架或协议(protocol)。
  • OAuth 2.0 旨在提供一种协议(protocol),该协议(protocol)可以使基于 Internet 的应用程序管理与某些第三方授权提供商的授权。我建议你通过 IEFT OAuth 2.0 Spec在弄脏手之前。您也可以在本文 A simplified explanation of OAuth2.0 中找到一些不错的信息

  • 似乎你希望你自己的网站可以自己处理用户授权,这意味着在 OAuth 2.0 领域你自己的网站是一个 AuthorizationServer。

    向你提问:
    1.范围由授权提供者提供,请引用他们的文档。
  • OAuth 仅提供框架,用于授权您的 Web APP 访问资源所有者的 protected 信息。以谷歌为例,授权你的应用访问他/她 protected 信息的最终用户仍然是谷歌用户,除非你的Web APP在你自己的用户账户数据库中自动为他/她创建一个用户账户——我认为这一步是什么你的意思是注册。 OAuth 不包括任何有关注册的内容,因为它超出了授权范围。
  • 在您的场景中,您仍然拥有自己的帐户数据库,并希望用户可以使用用户名和密码进行身份验证。如果您实现自己的 AuthorizationServer 并使用“资源所有者密码凭据”身份验证流程,OAuth 2.0 确实可以处理这种情况。
  • 我不是 Python 专家,但我可以告诉您,在评估这些库之前,您必须了解 OAuth 2.0 规范中定义的不同角色。一些库扮演授权服务器角色,一些扮演资源服务器角色。
  • 关于python - 使用 OAuth 2.0 简单注册+登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5870774/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com