使用谷歌服务签名,为什么我应该使用为我的后端创建的凭据?

时间:2016-11-17 07:26:41

标签: android login oauth

在副标题下的这个页面(https://developers.google.com/identity/sign-in/android/start-integrating)上,“获取后端服务器的OAuth 2.0客户端ID ”,它说:

  

如果您的应用使用后端服务器进行身份验证或访问Google   来自后端服务器的API,您必须获取OAuth 2.0客户端ID   这是为您的服务器创建的。

但我不明白为什么这么重要?如果我做了一些与我的Android设备的SHA1相关联的凭据,我仍然可以获得令牌并将其传递给我的后端,那么为什么我使用为后端创建的凭据这么重要呢?

更新我认为我误读了文档。我认为它不希望我在我的设备中使用为我的后端创建的客户端ID,只是为我的后端创建了一个单独的id,因为为Android / iOS创建的凭据没有客户端密钥

1 个答案:

答案 0 :(得分:0)

使用后端服务器进行身份验证中,您可以看到此警告:

  

不要在后端服务器上接受普通用户ID,例如您可以使用GoogleSignInAccount.getId()方法获得的用户ID。修改后的客户端应用程序可以向服务器发送任意用户ID以模拟用户,因此您必须使用可验证的ID令牌来安全地获取服务器端登录用户的用户ID。

因此,如果你想用后端验证用户,你需要在android上调用getIdToken(),将它发送到服务器,验证服务器上收到的令牌(这里你需要检查客户端ID) 为什么重要?在同一章中,您可以阅读:

  

ID令牌中的aud值等于您的应用程序客户端之一   标识。此检查是必要的,以防止发出ID令牌   恶意应用程序用于访问您的同一用户的数据   应用程序的后端服务器。

出于身份验证的目的,您可以使用Android凭据中的ClientId。 如果要代表用户使用API​​的服务器端访问,则需要Web凭据。在这种情况下,您将需要Web凭证,因为它还包含clientSecret,必须交换收到的令牌以访问和刷新令牌。