根据doc,为了使用后端服务器进行身份验证,我必须:
这项工作相当不错,但如果我必须验证对服务器的所有请求怎么办?
我应该存储idToken(在私有分片首选项上)并在每次服务器端验证它吗?由于idToken具有有效日期,因此客户端必须能够在过期时重新生成它。
或者在第一个连接上,我应该向用户返回一个id(没有有效日期),这将允许他与服务器通信(似乎不太安全)?
答案 0 :(得分:2)
对于每个请求,服务器的每个请求都应该验证令牌,就像每个请求的密钥一样。此密钥在很长一段时间内无效,因此如果您希望“会话”持久,则通常会有刷新令牌。如果您没有它,则每次令牌的有效期到期时都需要再次进行身份验证。
所以是的,您应该将令牌存储在客户端。最佳做法是确保一个非常短的有效期,以确保如果令牌受到攻击,攻击者将有很短的时间来做恶意事件。
答案 1 :(得分:1)
我在silentSignIn()
方法的文档中找到了技术答案(@ EmCode的答案是正确的)。 (这是一个link)。
GoogleSignInResult可能包含一个ID令牌,可用于验证和识别您与应用程序服务器建立的会话。如果使用ID令牌到期时间来确定会话生存期,则应在每次API调用应用程序服务器之前调用silentSignIn来检索刷新的ID令牌。
答案 2 :(得分:0)
看看这是否有意义:
这项工作相当不错,但如果必须对服务器的所有请求进行身份验证该怎么办?
我认为Google登录的目的是通过Google凭据对用户进行身份验证。它并不是真正用于验证您自己的服务器上的所有客户端请求。您的服务器和谷歌之间会发生什么应该只是用户令牌验证。一旦令牌被正确验证,后续的C / S数据交换可以使用您选择的身份验证,无需每次都打扰谷歌或关心令牌有效性。
如果您使用ID令牌到期时间来确定会话生存期,则应通过调用检索刷新的ID令牌 每次API调用应用程序服务器之前的silentSignIn。
是的,如果您的应用程序使用了会话,并且您希望令牌定义有效性,那么您需要一直打扰Google。
答案 3 :(得分:-1)
使用后端服务器进行身份验证的正确方法是改进使用此lib,这可以非常快速地获取数据或在beckend服务器上上传数据。