如何将用户身份验证(JWT)从CAP Java传递到SAP Cloud SDK for Java目标实例?

2020-08-21 16:05发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)您好SAP Cloud SDK ...

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

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


您好SAP Cloud SDK Java和CAP专家,

我已经创建了一个示例应用程序 epmbp-consumer-app ,该应用程序使用了自定义的OData V2服务 通过主体传播使用SAP Cloud SDK for JavaScript。 因此,通过approuter进行身份验证的用户JWT传递给CAP服务,然后用于后端服务调用:

 .execute({destinationName:destinationName,jwt:jwt})

请参见 srv/service.js#L79 。 我想对适用于Java的SAP Cloud SDK执行相同的操作,但是只有在将目标设置为"基本身份验证"时,它才能正常工作。 将JWT作为标题传递。 com/marco.dahms"> Marco Dahms 不能解决问题。

我可以在哪里传递能够使用以下方法从CAP API中检索到的JWT:

字符串jwt = AuthenticatedUserClaimProvider.INSTANCE.getUserClaim(); 

由SAP Cloud SDK for Java执行的呼叫?

最诚挚的问候
格雷戈尔

5条回答
天桥码农
2020-08-21 16:31 .采纳回答

Gregor,您好

除了之前建议的手动标头设置外,另一个建议是将VDM调用代码包装到Callable中,然后将其传递到AuthTokenAccessor.executeWithAuthToken()方法中。

例如:

字符串jwtString = AuthenticatedUserClaimProvider.INSTANCE.getUserClaim();
 AuthTokenAccessor.executeWithAuthToken(new AuthToken(JWT.decode(jwtString)),()-> {
  //调用VDM服务的代码在此处。
 });  

如果这不起作用,我唯一的其他建议是尝试Java SDK的3.10.0版本。

最诚挚的问候,
巴勃罗

一周热门 更多>