点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我在Cloud Foundry上创建了一个HTML.5应用程序,该应用程序存储在HTML5 Apps Repo中,并且可以通过启动板模块进行访问。
从启动板中的HTML5应用程序调用后端(Node.js应用程序)时,后端返回未经授权的401。
当直接通过App Router访问后端(Node.js应用程序)时,用户 首先重定向到登录屏幕,成功登录后即可访问后端。
我是否需要进行其他任何配置才能从启动板应用程序通过应用程序路由器访问后端。
应用路由器xs-app.json
{ " authenticationMethod":"路由", " welcomeFile":"/cp.portal", "路线":[ { " source":" ^/api/v4/(.*)$", " target":" $ 1", "目的地":" api-service", " authenticationType":" xsuaa", " csrfProtection":false }, { " source":" ^(/.*)", " target":" $ 1", " service":" html5-apps-repo-rt", " authenticationType":" xsuaa" } ] }
HTML5模块xs-app.json
{ " welcomeFile":"/index.html", " authenticationMethod":"路由", "登出": { " logoutEndpoint":"/img/do/logout" }, "路线":[ { " source":" ^/api/(.*)$", " target":"/img/api/$ 1", "目标":" DevAppRouter", " authenticationType":" xsuaa", " csrfProtection":false }, { " source":" ^(。*)$", " target":" $ 1", " service":" html5-apps-repo-rt", " authenticationType":" xsuaa" } ] }
Dest Destination DevAppRouter破坏了Service实例zum Destination Service ertell中的开发空间。
后端的server.js
... var护照= require('passport'); var xsenv = require('@ sap/xsenv'); var JWTStrategy = require('@ sap/xssec')。JWTStrategy; ... var app = express(); var services = xsenv.getServices({uaa:{标签:" xsuaa"}}); 护照。使用(新的JWTStrategy(services.uaa)); app.use(passport.initialize()); app.use(passport.authenticate('JWT',{session:false})));
配置mta.yaml
-名称:api-service 类型:nodejs 路径:modules/api-service/srv 参数: 磁盘配额:512M 记忆体:256M 提供: -名称:api-service 特性: 网址:$ {default-url} 要求: -名称:应用程序日志 -名称:hdi-container -名称:uaa -名称:Connectivity-tunnel -名称:目的地 -名称:app-router 类型:approuter.nodejs 路径:scp/app-router 参数: 磁盘配额:256M 记忆体:128M SAP_JWT_TRUST_ACL:[{" clientId":" *"," identityzone":" *"}] 要求: -名称:api-service 组:目的地 特性: forwardAuthToken:true strictSSL:假 名称:api-service 网址:〜{url} -名称:frontend-portal-resources -名称:frontend-html5-repo-runtime 特性: forwardAuthToken:true -名称:应用程序日志 -名称:uaa -名称:Connectivity-tunnel -名称:目的地 特性: SEND_XFRAMEOPTIONS:否
xs-security.json
{ " xsappname":" DemoApp", "租户模式":"专用", " description":"被调用应用程序的安全配置文件", "范围":[ { " name":" uaa.user", "描述":" UAA" } ], "角色模板":[ { " name":" Token_Exchange", " description":" UAA", " scope-references":[" uaa.user"] } ] }
(19.0 kB)
嗨,
我认为这与您使用第一个应用程序路由器中的" api-service"目标和HTML5应用程序路由器中的" DevApprouter"有关。
DevApprouter目标具有NoAuthentication。 如果要将SSO设置为此目的地,请将身份验证类型设置为OAuth2UserTokenExchange。
您可以从以下命令获取客户端ID和客户端密码:
在xsuaa服务的凭据对象中。
令牌服务网址:https:// 。 authentication.eu10。 hana.ondemand.com/oauth/token/alias/ .aws-live-eu10
kr,
Joachim
嗨,西蒙·珀斯托弗,
您能告诉我您的HTML5应用程序的mta.yaml吗?
谢谢。
Tri
您好 Tri Le
以下 是mta.yaml
注意事项
Simon
您好西蒙·珀斯托弗(Simon Perstorfer),
感谢您的代码。
我已经尝试过,用指向服务api的OAuth2UserTokenExchange设置目标。
但是我收到错误代码:500 Internal Server Error。 不知道以前是否遇到错误。
谢谢。
Tri
UPDATE:
将目标的身份验证设置为" NoAuthentication",并将目标的属性forwardAuthToken设置为true也可以完成此工作。
如果目标B指向应用路由器,那么该方法也适用,因此应用路由器是单个入口点。
链接:(我设置了属性forwardAuthToken,而不是HTML5 .ForwardAuthToken)
https://help.sap.com/查看器/65de2977205c403bbc107264b8eccf4b/Cloud/zh-CN/3cc788ebc00e40a091505c6b3fa485e7.html
一周热门 更多>