【问题标题】:Authenticating a user using Google使用 Google 对用户进行身份验证
【发布时间】:2014-07-14 16:04:21
【问题描述】:

我很难思考如何在我的 REST 服务中对用户进行身份验证。我计划使用 Google 登录(即在 Android 上)。我不太清楚如何在我的服务器上对用户进行身份验证。我不想获得任何授权(除了验证用户的身份),我想做的就是当我收到请求时,验证用户是他(或她)所说的那个人。

我的理解是用户将登录,从 Google 获取某种令牌,然后将该令牌连同他的请求一起发送到我将用来验证他的身份的服务器。但是,根据我的阅读,用户将他们的请求编码在 JWT(json Web 令牌)中,然后我将使用它来验证他们的身份,而无需直接与 Google 服务器对话。我理解正确吗?

在 Google 的 documentation 上,它说

如果您不需要离线访问,您可以检索访问令牌并通过安全连接将其发送到您的服务器。您可以直接使用 GoogleAuthUtil.getToken() 获取访问令牌,方法是指定没有服务器的 OAuth 2.0 客户端 ID 的范围。

但它没有说明服务器应该如何处理令牌。

【问题讨论】:

    标签: java openid google-oauth google-openid google-oauth-java-client


    【解决方案1】:

    您有一个 android 应用程序允许用户通过 Google+ Sign-In 登录,然后此 Android 应用程序将调用您的 REST API。您想要的是您的服务如何验证此请求。此 Android 客户端将使用令牌向您的服务发送请求,您需要验证此令牌以进行身份​​验证。我的理解对吗?

    如果是这样,您需要验证发送到您的服务的令牌。在您的情况下,您提到的参考是针对 Google API 调用的;这是您自己的服务 API 调用。对于Android端,只需按照参考,在您的服务端,您可以使用TokenInfo validation对用户进行身份验证。

    【讨论】:

    • 这正是我想要的。我不知道如何验证令牌(因此验证用户的身份)。你知道我是否应该仍然使用防伪令牌,但正如 here 所记录的那样?
    • 是的,虽然state是推荐的而不是必需的,这个参数应该用来防止跨站请求伪造。
    猜你喜欢
    • 2017-03-11
    • 2012-11-20
    • 2018-01-22
    • 2020-07-09
    • 1970-01-01
    • 2013-06-24
    • 2016-02-03
    • 1970-01-01
    • 2019-01-10
    相关资源
    最近更新 更多