如何在CloudFoundry中配置userapi服务

2020-08-22 01:23发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们的要求是在SAPUI5应用程...

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

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


我们的要求是在SAPUI5应用程序中显示已登录的用户信息。 在我们的测试过程中,neo-app.json文件中的以下路由在NEO环境中都运行良好:

 {
         " path":"/img/services/userapi",
         "目标":{
             " type":"服务",
             "名称":" userapi"
         },
  },

当应用程序在CF环境中运行时,找不到Userapi服务。 我们不知道要在xs-app文件中添加什么才能使相同的功能正常工作?

在这里希望有人可以帮助我们前进。

谢谢

Rob

3条回答
代楠1984
2020-08-22 01:56

Rob,

Cloud Foundry环境中没有userapi。 有人会说您也许可以使用与座舱相同的ajax调用,但这不是公共API。 因此,您不能依赖它,因为SAP保留更改其行为的权利,恕不另行通知。

由于App Router将与XSUAA服务进行通信,以确定用户登录过程以生成JWT令牌 (其中包含已登录的用户),它将不是检索用户信息的正确位置。 JWT令牌本身可以用于此目的。 您可能会想到使用Spring的JwtHelper类,该类包含一个encode()方法来读取其内容并将其提供给html5应用程序。

但是,如果您使用的是Spring Boot。 SAP在以下库中已经具有用于该目的的Java API:

 
  com.sap.cloud.security.xsuaa 
  xsuaa-spring-boot-starter 
  2.0.0 
  

您可以像这样使用它:

字符串用户= SpringSecurityContext.getToken()。getEmail(); 

另一种检索方法 此类信息是通过调用安全性上下文并将其转换为令牌格式,如下所示:

身份验证令牌= SecurityContextHolder.getContext()。getAuthentication();
 XsuaaToken jwt =(XsuaaToken)token.getPrincipal();
 jwt.getLogonName()

如果您使用的是能够在CF或Neo上运行的SAP Cloud Platform SDK原型,它甚至可以更好地解释它,甚至更好:

 ScpCfUser user =(  ScpCfUser)UserAccessor.getCurrentUser(); 

如果您想解码JWT,请检查com.sap.cloud.sdk.cloudplatform.security包中的AuthTokenAccessor类(仅适用于Cloud SDK项目):< /p>

AuthTokenAccessor.getCurrentToken()。get()。getJwt(); 

可以找到显示如何解码JWT令牌和使用UserAccessor类的示例。此处

 NOTE_01:ScpCfUser,UserAssessor和AuthTokenAccessor都是Cloud SDK的一部分。 因此,您必须使用Cloud SDK原型才能使其正常工作。
 NOTE_02:SpringSecurityContext是XSUAA Spring集成库的一部分。
 NOTE_03:请确保使用SAP的AppRouter并通过xs-app.json中配置的路由以及manifest.yml文件中指向您Java后端服务的目标来调用服务。 您的Java后端服务还需要接受JWT,并且AppRouter必须转发它(配置文件中的所有标准内容)。
 NOTE_04:一旦有了所需的数据即可恢复服务,只需从html5模块中调用它即可。

最诚挚的问候,

Ivan

一周热门 更多>