2017-04-21 313 views
1

我想写一个web应用程序,它使用登录谷歌。我对应该遵循的步骤顺序有些困惑。据谷歌文档,为用户签署正常的流程是:编程流程与谷歌登录

recommended flow for signing in a user

我打算搞清楚的是:

1)我应该与每一位发送IdToken后续的API请求从网络到我的服务器。

2.)如果有人窃取了此访问令牌并用它向我的服务器发送了呼叫,该怎么办?

回答

0

从草图典型的信息显示在谷歌的official publications

enter image description here

  1. 挥发性令牌生成,由发行人(谷歌)签署,并通常 相当短的寿命到期后(而不是谷歌登录专用:What is intent of ID Token expiry time in OpenID Connect?)。该Google docs描述了如何通过https发送令牌XYZ123到 https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123

    正如@伊恩 - 理发写道here:“一定要始终通过HTTPS发送ID令牌 - 尽管他们不会被恶意本身使用,攻击者如果他们可以拦截它,可以使用其中一个建立与应用程序服务器的会话,所以它的重要性不是以纯文本形式发送。“

    (刷新)令牌将用于验证用户。然后你的后端逻辑(蓝色服务器部分)可以授予进一步的特权或例如在后期响应中传输数据。 The API(JavaScript版本)提供了一个工具集来监视用户的会话状态。

  2. 如陈述here,您必须指定“授权原点”。只有获得授权的 来源才能通过Google身份验证 API验证其客户用户。请注意,即使端口 很重要,即如果您允许本地主机:8080作为授权来源, 那么localhost:9999不包括在内!此外,客户端ID本身并不是秘密,并且自然暴露在您的html文档或应用程序中。但只有授权的来源才有资格遍历登录工作流并将令牌传输到后端,在后端通过调用API进行验证。