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

问题描述 投票:0回答:1

我有三个应用程序:资源服务器的REST API,授权服务器和应该使用REST Api的VueJ上的javascript客户端。使用授权后获得的访问令牌的问题。首先,我决定使用本地存储或cookie来存储访问令牌,但是当我读到它并不安全时。建议使用带httpOnly的cookie,但我无法从js访问。 url params中的加法标记也不正确。那么我应该怎样做才能使用我的Rest Api?我正在使用授权代码授权流程。

spring spring-boot spring-security oauth-2.0 spring-oauth2
1个回答
1
投票

当您拥有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的更多信息

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

© www.soinside.com 2019 - 2024. All rights reserved.