谷歌课堂API认证对象

问题描述 投票:6回答:2

我成功地用在浏览器的谷歌API课堂代行谁授予的权限使用谷歌客户端库通过的OAuth2这样做的用户。我试图找出如何信任发送到从浏览器我的服务器API的结果。这里有一个故事来解释我到底到终端的问题,我试图解决的问题。

  1. 用户X登录到使用谷歌登录,和我自己的网站保存用户的谷歌登录对象(这是在id_token的形式转移到我的服务器和解码,以确保在详细描述here真实性)在我的数据库。这种反应最终看起来像这样大量删节对象:

{
   "iss": "accounts.google.com",
   "azp": "redacted-string",
   "aud": "redacted-string",
   "sub": "redacted-string",
   "hd": "redacted-string",
   "email": "redacted-string",
   "email_verified": true,
   "at_hash": "redacted-string",
   "name": "redacted-string",
   "picture": "redacted-string",
   "given_name": "redacted-string",
   "family_name": "redacted-string",
   "locale": "en",
   "iat": redacted-number,
   "exp": redacted-number,
   "jti": "redacted-string"
}
  1. 我想做的事情在谷歌课堂上的东西代表用户,如清单教室。所以,我要求允许通过适当的OAuth2流程,谷歌提供了送他们这样做。然后,将具有获得同意后,我进行所需的谷歌教室API调用来列出教室,并接收返回教室的列表,像这样:

{
 "courses": [
  {
   "id": "redacted-number",
   "name": "redacted-string",
   "ownerId": "redacted-number",
   "creationTime": "2019-01-09T19:04:28.084Z",
   "updateTime": "2019-01-09T19:04:56.828Z",
   "enrollmentCode": "redacted-string",
   "courseState": "DECLINED",
   "alternateLink": "https://classroom.google.com/c/redacted-string",
   "teacherGroupEmail": "redacted-string",
   "courseGroupEmail": "redacted-string",
   "teacherFolder": {
    "id": "redacted-string"
   },
   "guardiansEnabled": false
  },
  {
   "id": "redacted-number",
   "name": "redacted-string",
   "ownerId": "redacted-number",
   "creationTime": "2019-01-09T19:03:06.321Z",
   "updateTime": "2019-01-09T19:03:05.328Z",
   "enrollmentCode": "redacted-string",
   "courseState": "PROVISIONED",
   "alternateLink": "https://classroom.google.com/c/redacted-string",
   "teacherGroupEmail": "redacted-string",
   "courseGroupEmail": "redacted-string",
   "teacherFolder": {
    "id": "redacted-string"
   },
   "guardiansEnabled": false
  }
 ]
}
  1. 现在我想把这个信息传达给我的服务器并将其存储在与用户相关联的数据库。我使用的是智威汤逊已经当请求到达我的服务器我知道哪些用户发送它来验证用户左右。我不知道是如何信任他们发送的谷歌课堂对象我实际上是从谷歌来了。

也许我过思考它,我不应该担心传播假谷歌对象数据到我的数据库用户?我还以为物体以某种方式,我的服务器可能能够验证给我的应用程序凭据谷歌对象的真实性,并代理用户的验证谷歌签署了签入的对象。我认为这个过程将类似于谷歌登录如何让我来验证我的服务器端登录的真实性。

如果有这样做一条明路,我没有看到它。谁能帮我把东西放到重点是什么?

P. S.这是一个后续行动this question它从来没有得到一个像样的回答,很遗憾。

authentication google-api
2个回答
2
投票

有没有办法防范的有效用户发布虚假数据从用户的客户端浏览器服务器。

一种选择是更新应用程序,使服务器端的访问谷歌的API。

对于如何做到这一点文档在这里:https://developers.google.com/identity/sign-in/android/offline-access

如果你从客户端请求访问的访问令牌还可以执行以下的要求模式:

1)客户端让你的应用程序服务器上的以下HTTP请求的API端点

GET /api/list_courses HTTP/1.1
Host: yourapp.example.com
Content-length: 0
Authorization: Bearer googles_api_access_token_here

2)/ API / list_courses你的应用服务器端点作出以下要求网上搜寻API服务器:

GET /v1/courses HTTP/1.1
Host: classroom.googleapis.com
Content-length: 0
Authorization: Bearer googles_api_access_token_here

3)从(2)被发送回应用程序服务器的响应

4)你的应用程序服务器的课程给客户名单响应。


1
投票

这个问题可能不会在所有问题,因为你写的:

我不知道是如何信任他们发送的谷歌课堂对象我实际上是从谷歌来了。

假设API沟通,他们甚至不发送它,但你通过SSLTLS(主机的证书也可能是validated,虽然这不是必需的,因为当它不匹配ADNS记录,它是无效的)获取它。用户也可以被验证的ID标记;看到documentation

© www.soinside.com 2019 - 2024. All rights reserved.