如何在CloudFoundry中配置userapi服务

2020-08-22 01:23发布

         点击此处--->   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

         点击此处--->   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
1楼-- · 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

大简至美
2楼-- · 2020-08-22 01:52

嗨,Rob

HTML存储库与您的问题无关。 AppRouter是一个NodeJS应用程序,可实现安全功能并与分配的XSUAA服务实例集成。 它充当您的前端应用程序及其所有基础微服务的入口。

要将AppRouter添加到现有MTA,您需要做的就是向其中添加html5模块。

请注意,MTA内的html5模块实际上是一个 节点应用程序,它包含到webapp文件夹的默认路由-因此您可以加载构成html5应用程序的html,js和其他html5文件。

看看位于以下位置的package.json文件 模块的根目录,您将看到它包含对AppRouter的依赖关系,并通过向其发出节点启动命令来启动AppRouter应用程序:

 {
   " name":" app",
   " version":" 0.0.1",
   " description":"",
   " devDependencies":{
     " @ sap/grunt-sapui5module-bestpractice-build":" ^ 0.0.14"
   },
   "依赖关系":{
     " @ sap/approuter":" 5.4.1"
   },
   "脚本":{
     " start":"节点node_modules/@sap/approuter/approuter.js"
   }
 } 

您还可以通过添加NodeJS模块来实现相同目的。 但这会要求您手动添加依赖项并通过更改package.js文件来启动approuter程序。

最好的问候,
Ivan

d56caomao
3楼-- · 2020-08-22 01:47

一周热门 更多>