XSA Fiori启动板不显示应用程序磁贴-xsuaa问题

2020-08-18 15:30发布

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

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


专家们,

我无法将应用程序磁贴公开给XSA中的XSA Fiori启动板。 fiori启动板和应用程序都是单独的应用程序MTA。

该应用程序已经配置了site-content.json,因此Fiori可以以图块格式显示该应用程序。 当应用程序中提供的角色是"每个人"时,所有这些都有效。 但是,当更改为特定角色时,磁贴会丢失,并且我怀疑其角色访问权限没有从用户访问权限正确传递给应用程序。 我尝试了各种尝试和错误方法生成和重新部署,但仍然遇到问题。

希望任何人都可以提供帮助。 以下是详细信息,可以提供更多信息。

系统:前提SP04上的HANA XSA

1。 以下是模板中使用的xs-security.json

 {
 " xsappname":" dcmhub_td1",
 "范围":[{
 " name":" $ XSAPPNAME.Display",
 " description":"显示"
 },{
 " name":" $ XSAPPNAME.Create",
 " description":"创建"
 },{
 " name":" $ XSAPPNAME.Edit",
 " description":"编辑"
 },{
 " name":" $ XSAPPNAME.Delete",
 " description":"删除"
 },{
 " name":" $ XSAPPNAME.DataGenerator",
 " description":"数据生成器"
 },{
 " name":" xs_authorization.read",
 " description":"从UAA读取授权信息"
 },{
 " name":" xs_authorization.write",
 " description":"将授权信息写入UAA"
 },{
 " name":" $ XSAPPNAME.ODATASERVICEUSER",
 " description":"输入"
 },{
 " name":" $ XSAPPNAME.ODATASERVICEADMIN",
 " description":"输入"
 }],
 "角色模板":[{
 " name":" DecHubViewer",
 " description":"查看停用中心数据",
 "范围参考":[
 " $ XSAPPNAME.Display",
 " $ XSAPPNAME.Create",
 " $ XSAPPNAME.Edit",
 " $ XSAPPNAME.Delete",
 " $ XSAPPNAME.DataGenerator",
 " xs_authorization.read",
 " xs_authorization.write",
 " $ XSAPPNAME.ODATASERVICEUSER",
 " $ XSAPPNAME.ODATASERVICEADMIN"]
 }]
 } 

2。以下是site-content.json。 我提出了两个重要的变化点。 角色和授权范围。

"角色":{
 " DecHubViewer":{
 " _version":" 1.0",
 "标识":{
 " id":" DecHubViewer",
 " namespace":"",
 " entityType":"角色"
 },
 "有效载荷":{
 "目录":[],
 "组":[{
 " id":" tool_GroupId"
 }]
 }
 }
 ........

 },
 " sap.platform.runtime":{
 " componentProperties":{
 " url":"/",
 " oAuthScopes":[" $ XSAPPNAME.Display"]
 }
 }
 }
 

3。 xs-app.json。 我也尝试在该路由上添加和删除授权范围。

 {
 " welcomeFile":" index.html",
 " authenticationMethod":"路由",
 "路线":[{
 " source":"(。*)(。xsjs)",
 " destination":" xsjs_api",
 " csrfProtection":否,
 " authenticationType":" xsuaa"


 },{
 " source":"(。*)(。xsodata)",
 " destination":" xsjs_api",
 " authenticationType":" xsuaa"
 },{
 " source":" ^/(。*)$",
 " localDir":"资源/工具"


 }]
 }
 

4.

mtayaml.txt -附件为mta.yaml

5。 以下是添加到清单的授权范围。

},
   " sap.platform.cf":{
       " uri":"/资源/工具",
       " oAuthScopes":[" $ XSAPPNAME.Display"]
 }
 }
 

6。 以上都是在应用程序上完成的。 我已经多次部署了各种更改。 手动创建uaa服务会导致部署失败。 我删除了uaa实例并重新部署,它通常是成功的。

7。 部署后,将分配角色,以下是角色设置。 角色集合已经具有从模板创建的相关角色。

(19.7 kB)

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

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


专家们,

我无法将应用程序磁贴公开给XSA中的XSA Fiori启动板。 fiori启动板和应用程序都是单独的应用程序MTA。

该应用程序已经配置了site-content.json,因此Fiori可以以图块格式显示该应用程序。 当应用程序中提供的角色是"每个人"时,所有这些都有效。 但是,当更改为特定角色时,磁贴会丢失,并且我怀疑其角色访问权限没有从用户访问权限正确传递给应用程序。 我尝试了各种尝试和错误方法生成和重新部署,但仍然遇到问题。

希望任何人都可以提供帮助。 以下是详细信息,可以提供更多信息。

系统:前提SP04上的HANA XSA

1。 以下是模板中使用的xs-security.json

 {
 " xsappname":" dcmhub_td1",
 "范围":[{
 " name":" $ XSAPPNAME.Display",
 " description":"显示"
 },{
 " name":" $ XSAPPNAME.Create",
 " description":"创建"
 },{
 " name":" $ XSAPPNAME.Edit",
 " description":"编辑"
 },{
 " name":" $ XSAPPNAME.Delete",
 " description":"删除"
 },{
 " name":" $ XSAPPNAME.DataGenerator",
 " description":"数据生成器"
 },{
 " name":" xs_authorization.read",
 " description":"从UAA读取授权信息"
 },{
 " name":" xs_authorization.write",
 " description":"将授权信息写入UAA"
 },{
 " name":" $ XSAPPNAME.ODATASERVICEUSER",
 " description":"输入"
 },{
 " name":" $ XSAPPNAME.ODATASERVICEADMIN",
 " description":"输入"
 }],
 "角色模板":[{
 " name":" DecHubViewer",
 " description":"查看停用中心数据",
 "范围参考":[
 " $ XSAPPNAME.Display",
 " $ XSAPPNAME.Create",
 " $ XSAPPNAME.Edit",
 " $ XSAPPNAME.Delete",
 " $ XSAPPNAME.DataGenerator",
 " xs_authorization.read",
 " xs_authorization.write",
 " $ XSAPPNAME.ODATASERVICEUSER",
 " $ XSAPPNAME.ODATASERVICEADMIN"]
 }]
 } 

