【发布时间】: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