云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

百度云_嘉兴网站建设哪家好_评分榜

小七 141 0

本博文旨在介绍一个解决方案,即外部系统如何使用OAuth2密码授权来调用部署在Cloud Foundry环境中的应用程序。

本博文中的截图来自真实的开发系统。

背景

在Cloud Foundry环境中发布SaaS应用程序的标准架构如下。

以上架构是为SaaS订阅UI流而设计的。基于这种部署,客户可以订阅SaaS应用程序,并使用自己的自定义身份服务(IdP)登录。但若客户想从程序中调用SaaS应用程序呢?上述体系结构适用于UI流,购物返现,但不适用于机器到机器的通信。这篇博文试图回答这样一个要求:一些客户希望从部署在任何外部系统中的自己的程序调用我们的SaaS应用程序。

解决方案体系结构

为了调用部署在提供商子帐户中的应用程序,我们需要一种机制来获取消费者子帐户的客户端凭据。ServiceBrokerAPI就是为此而设计的。Service Broker API可以帮助我们创建XSUAA实例的克隆以生成租户特定的凭据,因此消费者子帐户可以使用自己的客户端凭据进行身份验证。

SAP提供了Service Broker框架(SBF)作为Service Broker的默认实现。这篇博文利用SBF来建立密码授权流。整体架构如下。

演示

下面的部分展示了建立密码授权流的步骤。附录中列出了所有关键源代码和配置脚本

在Cloud Foundry环境中登录提供商子账户,并根据以下配置创建一个XSUAA实例"CallapiWithBroker uaa"(或参见xs)-安全.json见附录)。此配置仅定义一个作用域"GetConsumerToken"。

创建XSUAA实例时,请确保选择"broker"作为服务计划,这是service broker API所必需的。

创建一个名为"CallapiWithBroker auditlog"的审核日志服务实例。请注意,部署service broker时必须进行审计日志记录。

部署Spring Boot应用程序"serviceprovider"。主要文件(pom.xml文件,服务ceProviderController.java, 安全配置.java,和清单.yml)可在附录中找到。

在项目的根路径下,运行以下命令来构建应用程序并将其部署到Cloud Foundry环境。

部署Service Broker"servicebroker"。主要文件(目录.json, 包.json,和清单.yml)在附录中可以找到

到目前为止,提供商子账户中的所有部署都已完成。业务应用程序和service broker已准备就绪,接下来我们可以在消费者子帐户中使用service broker。

登录消费者子帐户,并在下面运行命令。

此命令在marketplace中使用唯一名称"CallapiWithServBroker srvbroker fzjconsumer"注册service broker。此处的"service broker URL"应与提供商子帐户中定义的service broker路由匹配。

注册service broker后,我们可以运行命令"cf marketplace"查看marketplace中的可用服务(请参阅下面的屏幕截图)。此命令显示服务名称(callapiwithsrvbroker srvprovider fzj)、服务计划(默认值)和服务代理名称(callapiwithsrvbroker srvbroker fzjconsumer)。

仍在使用者子帐户中,运行下面的命令创建服务实例,淘客放单,检查服务实例是否创建成功,淘客群,

然后运行下面的命令创建服务实例密钥,

最后运行下面的命令(或使用SAP云平台驾驶舱)查看实例密钥详细信息,

服务实例密钥信息包括客户端ID(uaa.clientid如下所示截图),客户机密(uaa.clientsecret客户端),身份验证URL(uaa.url),以及业务应用程序URL(URL)。客户可以在密码授权流中使用这些信息。

使用服务实例密钥,我们已经可以应用客户端凭据授权–使用客户端ID和客户端机密交换访问令牌,并使用访问令牌调用我们的业务应用程序。因为我们还没有在ServiceBroker部署中指定任何权限(请参阅https://preview.npmjs.com/package/@sap/sbf#"授权"配置的附加服务配置),访问令牌将不包括任何授权角色或作用域。因此,使用此访问令牌调用业务应用不会返回任何结果(业务应用需要授权范围"GetConsumerToken")。

当我们登录消费者子账户时,可以发现service broker已经在此处传播授权角色"GetConsumerToken"(如下面的屏幕截图)。

在开发阶段,成都大数据,我们可能会通过添加或更改授权角色/作用域来调整XSUAA,service broker将帮助我们实时将授权更改传播到消费者子帐户。

在本节中,我们将在消费者子帐户中建立IdP,并在密码授予流中利用此IdP。

在SAP Cloud Foundry环境中,IdP可以用SAML2协议或OIDC(OpenID连接)协议设置。XSUAA开发团队解释,SAML2协议主要是针对UI流设计的,不适合密码授予,所以必须采用OIDC建立IdP

在SAP云平台驾驶舱中,我们可以进入消费者子账户,选择侧栏菜单安全/信任配置,点击"建立信任"按钮,选择一个可用的IdP(如下面的屏幕截图所示),选择的IdP将通过OIDC协议创建。