服务到服务呼吁SaaS应用

2020-08-23 02:15发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嘿,我正在创建一个基于SAP C...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嘿,
我正在创建一个基于SAP Cloud SDK的应用程序,该应用程序可以通过SaaS Provisioning服务进行订阅。 验证通过使用xsuaa-service的approuter以通常的方式进行。

现在,我需要对某些应用程序端点的API访问权限。 我可以利用xsuaa服务的客户端ID和密码来获取JWT令牌并访问这些端点。 但是:该JWT令牌仅限于提供者帐户-从而仅限于单个租户!

我尝试了几件事-尤其是为XSUAA创建服务密钥-但它们总是获得相同的凭据和身份区域。

是否可以通过XSUAA创建范围在身份区域内的其他OAuth客户端?

其他信息:该问题适用于SAP Cloud SDK的Java和JS/TS风格...

3条回答
wang628962
2020-08-23 02:55

您好Tobias,

如果我正确理解了您的问题,则您在一个子帐户中拥有一个应用程序(我们称该子账户为"提供者"),而您从另一个子账户中订阅了该应用程序(我们将此账户称为"一个订户")。

我了解您现在要实现的是代表请求的租户(例如订户租户)从您的应用程序调用服务。

这里以目标服务为例(在SAP Cloud SDK中已经为您解决了所有这些问题)。 如果查看绑定到目标服务的服务(在应用程序的环境变量的VCAP_SERVICES中,可从命令行通过" cf env "进行访问),您将在此处找到三个相关条目:

"目的地":[
  {
   " binding_name":null,
   "凭据":{
     " clientid":" somethingId",
     " clientsecret":" somethingSecret",
     ...
     " url":" https://provider.authentication.sap.hana.ondemand.com",
     ...
    },
   ...
  }
 ] 

为了获得目标服务的访问令牌,您需要使用clientid和clientsecret作为凭据,针对给定URL的"/img/oauth/token"端点执行客户端凭据授予*。 请注意,URL包含" provider"作为子域,这恰好是您的应用程序所在的子帐户的名称。这不是巧合,而是XSUAA服务(我们从中获取令牌的服务)用来确定的机制 向其租户请求令牌。 这意味着,如果请求应代表"订户"租户完成,则只需将URL中的"提供者"替换为请求租户的名称,在本例中为"订户"。 在运行时,您将从触发应用程序中所有这些请求的传入请求的用户令牌(JWT)中获取此信息。

在适用于JavaScript的SAP Cloud SDK中,您可以使用serviceToken 函数。

我希望这能回答您的问题! 如果没有,请随时提供更多详细信息!

最诚挚的问候,
丹尼斯


*还有其他赠款,您需要的赠款取决于用例和服务

一周热门 更多>