2

我将使用 OAuth2 和 XACML(使用 AuthZForce、Balana、AT&T XACML 或类似的东西)保护我的 Spring Cloud 应用程序。

我想使用 Spring-Cloud(-Netflix) 的微服务。为了使 XACML 可用,我认为我需要这个:

  1. 每个现有 API 服务的 PEP
  2. PDP 作为 PEP 使用的新服务。因为 Spring-Cloud(-Netflix) 具有负载平衡功能 (Eureka),我需要在 Eureka 上注册此服务并实现 REST-API。
  3. 因为所有 PDP 都应该使用相同的策略,所以它们需要集中存储(策略提供者)

哪个框架最适合这种方法。

更新 1 应该可以使用 AuthZForce(根据功能描述),但我不太确定如何(没有详细的文档或教程)。

4

1 回答 1

5

我对所有的框架都不是很了解,所以我无法客观地回答哪个框架最适合。但我可以给 AuthzForce 一个答案。

对于 PDP 部分,您可以使用AuthzForce Core作为 Java 库。wiki提供了有关策略提供者的信息,以及如何在必要时将您自己的添加到框架中。那里提到了一个从 MongoDB 数据库获取策略的方法。请注意,如果您希望 PDP 使用相同的策略,中央存储是一种解决方案,另一种是使用复制/同步。例如,如果您使用支持在本地文件系统上获取策略的 Policy Provider,那么像csync2这样的分散式集群同步工具可以完成这项工作而不会出现单点故障。

此外,您可能对AuthzForce Server感兴趣,它为 PDP 和 PAP(策略管理)提供多租户 REST API,符合XACML REST 配置文件(用于 PDP 部分)。如果您只需要 PDP,这可能是矫枉过正,但如果您的要求朝那个方向发展,则可能值得一看。

对于 PEP 部分,您可以重用Maven Central (groupId=org.ow2.authzforce, artifactId=authzforce-ce-xacml-model) 上可用的 authzforce-ce-xacml-model(和依赖项)来操作交换的 XACML 请求/响应使用您的 PDP 的 REST API。这主要包含从 XACML 模式派生的所有 JAXB 注释类,以及标准 XACML 标识符的枚举:类别、属性、数据类型等。

于 2017-07-01T23:31:13.790 回答