当前位置: 首页 > 知识库问答 >
问题:

Oauth客户端凭据AccessToken在何处存储此令牌并再次访问

步浩壤
2023-03-14

我使用的是Spring Boot,我使用的是第三方API accessToken(通过传递clientId和clientSecret)。

public String getAccessToken(){
   return token;
} 

现在,在我的所有服务中,为了使用第三方API,我确实需要一个accessToken,所以在每个服务类中,我都会调用getAccessToken()来获取令牌,然后进行实际的rest调用。

通过上面这样做,它起作用了。但不知何故,我觉得所有服务类中到处都是重复代码,即getAccessToken()。避免重复的最佳方法是什么?最重要的是,我永远不应该在我的任何服务类中获得inValid access Token

共有1个答案

满和安
2023-03-14

当您使用第三方API时,必须有一个通用代码。

如果您使用的是RestTemboard

添加ClientHttpRequest estInterceptor

 RestTemplate template = new RestTemplateBuilder()
                .additionalInterceptors((httpRequest, bytes, clientHttpRequestExecution) -> {
                    httpRequest.getHeaders().add("Authorization", getAccessToken());
                    return clientHttpRequestExecution.execute(httpRequest, bytes);
                })
                .build();

然后

@Autowired
private RestTemplate restTemplate;

public yourResp yourFunc(String param){
  ... = restTemplate.getFor...

}

 类似资料:
  • 我在这里有点迷路,需要一些直接的请。我是新来Java,这是我试图写的第一个程序,显然与它斗争了一个月左右。因此,目前我们使用邮递员输入客户端ID/秘密从第三方应用编程接口获得访问令牌,使用该令牌我们可以从第三方的另一个终端请求资源。我正在尝试引用多个资源,如此Spring安全示例https://github.com/spring-projects/spring-security/blob/mast

  • 引用的员额: 为什么OAuth v2既有访问令牌又有刷新令牌? 刷新令牌有什么意义?

  • 我的SPA应用程序使用以下体系结构(来源): 这假设我的客户端应用程序知道刷新令牌,因为如果没有用户凭据(例如电子邮件/密码),我需要它来请求新的访问令牌。 我的问题:在客户端应用程序中,刷新令牌存储在哪里?关于这个话题有很多问题/答案,但是关于刷新标记,答案并不清楚。 访问令牌和刷新令牌不应存储在本地/会话存储器中,因为它们不是存放任何敏感数据的地方。因此,我会将访问令牌存储在一个cookie中

  • 我正在用Django和angular构建一个应用程序。目前,我正在本地存储上存储后端发布的JWT。但是,我担心XSS攻击。我应该使用仅HTTP cookie存储令牌吗?我还考虑将令牌存储在auth服务类的变量字段中。但我不能完全确定angular是否在整个应用程序中共享该服务。我的身份验证服务是否只有一个实例?

  • < li >我使用Google-API-python-client django _ sample获得了Google API的access_token。 < li >为了进行脱机访问,我添加了< code > flow . params[' access _ type ']= ' offline ' 。 < li >存储的< code > credentials _ JSON = credenti

  • 当授权范围限于客户端控制下的受保护资源或事先与授权服务器商定的受保护资源时客户端凭据可以被用作为一种授权许可。典型的当客户端代表自己表演(客户端也是资源所有者)或者基于与授权服务器事先商定的授权请求对受保护资源的访问权限时,客户端凭据被用作为授权许可。