2。以下是site-content.json。 我提出了两个重要的变化点。 角色和授权范围。

"角色":{
 " DecHubViewer":{
 " _version":" 1.0",
 "标识":{
 " id":" DecHubViewer",
 " namespace":"",
 " entityType":"角色"
 },
 "有效载荷":{
 "目录":[],
 "组":[{
 " id":" tool_GroupId"
 }]
 }
 }
 ........

 },
 " sap.platform.runtime":{
 " componentProperties":{
 " url":"/",
 " oAuthScopes":[" $ XSAPPNAME.Display"]
 }
 }
 }
 

3。 xs-app.json。 我也尝试在该路由上添加和删除授权范围。

 {
 " welcomeFile":" index.html",
 " authenticationMethod":"路由",
 "路线":[{
 " source":"(。*)(。xsjs)",
 " destination":" xsjs_api",
 " csrfProtection":否,
 " authenticationType":" xsuaa"


 },{
 " source":"(。*)(。xsodata)",
 " destination":" xsjs_api",
 " authenticationType":" xsuaa"
 },{
 " source":" ^/(。*)$",
 " localDir":"资源/工具"


 }]
 }
 

4.

mtayaml.txt -附件为mta.yaml

5。 以下是添加到清单的授权范围。

},
   " sap.platform.cf":{
       " uri":"/资源/工具",
       " oAuthScopes":[" $ XSAPPNAME.Display"]
 }
 }
 

6。 以上都是在应用程序上完成的。 我已经多次部署了各种更改。 手动创建uaa服务会导致部署失败。 我删除了uaa实例并重新部署,它通常是成功的。

7。 部署后,将分配角色,以下是角色设置。 角色集合已经具有从模板创建的相关角色。

(19.7 kB)
付费偷看设置
发送
2条回答
Climb_Ma
1楼 · 2020-08-18 16:25.采纳回答

嗨阿南德,

我相信您的问题出在site-content.json和manifest.json文件中。 通过提供的代码,您已将范围放置在sap.platform.runtime对象中。 这需要放置在类似于manifest.json的 sap.platform.cf 对象中。

在您的site-content.json中尝试一下:

" sap.platform.cf":{
       " oAuthScopes":[" $ XSAPPNAME.Display"]
 },
 " sap.platform.runtime":{
 " componentProperties":{
 " url":"/"
 }
 }
 

在manifest.json中尝试一下:

" sap.platform.cf":{
       " oAuthScopes":[" $ XSAPPNAME.Display"]
 },
 " sap.platform.runtime":{
 " componentProperties":{
 " url":"/资源/工具"
 }
 }
 

要清楚,我在两个站点中都有 sap.platform.cf 部分 -content.json和manifest.json文件。 oAuthScopes不属于sap.platform.runtime,URL不属于 sap.platform.cf

指向不完整官方文档的链接:

https://help.sap.com/查看器/4505d0bdaf4948449b7f7379d24d0f0d/2.0.04/zh-CN/a36a58c53b664215ba63dc599a2ae38d.html

此外,我在启动板xs-security.json中设置了外部作用域引用。 在这一点上,我不确定是否需要让磁贴正常工作,但是由于其他原因,我需要它,因此它存在于我的工作副本中,值得一提。

这可以通过将以下内容添加到根节点来完成:

"外部范围引用":[" $ ACCEPT_GRANTED_SCOPES"],
 " authorities":[" $ ACCEPT_GRANTED_AUTHORITIES"],
 

然后我在应用程序范围xs-security.json中引用了启动板

 {
 " name":" $ XSAPPNAME.Display",
 " description":"显示",
 " granted-apps":["" launchpad_xsappname"," launchpad_xsappname!i2"],
 "授予应用授权":[" launchpad_xsappname"," launchpad_xsappname!i2"],
 }
 

" launchpad_xsappname"是启动板xs-security.json中定义的xsappname

以下是此设置的一些支持文档。 它提供了一些指导和补充阅读,但仍然很平均:

https://help.sap.com/viewer/ 65de2977205c403bbc107264b8eccf4b/Cloud/zh-CN/517895a9612241259d6941dbf9ad81cb.html

还要注意,链接中的$ XSAPPNAME(application,business-partner)函数在XSA上不起作用。

还要确保在更改角色集合内容时注销并重新登录启动板。

我希望这对您有帮助

布拉德。

me_for_i
2楼-- · 2020-08-18 16:18

嗨布拉德利,

感谢您的指导和解释。 你真厉害 我已经在您的帮助下解决了fiori启动板的问题。 一周多前,我向SAP提出了相同的问题,但他们仍然没有回复我。 该解决方案现在可以按预期工作,并且我可以通过角色管理控制磁贴显示。 从我的发现中得到一些确认。

跨MTA解决方案需要外部作用域引用。 我尝试了一下,但没有成功。 根据我的有限理解,启动板具有其自己的UAA实例,并在我们登录时生成安全令牌,而应用程序图块具有其他UAA实例。 外部作用域授予将使fiori launchpad uaa可以访问它试图显示和启动的应用程序的相同作用域。

再次感谢您。

Anand

一周热门 更多>