使用程序化和交互式端点在Cloud Foundry中重用服务

时间:2017-08-25 09:39:24

标签: cloudfoundry pivotal-cloud-foundry cloudfoundry-uaa

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

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

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

因此,要求是:

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

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

  3. 该服务有两种端点:

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

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

    1. 服务应该有一种方法可以在userid名称空间和订阅ID之间进行关联。
    2. 与两个不同的IdP相关联的两个不同的订阅上下文可能都有用户“John”,但这些是两个不同的Johns。

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

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

      5.1。当两个不同的UAA实例指向相同的支持IdP时,不太确定如何解决问题。

      也许UAA可以呈现其实例标识,但是可以使其(在生成的JWT令牌中)呈现支持IdP的身份,并且后者可以签名吗?

        

      现有的CF设施是否可以提供或者可以轻松实现?

      感谢。

0 个答案:

没有答案