如何将Spring WEB应用程序与Spring Data REST应用程序集成?

时间:2016-07-18 07:50:59

标签: spring spring-mvc spring-security spring-integration spring-data-rest

我有目的。

我想将 Spring WEB应用程序 “ApplicationWeb” Spring Data Rest 应用程序“ApplicationRest”集成,以某种方式我可以将“ApplicationWeb”的Spring Security上下文传播到“ApplicationRest”(如果我使用用户“user1”,“ApplicationRest”必须知道记录的Principal是“user1”。

此外,我希望“ApplicationRest”的URL可以访问只有FOR和FROM “ApplicationWeb”应用程序。

如何正确配置两个应用程序?

我可以使用哪种最佳集成方式?

我知道这个问题非常通用,但我对一些可以实现这种实现的解决方案感兴趣。

感谢。

1 个答案:

答案 0 :(得分:0)

我假设您已经在项目中完成了许多项目,例如用户配置,preauth过滤器等。所以我只列出了您必须专门为完成集成而执行的项目。

以下是使Spring Security集成成为可能的方法。

  1. 建立一个数据库(任何关系数据库都没问题)
  2. 在此gist
  3. 中应用架构
  4. 在应用程序中配置数据源。再次查看要点以获取XML配置。
  5. 修改InMemoryTokenStore以寻找JdbcTokenStore。
  6. 使用ApplicationWeb作为授权服务器
  7. 使用ApplicationRest作为资源服务器
  8. 对授权和资源服务器使用相同的resource-id。
  9. 调用资源服务器时,在/token标题中传递已使用ApplicationWeb(auth-server)中的Authorization端点生成的令牌。
  10. 关于请求过滤,只要它们都在同一个容器中且不支持CORS,请求必须失败。但是如果你想绝对限制任何其他客户端/机器人攻击ApplicationRest的可能性

    1. 在ApplicationWeb到ApplicationRest的请求中使用自定义标头。为什么我提出自定义标头,标准HTTP标头比自定义标头更容易操作或镜像。
    2. 在ApplicationRest中使用标准的Servlet过滤器来允许或拒绝任何不良请求。
    3. 如果您需要有关Spring Security的更多信息,我建议您首先进行一些谷歌搜索,如果您没有找到运气,请告诉我,我可以在获得一些时间后发布更详细的说明。