如何使用现有的电子邮件和密码登录机制来管理 Google OAuth?
How to manage Google OAuth with existing email and password login mechanism?
我有一个应用程序目前正在使用电子邮件和密码进行帐户身份验证。每当用户使用电子邮件和密码登录时,后端都会创建一个 JWT 会话令牌并将其 returns 发送到应用程序。
这很好用。现在,我正在尝试集成 Google 一键登录 [OAuth],我也想保留我现有的登录系统。
我不知道如何为数据库中的用户管理 session/authentication。我现有的用户 table 有:
Name, email, password, ...
在 OAuth 的情况下,我只会得到电子邮件和令牌。一旦我验证了令牌,我就没有密码可以保存了。那么,是否可以只在 external_unique_id
列中为用户保存 OAuth 唯一 ID 而不对密码执行任何操作(如将其留空)?
请帮助我了解如何管理此类系统。
尤其是在external_unique_id
已经存在的情况下用户第二次尝试登录时如何处理流程。
我应该比较从 external_unique_id
提供的 OAuth 收到的唯一 ID 吗?
谢谢!
我们有几种验证方法,
授权服务器生成令牌和授权令牌:
客户端需要通过输入凭据从服务器获取令牌,服务器发回令牌。应用每次都需要连接auth server进行认证
授权服务器与其他应用共享数据库
一旦用户从 auth 获得令牌。服务器。他可以在其他资源服务器中使用它。本资源服务器直接从数据库中获取token,自行认证。
使用JWT授权。
客户端从 auth 获取生成的 Jwt 令牌。服务器。授权服务器可能会将 public 密钥共享给其他资源服务器。资源服务器可以使用 public 键来解码内容。由于只有授权服务器有私钥,所以只有auth.server才能生成正确的jwt内容
在我看来,您需要在数据库中创建一个新用户。
我不知道这是否是最好的方法,但您可以在用户 table 中创建一个新列,告诉您用户使用的登录方法(在本例中,google 或 api).
您真的不需要 google 唯一 ID,您只需要知道身份验证是否成功即可生成新令牌。
在第一次身份验证时,您需要根据 google 负载创建一个新用户。在下一个中,只需使用他的电子邮件让用户进入数据库,然后做任何你需要做的事情。
我有一个应用程序目前正在使用电子邮件和密码进行帐户身份验证。每当用户使用电子邮件和密码登录时,后端都会创建一个 JWT 会话令牌并将其 returns 发送到应用程序。
这很好用。现在,我正在尝试集成 Google 一键登录 [OAuth],我也想保留我现有的登录系统。
我不知道如何为数据库中的用户管理 session/authentication。我现有的用户 table 有:
Name, email, password, ...
在 OAuth 的情况下,我只会得到电子邮件和令牌。一旦我验证了令牌,我就没有密码可以保存了。那么,是否可以只在 external_unique_id
列中为用户保存 OAuth 唯一 ID 而不对密码执行任何操作(如将其留空)?
请帮助我了解如何管理此类系统。
尤其是在external_unique_id
已经存在的情况下用户第二次尝试登录时如何处理流程。
我应该比较从 external_unique_id
提供的 OAuth 收到的唯一 ID 吗?
谢谢!
我们有几种验证方法,
授权服务器生成令牌和授权令牌: 客户端需要通过输入凭据从服务器获取令牌,服务器发回令牌。应用每次都需要连接auth server进行认证
授权服务器与其他应用共享数据库 一旦用户从 auth 获得令牌。服务器。他可以在其他资源服务器中使用它。本资源服务器直接从数据库中获取token,自行认证。
使用JWT授权。 客户端从 auth 获取生成的 Jwt 令牌。服务器。授权服务器可能会将 public 密钥共享给其他资源服务器。资源服务器可以使用 public 键来解码内容。由于只有授权服务器有私钥,所以只有auth.server才能生成正确的jwt内容
在我看来,您需要在数据库中创建一个新用户。
我不知道这是否是最好的方法,但您可以在用户 table 中创建一个新列,告诉您用户使用的登录方法(在本例中,google 或 api). 您真的不需要 google 唯一 ID,您只需要知道身份验证是否成功即可生成新令牌。 在第一次身份验证时,您需要根据 google 负载创建一个新用户。在下一个中,只需使用他的电子邮件让用户进入数据库,然后做任何你需要做的事情。