【问题标题】:Python Flask and Google OAuth2 best practicesPython Flask 和 Google OAuth2 最佳实践
【发布时间】:2014-10-01 05:27:27
【问题描述】:

我有一个User 模型,它有姓名、电子邮件和密码。

如果用户正常注册(通过表单),则存储在我的数据库中的密码使用passlib 进行哈希处理。然后,生成一个令牌并将其返回给用户的客户端。令牌是玩家 id 的序列化。为了验证玩家,他只需使用基本身份验证的密码字段中的令牌登录,我只需反序列化令牌并通过反序列化的 id 查找玩家。此外,玩家可以使用密码验证自己。

使用 Google 的 OAuth2 的问题是玩家没有设置他的密码;他只向服务器发送谷歌验证的令牌,服务器将令牌发送给谷歌并获取用户的电子邮件、姓名等。

如何为用户生成密码?我应该在这里做什么?

我现在针对 Google OAuth2 用户注册的 hackish 解决方法很简单:从 Google 获取用户信息,生成伪造密码(经过哈希处理),然后为用户生成身份验证令牌。然后,用身份验证令牌(经过哈希处理)替换虚假密码,并将其作为用户密码插入。然后将身份验证令牌返回给用户的客户端。

换句话说,身份验证令牌成为密码。现在我的身份验证令牌也不会过期。

显然,这是一个巨大的 hack。这样做的正确方法是什么?每次用户需要验证自己时,我应该只 ping Google 吗?

【问题讨论】:

    标签: python authentication oauth flask


    【解决方案1】:

    一种选择是要求用户在使用 OAuth2 后向您的网站注册,但这很愚蠢 - 您首先使用 OAuth2 来保存它。

    我只是不为这个用户保存密码。为什么你仍然需要它?正如您所说,他正在通过 OAuth2 进行身份验证,您需要 ping OAuth2 提供程序以验证用户。

    【讨论】:

    • 是的,我可能会为用户添加一个额外的列,表明他们是如何注册的:谷歌、直接等。然后让我的用户身份验证功能查看他们如何注册并决定如何验证用户。
    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 2020-05-01
    • 2020-08-07
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    相关资源
    最近更新 更多