使用 OAuth2 进行后端到后端身份验证

Backend to Backend authentification with OAuth2

我正在尝试做什么

现在我正在为 Both 开发 Java Spring 后端,它管理他从 api.ai 的 NLP 获得的请求并返回相应的信息。现在我想与使用 OAuth2 的不同服务进行交互,以从那里获取 information/data。

到目前为止我做了什么

我已经在我的 application.properties 文件中添加了我的服务凭据。但是只找到了一个解决方案,例如用户可以在我的服务上使用他的 facebook 凭据登录。 但是我需要让我的服务在其他服务上进行身份验证(使用我的属性文件中的给定凭据),以便从那里收集数据。

你们知道解决方案、提示和技巧吗?

据我了解,逻辑应该如下。

由于您拥有 SSO(基于 OAuth2),您只需登录一次并从 OAuth2 服务获取令牌(访问令牌和刷新令牌)。当您调用任何服务时,访问令牌包含在请求 headers 中。 现在 Service1 必须使用相同的身份验证信息调用 Service2。

在 Service1 中调用 OAuth2 服务来检查令牌是否有效。如果是,您只需要使用相同的令牌来调用 Service2。

所以只需从请求 headers 中提取令牌并添加到您发送到 Service2 的请求的 headers 中。可以完成例如通过添加过滤器并将身份验证信息存储在 ThreadLocal 变量中(或者如果您通过 运行 Jobs 生成新线程,则可继承 ThreadLocal)。

Service2 反过来也通过调用 OAuth2 服务检查令牌,但令牌有效。

对我来说,这就是你所需要的。