SAP Cloud SDK for JavaScript:将XSSEC与NestJS集成时出错

2020-08-21 08:38发布

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

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


大家好,
遵循 Tobias Trapp 丹尼斯·亨普芬正在讨论这里我进行了一些研究,研究如何(在我的最大努力和技能范围内)将xssec库中JWTStrategy的用法集成到NestJS的Passport实现中,这是在使用Sap初始化新项目时得到的 Cloud SDK CLI。

我"差不多"到了那里,但现在我陷入了一个我无法解决的问题。

我创建了一个简单的存储库 sapcloudsdk-nestjs-xsuaa 以复制问题,但是 这是我的简要介绍:

  1. 在CF上准备XSUAA实例和Destination实例
  2. 将approuter添加到项目中(使用CLI的add approuter命令)
  3. 在approuter文件夹和根文件夹中正确配置default-env.json文件以进行本地测试
  4. 安装必要的依赖项:@ nestjs/passport护照password-jwt @ sap/xssec @ sap/xsenv

生成一个新的" auth"模块,自定义策略类和一个自定义防护以保护端点:

  1. 嵌套生成模块auth/auth

  2. 嵌套生成类auth/xsuaa.strategy
  3. 嵌套生成防护auth/xsuaa.guard

编译安装程序,然后启动应用程序。 假设您使用的是默认端口,则调用http://localhost:5000/yourendpoint将进入XSUAA登录页面。

进行登录并:

 [嵌套] 17174-2020-03-15 21:48:43 [ExceptionsHandler] this._secretOrKeyProvider不是函数+ 15597ms
 TypeError:this._secretOrKeyProvider不是函数
     在XsuaaStrategy.JwtStrategy.authenticate(/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/passport-jwt/lib/strategy.js:99:10)
     尝试中(/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/passport/lib/middleware/authenticate.js:366:16)
     在身份验证时(/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/passport/lib/middleware/authenticate.js:367:7)
     在Promise(/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/@nestjs/passport/dist/auth.guard.js:84:3)
     在新的Promise中()
     在/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/@nestjs/passport/dist/auth.guard.js:76:83
     在XsuaaGuard。<匿名>(/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/@nestjs/passport/dist/auth.guard.js:48:36)
     在Generator.next()
     在/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/@nestjs/passport/dist/auth.guard.js:20:71
     在新的Promise(

我认为这与策略的配置方式有关:" secretOrKeyProvider"参数需要一个回调函数(而不是新的JWTStrategy实例)

如果有人有想法,我将很乐意为您贡献-并且学习:)

非常感谢

罗伯托。

(254.0 kB)

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

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


大家好,
遵循 Tobias Trapp 丹尼斯·亨普芬正在讨论这里我进行了一些研究,研究如何(在我的最大努力和技能范围内)将xssec库中JWTStrategy的用法集成到NestJS的Passport实现中,这是在使用Sap初始化新项目时得到的 Cloud SDK CLI。

我"差不多"到了那里,但现在我陷入了一个我无法解决的问题。

我创建了一个简单的存储库 sapcloudsdk-nestjs-xsuaa 以复制问题,但是 这是我的简要介绍:

  1. 在CF上准备XSUAA实例和Destination实例
  2. 将approuter添加到项目中(使用CLI的add approuter命令)
  3. 在approuter文件夹和根文件夹中正确配置default-env.json文件以进行本地测试
  4. 安装必要的依赖项:@ nestjs/passport护照password-jwt @ sap/xssec @ sap/xsenv

生成一个新的" auth"模块,自定义策略类和一个自定义防护以保护端点:

  1. 嵌套生成模块auth/auth

  2. 嵌套生成类auth/xsuaa.strategy
  3. 嵌套生成防护auth/xsuaa.guard

编译安装程序,然后启动应用程序。 假设您使用的是默认端口,则调用http://localhost:5000/yourendpoint将进入XSUAA登录页面。

进行登录并:

 [嵌套] 17174-2020-03-15 21:48:43 [ExceptionsHandler] this._secretOrKeyProvider不是函数+ 15597ms
 TypeError:this._secretOrKeyProvider不是函数
     在XsuaaStrategy.JwtStrategy.authenticate(/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/passport-jwt/lib/strategy.js:99:10)
     尝试中(/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/passport/lib/middleware/authenticate.js:366:16)
     在身份验证时(/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/passport/lib/middleware/authenticate.js:367:7)
     在Promise(/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/@nestjs/passport/dist/auth.guard.js:84:3)
     在新的Promise中()
     在/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/@nestjs/passport/dist/auth.guard.js:76:83
     在XsuaaGuard。<匿名>(/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/@nestjs/passport/dist/auth.guard.js:48:36)
     在Generator.next()
     在/Users/stevebob/Desktop/SAP/CLOUD SDK/xsuua-test/node_modules/@nestjs/passport/dist/auth.guard.js:20:71
     在新的Promise(

我认为这与策略的配置方式有关:" secretOrKeyProvider"参数需要一个回调函数(而不是新的JWTStrategy实例)

如果有人有想法,我将很乐意为您贡献-并且学习:)

非常感谢

罗伯托。

(254.0 kB)
付费偷看设置
发送
3条回答
哎,真难
1楼-- · 2020-08-21 08:56

嗨,丹尼斯,
最后,安全性概念非常简单。
理想情况下,应用程序托管在一个子帐户中,IdP本身就是SuccessFactors本身,因此登录后基于角色 动态授权检查将直接在平台中执行。

从扩展的角度来看,我只需要针对3个可能的值(即HCM应用程序的常规ESS/MSS/XSS)检查用户范围。

根据用户范围或它们的组合,应用程序将做出相应的反应(禁用更新等。)

干杯,
R。

PS:我进一步研究了xssec和NestJS护照策略方法之间的交互作用,如果您认为它们有用,我将非常乐意分享我的发现。

吹牛啤
2楼-- · 2020-08-21 09:00
# p #

Roberto,您好,我很乐意看一下您的发现(我也可以想象其他用户也会如此)!

灬番茄
3楼-- · 2020-08-21 09:08

您好,Dennis,我 我会在博客中写下一些东西,我想在此分享我对使用SDK的丰富经验的感想:)

我暂时关闭此线程。

一周热门 更多>