【问题标题】:Secure Spring RESTful API with Google OAuth2 Authorization server使用 Google OAuth2 授权服务器保护 Spring RESTful API
【发布时间】:2016-04-10 12:30:02
【问题描述】:

我计划在 AngularJS 上使用 Spring RESTful API 后端和客户端创建应用程序。

我想使用 Google OAuth2 授权服务器保护我的 Spring RESTful API。

我有一个架构问题:

在 Google 中成功授权后,我将收到来自 Google OAuth2 授权服务器的 accessToken。我是否需要将此 accessToken 传输到我的客户端应用程序(AngularJS)或者我需要在我的后端应用程序中引入一些自己的安全层(例如使用 JWT)并基于 Google accessToken 来发布自己的 jwtToken 并且只将此令牌传输到我的客户端应用?

换句话说 - 从 Google 向我的客户端 AngularJS 应用程序显示 accessToken 并在我自己的 RESTful API 中使用它进行身份验证是否安全?

另外,对于我的 RESTful API,我是否需要在每次从我的客户端应用程序 (AngularJS) 调用我的安全 RESTful API 后使用 Google Auth 服务器验证 Google accessToken?

【问题讨论】:

  • 你申请的目的是什么?您需要访问 Google API 吗?如果我没记错的话,Google Oauth 令牌有限制(每个用户 25 个刷新令牌)
  • 是的,它必须访问 Google API。
  • 我明白了。每个用户都会提供凭据吗?如果是,您需要使用给定的凭据进行身份验证并保留在您的应用程序中(由于请求限制)。但是,也有令牌限制https://developers.google.com/identity/protocols/OAuth2#expiration
  • @alexanoid 我实际上误读了你的问题。是的,向 Angular 应用程序显示访问令牌是安全的,因为 Angular 应用程序必须随每个请求一起发送它。也许您想关注这个系列 5 教程,了解如何使用 Angular 客户端保护 Spring REST 应用程序:spring.io/blog/2015/01/12/…(这是第 1 步的 url,可以访问以下步骤)
  • @ArnaudDenoyelle 非常感谢,这是一个带有源代码的很棒的教程,尤其是这个github.com/spring-guides/tut-spring-security-and-angular-js/… 现在我想知道或者是否可以用 Google OAuth2 替换本教程中自己的 Auth 服务器身份验证服务器..

标签: java angularjs rest spring-security-oauth2 oauth2


【解决方案1】:

向我的客户端 AngularJS 应用程序显示来自 Google 的 accessToken 并在我自己的 RESTful API 中使用它进行身份验证是否安全?

这实际上不是您的访问令牌,它是供您的客户使用的。给他们令牌是非常安全的,因为他们必须在每个请求中将令牌发送到您的后端。这是因为 REST 的性质。

对于我的 RESTful API,每次从我的客户端应用程序 (AngularJS) 调用我的安全 RESTful API 后,我是否需要使用 Google Auth 服务器验证 Google accessToken?

是的,每当您的客户向您的后端发送令牌时,您都必须致电 Google。令牌无效的原因有多种。例如,用户可以撤销您的应用程序的访问权限、令牌已过期等。

More reading on implementing a REST backend with Google OAuth 2

【讨论】:

  • 伙计,感谢您的工作和努力。据我所知,您是唯一一个成功发布了有关使用外部 oAuth 提供程序保护 Spring REST API 主题的有价值教程的人,所以我非常尊重您。我只有一个担心。你的教程是最新的吗?我在 Spring 的世界里绝对是新手,所以我不知道这里用来处理事情的最新方法,但是当我遵循你的方法并从其他来源收集信息时,我觉得你的方法可能有点过时的。请说这次我的感觉是错误的。 :)
  • 它可能已经过时了,因为它是一年多前写的,但基本面没有改变。与 Spring Boot 2 相比,可能存在一些技术细节差异,但总的来说,如果您了解基础知识,则可以将其移植到任何框架。
猜你喜欢
  • 2015-03-31
  • 2016-05-13
  • 2013-08-21
  • 2015-05-22
  • 2018-06-13
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
相关资源
最近更新 更多