Approuter之间的链接-mta.yaml-xs-security.json

2020-08-16 12:14发布

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

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

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


大家好,

在我的应用程序中,我正在使用多个服务,一个approuter以及xsuaa身份验证方法(SAP ID身份验证服务)。 这些服务受到限制,一个需要开发人员角色,另一个需要经过身份验证的用户。
如果我在本地启动approuter并在私有窗口中启动该应用程序,那么我将转到SAP ID登录页面。 与我的用户登录后,我便可以使用该应用程序(因为我将开发者角色应用于我的用户,并且成功登录后,我也是经过身份验证的用户)。
但是,如果我将应用程序部署到SCP并启动approuter,我仍将转到SAP ID登录页面。 成功登录后,我将转到我的应用开始页面。 奇怪的是,我无法使用该应用程序。 当我检查检查器时,我发现尝试访问服务时收到403-禁止错误。

我的假设是mta.yaml,xs-security.json和approuter之间的某些链接出错。 由于我可以登录,但似乎无法识别开发人员角色。

感谢任何提示! 此外,在xs-security.json(在开头)和mta.yaml文件(在结尾)中,我写了一些问题(标有"-")。

干杯,
索尔斯滕

approuter:

 {
     " welcomeFile":"/img/app/",
     " authenticationMethod":"路由",
     "路线":[
       {
         " source":" ^/app/(.*)$",
         " target":" $ 1",
         " localDir":" ./"
       },
       {
         " source":" ^/getPerson/(.*)$",
         " target":" $ 1",
         " destination":" srv-binding"
       },
       {
         " source":" ^(。*)$",
         " target":" $ 1",
         " destination":" srv-binding",
         "范围": [
           " $ XSAPPNAME.developer"
         ]
       }
     ]
 }
 
approuters的package.json
 {
   " name":" plt-app-approuter",
   "依赖关系":{
     " @ sap/approuter":" ^ 7.1.2",
     " @ sap/xsenv":" ^ 2.2.0",
     " @ sap/xssec":" ^ 2.2.5"
   },
   "脚本":{
     " start":"节点-检查node_modules/@sap/approuter/approuter.js"
   }

 

xs-security.json

 {
   " xsappname":" plt-app",-应该指向approuter名称'plt-app-approuter'吗?
   " tenant-mode":"专用",-它描述JWT令牌如何转发吗?
   "范围":[
     {
       " name":" $ XSAPPNAME.developer",
       " description":"开发人员"
     }
   ],
   "属性":[],
   "角色模板":[
     {
       " name":" plt_app_dev",
       " description":"生成",
       "范围参考":[
         " $ XSAPPNAME.developer"
       ],
       "属性引用":[]
     }
   ],
   "角色集合":
   [
     {
       " name":" plt_app",
       "角色模板参考":[
         " $ XSAPPNAME.plt_app_dev"
       ]
     }
   ]
 }
 

mta.yaml

 ##基于模板版本0.2.0生成的mta.yaml
 ## appName = plt-app
 ## language = nodejs;  multiTenant = false
 ## approuter =
 _schema-version:'3.1'
 ID:plt-app
 版本:1.0.5
 描述:"一个简单的CAP项目。"
 参数:
   启用并行部署:true
  
  
 构建参数:
   之前:
    -建设者:自定义
      命令:
       -npm安装
       -npx cds构建

 模块:
  #---------------------服务器模块------------------------
  -名称:plt-app-srv
  #-------------------------------------------------  -----------
    类型:nodejs
    路径:srv
    特性:
      退出:1#由deploy.js任务终止
    要求:
     #从CAP配置中提取的资源
     -名称:plt-hdi-container
     -名称:plt-app-uaa
    提供:
     -名称:CAP服务使用者(例如approuter)所需的srv-binding#
       特性:
         srv-url:$ {default-url}

  #-------------------- SIDECAR模块------------------------
  -名称:plt-app-db
  #-------------------------------------------------  -----------
    类型:hdb
    路径:db
    参数:
      应用名称:plt-app-db
    要求:
     #从CAP配置中提取的'hana'和'xsuaa'资源
     -名称:plt-hdi-container
     -名称:plt-app-uaa
  ################################################  ##########

   ############## APP ########################
  -名称:plt-app-approuter
    类型:approuter.nodejs
    路径:应用
    参数:
       记忆体:256M
    构建参数:
      要求:
        -名称:plt-app-srv
    要求:
     -名称:plt-app-uaa
     -名称:srv-binding
       组:目的地
       特性:
          forwardAuthToken:true
          名称:srv-binding
          网址:〜{srv-url}

 资源:
  #从CAP配置中提取的服务
  #'service-plan'可以通过'cds.requires。 .vcap.plan'进行配置
 #-------------------------------------------------  -----------
  -名称:plt-hdi-container
 #-------------------------------------------------  -----------
    类型:com.sap.xs.hdi-container #Beschreibt HANA DB
    参数:
      服务:在试用环境中使用" hannatrial"或" hanatrial"
      服务计划:hdi共享
    特性:
      hdi-service-name:$ {service-name}

 #-------------------------------------------------  -----------
  -名称:plt-app-uaa
    类型:org.cloudfoundry.managed-service
    参数:
     ##### xs-security.json的路径以添加角色和作用域####
      路径:./gen/xs-security.json
      服务:xsuaa
      服务计划:应用
      配置:
        xsappname:plt-app-$ {space}-比xs-security.json中的xsappname优先吗?
        租户模式:专用

 
6条回答
绿领巾童鞋
2020-08-16 12:31

我刚刚尝试使用略有不同的mta.yaml进行部署。 更具体地说,我尝试在plt-app-uaa服务上不使用配置进行部署(并且在根目录中使用xs-security.json进行部署)。在部署过程中发生了以下错误消息:

服务操作失败:控制器操作失败:502更新服务" plt-app-uaa"失败:错误的网关:服务代理错误:服务代理xsuaa失败,原因:org.springframework.cloud.service.broker.exception.ServiceBrokerException :更新应用程序plt-app!t47559时出错(无法通过更新更改AppId。)


mta.yaml的更新部分

-名称:plt-app-uaa
    类型:org.cloudfoundry.managed-service
    参数:
     ##### xs-security.json的路径以添加角色和作用域####
      路径:./xs-security.json
      服务:xsuaa
      服务计划:应用程序 

一周热门 更多>