【问题标题】:Scheduled Communication between two Resource MicroServices两个资源微服务之间的预定通信
【发布时间】:2017-03-20 09:30:23
【问题描述】:

场景是我有两个资源微服务(使用 Spring Security 保护),让我们假设 A 和 B。 A 想按预定方式从 B 收集数据,因为前 A 将每小时调用 B 的端点以收集一些数据。 需要注意的是,如果两个资源服务具有有效的访问令牌,或者我们可以说用户已登录,则它们可以相互通信。 但是计划的作业必须独立于登录用户连续运行。那么从 A 调用 B 的正确方法应该是什么。

一个。为超级默认用户配置运行计划作业、隐式身份验证?

注意:计划作业独立于用户干预。

【问题讨论】:

    标签: java security spring-boot authorization microservices


    【解决方案1】:

    最好将所有服务保持在世界之外(网络级别的隔离),除了一项服务是您的客户端的单一入口点,其中身份验证/授权处理。所以你只需要在那个服务上实现安全相关的操作/验证,而不是让客户端的请求通过其他服务。

    由于您将服务与外界隔离并且没有在其余服务上实施安全性,因此您不需要令牌或验证来进行服务间通信。

    【讨论】:

      【解决方案2】:

      当我们使用 API 安全性时,最常用的协议是 OAuth 2.0。

      在处理客户端服务身份验证/授权时,最适合的访问令牌供应将是授权代码流。

      但是,在处理服务到服务的身份验证/授权时,最合适的访问令牌供应将是通过 JWT 授权流程。在这种情况下,请求者是否需要使用私钥生成 JWT 令牌。

      但如果想保持简单并且网络限制到位,您可以在 OAuth 中使用简单的客户端凭据流。

      nordicapi 博客中有一个关于使用 OAuth 2.0 处理批处理的有趣主题:

      http://nordicapis.com/how-to-handle-batch-processing-with-oauth-2-0/

      欲了解更多信息,请查看以下链接:

      http://websystique.com/spring-security/secure-spring-rest-api-using-oauth2/

      http://blog.monkey.codes/how-to-use-jwt-and-oauth-with-spring-boot/

      【讨论】: