我已经使用express.js框架创建了一个简单的“hello-world”网络应用程序。

我希望该应用程序兼容IMS-LTI,以便使moodle和其他学习管理系统可以将其作为外部工具启动。

但是,我不了解如何在我的应用程序(它使用oauth)中对LTI启动进行身份验证,并且我也找不到任何有关如何完成此操作的express.js/node.js示例。我看到存在一个password-lti Node 模块(https://www.npmjs.org/package/passport-lti),但是作为一个带有 Node 的菜鸟,我只是不了解稀疏的文档。

我曾使用passport.js创建本地身份验证-使用此视频(https://www.youtube.com/watch?v=twav6O53zIQ),我希望为LTI启动身份验证提供类似的帮助...

任何帮助表示赞赏。

干杯,
奥利

最佳答案

当LTI工具使用者(即LMS)启动LTI应用程序(工具提供者)时,会向LTI工具发送HTTP帖子。

为了验证帖子是否合法,您需要使用配置LTI工具时与工具使用者交换的共享 key 在本地重新计算签名,以验证帖子变量'oauth_signature'是否有效。

验证OAuth签名的 Action 很可能是由OAuth库处理的。nodejs已经拥有了这些,因此请不要重新实现。

您可以在IMS Global documentation中阅读验证启动请求的完整过程

09-18 11:00