vic*_*tcu 6 authentication google-api
我在浏览器中成功使用Google Classroom API代表已授权使用Google客户端库通过OAuth2执行此操作的用户.我正在试图弄清楚如何信任从浏览器发送到我的服务器的API结果.这是一个故事,用于解释我试图解决的端到端问题.
{
"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"
}Run Code Online (Sandbox Code Playgroud)
{
"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
}
]
}Run Code Online (Sandbox Code Playgroud)
也许我过度思考了,我不应该担心用户将伪造的Google对象数据传播到我的数据库中?我原以为对象是以某种方式签名的,我的服务器可以根据我的应用程序凭据和代理用户验证的Google登录对象来验证Google对象的真实性.我认为这个过程类似于Google Login允许我验证服务器端登录的真实性.
如果有一个明确的方法,我没有看到它.任何人都可以帮我把事情放在焦点上吗?
无法防止有效用户从用户客户端浏览器向您的服务器发布虚假数据。
一种选择是更新您的应用程序以启用对 Google API 的服务器端访问。
这里有关于如何执行此操作的文档: https ://developers.google.com/identity/sign-in/android/offline-access
如果您可以从客户端请求访问访问令牌,您还可以执行以下请求模式:
1) 客户端向应用程序服务器上的 API 端点发出以下 HTTP 请求
GET /api/list_courses HTTP/1.1
Host: yourapp.example.com
Content-length: 0
Authorization: Bearer googles_api_access_token_here
Run Code Online (Sandbox Code Playgroud)
2) 应用程序服务器上的 /api/list_courses 端点向 google API 服务器发出以下请求:
GET /v1/courses HTTP/1.1
Host: classroom.googleapis.com
Content-length: 0
Authorization: Bearer googles_api_access_token_here
Run Code Online (Sandbox Code Playgroud)
3) (2) 的响应被发送回您的应用程序服务器
4) 您的应用程序服务器将课程列表响应给客户端。
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |