[英]Get access token using Spring Security with a specific use-case
Spring Security 5 或其他东西是否支持此用例,我们不必重新发明轮子? 关于如何(重新)更好地实现这一点的想法?
详情如下。 第三方供应商提供的端点。 我们从上游来源提取信息,然后转发给下游供应商。 只需要 2 个 API:
两者实际上都是通过网关调用的。 我们得到了具体信息:
(A) 令牌请求需要基本身份验证(标准 header - 通常 base64 编码)。 提供网关用户和网关密码。
请求令牌的凭据提供给我们:
它以访问令牌和我们并不真正关心的一些其他细节进行响应,并且对我们的用例而言价值为零。
响应中没有expires_in信息。 但是我已经多次测试它知道它确实过期了。 不知道现在多久,我可以做更多的测试来确定。
(B) 保存请求需要为相同的网关用户/密码使用不同的自定义 header ,然后在调用保存信息 API 时需要承载授权 header。
现在,上面的所有实现都在使用RestTemplate 。 工作正常了。 但是每次保存都需要一个令牌,这是昂贵的。 在编写任何缓存或其他一些逻辑以在发出另一个令牌请求之前等待 XY 分钟之前,我将不胜感激任何其他可能已经通过特定于 Spring 的库处理的选项,或者进一步建议如何处理这种情况。
抱歉,如果这不是问这个问题的正确地方,或者之前已经问过这个问题。 一直在寻找类似的用例,但似乎找不到。
谢谢。
您可以使用 OAuth2ClientContext 来存储您的访问令牌。
final OAuth2RestTemplate restTemplate=new OAuth2RestTemplate(resourceDetails, clientContext);
您可以创建 session 并将您的令牌和用户详细信息存储在其中。
UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(user, null,null);
SecurityContextHolder.getContext().setAuthentication(authToken);
在下面检查 Oauth2 expires_in:- https://tools.ietf.org/html/rfc6749 ?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.