【问题标题】:Gmail Authentication using XOAuth 2.0使用 XOAuth 2.0 的 Gmail 身份验证
【发布时间】:2015-03-23 10:12:52
【问题描述】:

我想用 Java 为我的 Web 应用程序实现 XOAuth 2.0。

我的应用程序要求用户提供用户名和密码。现在使用这些凭据,我想通过 Gmail 对用户进行身份验证。

请建议库,以及如何实现它? 我是使用 Gmail 进行身份验证的新手。需要一些建议。

【问题讨论】:

标签: java oauth-2.0 gmail


【解决方案1】:

据我所知,OAuth 2.0 的目的是防止用户的凭据泄露到第三方应用程序中。

abstract flow shows 客户端(第三方应用程序)应如何使用access_token(使用其中一种授权类型检索)来访问资源。

规范还定义了要使用的基本 HTTPS 调用,例如在 authorization code grant type 的情况下使用(我认为这个流程最适合您)。这有 2 个请求,一个用于 code(用户代理重定向用于将代码发送到第 3 方应用程序),另一个用于 access_token

授权码请求&响应

 GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz
        &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1
 Host: server.example.com

 HTTP/1.1 302 Found
 Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA
               &state=xyz

令牌请求&响应:

 POST /token HTTP/1.1
 Host: server.example.com
 Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
 Content-Type: application/x-www-form-urlencoded
 grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
 &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb

 HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
 Cache-Control: no-store
 Pragma: no-cache

 {
   "access_token":"2YotnFZFEjr1zCsicMWpAA",
   "token_type":"example",
   "expires_in":3600,
   "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
   "example_parameter":"example_value"
 }

因此您无需向用户询问 GMail 凭据。

Here 您可以找到符合 OAuth 2.0 的应用程序的 spring-security 示例。

希望我能帮上忙。

【讨论】:

  • 感谢您的回复。我只是想添加一些内容,我的应用程序没有任何过程来验证用户是否有效,例如存储密码或类似的东西。所以,我需要使用他的 gmail 凭据对他进行身份验证。现在,对于上述令牌,我的理解是 access_tokens 是特定于应用程序的,那么用户是如何进行身份验证的,它将是获得身份验证的应用程序。如果我误解了什么,请更正。欢迎回复。
  • 而且我不想在我的应用程序之外做任何操作。我只想检查用户是否有效,我的意思是是否持有帐户。
  • 我明白了。这个快速启动应用程序可以帮助您使用 Google 构建“登录”按钮。 developers.google.com/+/quickstart/java
猜你喜欢
  • 1970-01-01
  • 2012-01-29
  • 2023-04-08
  • 1970-01-01
  • 2012-02-23
  • 2018-06-23
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
相关资源
最近更新 更多