Python Flask和Google OAuth2最佳实践

时间:2014-08-07 20:23:32

标签: python authentication oauth flask

我有User型号,其中包含姓名,电子邮件和密码。

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

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

如何为用户生成密码?我该怎么办?

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

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

显然这是一个巨大的黑客攻击。这样做的正确方法是什么?我是否应该在每次用户需要验证自己时ping Google?

1 个答案:

答案 0 :(得分:0)

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

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