点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我能够在Cloud Foundry上部署多租户应用程序。
在nodejs应用程序中,我可以显示当前用户和租户ID。
下一步是在我的提供商帐户中共享目标服务,以便能够 读取我的消费者帐户中的目的地。
我将为您提供我的子帐户的概述:
1。 提供者租户:在此帐户上,我部署了多租户应用程序,并将其注册到saas服务中。
2.有一个目标服务链接到approuter和目标服务。 消费者租户1:我已在提供者租户中订阅了该应用程序,并且能够打开该应用程序。
3。 消费者租户2:我已在提供商租户中订阅了该应用程序,并且能够打开该应用程序。
我使用approuter的订阅中间件来实现回调项。
当我检查订阅时,可以看到它们成功完成并且共享了目标服务。
现在我创建了3个名为SEARCHENGINE的目的地
针对提供商租户:
对于消费者租户1:
对于消费者租户2:
在提供者租户上的nodejs应用中,我希望能够读取消费者租户上的目标配置。
因此,我在应用程序中创建了一条新路由。
router.get('/dest/:destinationName',异步函数(req,res,next){ 尝试{ const destinationName = req.params.destinationName; const destination = readDestination(destinationName); res.status(200).json(目的地); } catch(错误){ console.error("错误!"); console.error(错误); console.error("结束错误!"); res.status(400).send(错误); } });
readDestination函数正在读取环境变量,获取目标服务凭据并调用目标服务api。
unfourtunat,https://
{ "所有者":{ " SubaccountId":"", " InstanceId":null }, " destinationConfiguration":{ "名称":" SEARCHENGINE", " Type":" HTTP", " URL":" https://default.com", " Authentication":" NoAuthentication", " ProxyType":" Internet" } }
当我从提供商帐户中删除目标位置时,会从目标服务中收到404错误。
退订并重新订阅无济于事。
这是目标服务在mta中的声明:
#DESTINATION -名称:saas_dest_service 类型:目的地 参数: 服务计划:精简版 共享:真实
我的nodejs应用程序环境变量:
"目标":[ { " binding_name":null, "凭据":{ " clientid":" sb-克隆********!b20897 | destination-xsappname!b404", " clientsecret":" ******** =", " identityzone":" testdpi", " instanceid":" a83ade9d-8c3b-4a1f-a0d8-f8e0bcf35858", " tenantid":"", " tenantmode":"专用", " uaadomain":" authentication.eu10.hana.ondemand.com", " uri":" https://destination-configuration.cfapps.eu10.hana.ondemand.com", " url":" https://testdpi.authentication.eu10.hana.ondemand.com", " verificationkey":"-****-", " xsappname":"克隆*******!b20897 | destination-xsappname!b404" }, " instance_name":" saas_dest_service", " label":"目的地", " name":" saas_dest_service", "计划":"精简版", "提供者":null, " syslog_drain_url":null, "标签":[ "目的地", " conn", " connsvc" ], " volume_mounts":[] } ],
如您所见,目标服务的租户模式是专用的。 这是正确的吗?
我如何使这个承租人知道?
我认为我必须在目标服务呼叫的请求中将当前的tenantId添加到某个地方,但是我不知道在哪里。
kr,
Joachim
(50.9 kB)
问题解决了!
要使服务租户知道,您需要向其他网址请求oauth令牌。
上请求令牌我在
`$ {destination.credentials.url}/oauth/token`
这将在提供商端搜索目的地。
如果您希望在消费者端找到目的地,则需要构造另一个令牌URL。
`https://$ {req.authInfo.subdomain}。$ {destination.credentials.uaadomain}/oauth/token`
您可以使用相同的客户端ID和密码。 当您使用此令牌查询目标服务时,一切都会按预期进行。
一周热门 更多>