Spring Security OAuth 2:如何在JavaScript客户端中使用访问令牌

时间:2019-02-17 21:00:57

标签: spring spring-boot spring-security oauth-2.0 spring-oauth2

我有三个应用程序:带有资源服务器的REST API,授权服务器和应该使用REST Api的VueJ上的javascript客户端。授权后使用访问令牌时出现问题。首先,我决定使用本地存储或cookie来存储访问令牌,但在我阅读时并不安全。建议将cookie与httpOnly一起使用,但是我无法从js访问。网址参数中的加法标记也不正确。那么我应该如何使用Rest Api?我正在使用授权码授予流程。

1 个答案:

答案 0 :(得分:0)

拥有Javascript客户端时,客户端本身应充当 OAuth2客户端

意味着,服务器不是获得令牌的人。客户端(浏览器中的javascript应用程序)将从授权服务器获取令牌。

您可以通过使用名为implicit的授权类型来实现。

在此授予类型中,没有client_secret,但是您必须具有有效的client_id。您也不会收到刷新令牌。但是,您可以接收访问令牌和id_token(如果您有OIDC服务器)。

您的问题提示您进行服务器端授权(authorization_code,密码等),然后将该令牌发送给javascript客户端。这是不正确的。

关于OAuth2的详细说明,我们发布了以下视频:https://www.youtube.com/watch?v=u4BHKcZ2rxk

您的JavaScript应用程序将执行此操作:

  1. 我有一个有效的令牌吗?不
  2. 开始隐式授予
  3. 从授权服务器接收令牌
  4. 将令牌存储在内存var token = ....
  5. 使用令牌在服务器上调用API端点
  6. 重复步骤5,直到令牌不再有效
  7. 返回步骤1

下一步,您是观看video并了解有关implicit grant type的更多信息

正如您已经猜到的那样,在服务器上获取令牌然后将其发送到不安全的客户端的过程会以您可能不希望的方式公开您的应用程序。