0

我想知道是否有可能实现其他 CF 应用程序可以订阅的 Cloud Foundry 托管服务,具有以下要求,并且(或多或少)在现有的 CF 设施内......

问题的上下文是将现有的基于 CF Java 的应用程序转换为可重用的服务,该服务只能部署一次并由其他(相互不相关的)应用程序重用,而不是每个应用程序(或应用程序集)都必须合并一个私有部署的实例服务。

简而言之,订阅应用程序应该能够将他们的数据存储在服务中,并且交互式用户可以访问这些数据。(数据的一个示例可以是订阅应用程序发送的特定用户的消息、工作项等,并且该服务负责在每个用户的基础上聚合它们并向登录的用户显示目标数据的摘要对着他。)

因此,要求将是:

  1. CF 托管的应用程序应该能够动态订阅(然后取消订阅)该服务。

  2. 订阅应用程序可以共享或拥有不同的身份提供者 (IdP) 和 UAA 实例。

  3. 该服务有两种端点:

    • 订阅应用程序用于 app2service(REST 等)调用的端点
    • 旨在供在订阅应用程序的 IdP 中注册的用户进行交互式访问的端点
  4. 服务的交互式端点(最好)受范围保护。服务必须(最好)可以将其范围定义导出到订阅应用程序的 UAA(或者更确切地说,订阅应用程序/UAA 在设计、部署或订阅时导入它们),并且服务的管理员必须能够指定 UAA 将服务定义的范围分配给通过此 UAA/IdP 组合注册的适当用户(即与订阅应用程序关联的用户)。

4.1。至少,交互式端点可能不受范围保护,但它们应该要求并触发身份验证(例如,在其 Spring 安全描述符中具有“intercept-url access=isAuthenticated()”)。servlet 应该能够检索 JWT 令牌并识别发出请求的用户。

  1. 服务应该有一种方法可以在用户 ID 命名空间和订阅 ID 之间建立关联。

与两个不同 IdP 关联的两个不同订阅上下文可能都有用户“John”,但这是两个不同的 John。

因此,当用户 John 到达服务的交互式端点时,服务需要能够确定 John 映射到哪个 IdP/订阅集(以及数据集)。

或者相反,当订阅的应用程序执行 app2service 调用时,服务应该能够以经过身份验证的方式识别调用者的订阅 id,然后确定它与哪个 IdP 关联。无论哪种方式,订阅机制都必须在订阅 id 和订阅应用程序使用的 IdP 之间建立映射;该服务将需要知道此映射。

5.1。当两个不同的 UAA 实例指向同一个支持 IdP 时,不太确定事情会如何解决。

也许 UAA 可以显示其实例身份,但是否可以使其(在生成的 JWT 令牌中)显示支持 IdP 的身份,并且可以对后者进行签名吗?

它是现有 CF 设施提供的东西,还是可以在它们之上轻松实施的东西?

谢谢。

4

0 回答 0