符合LTI的消费者和提供者示例

时间:2017-05-04 06:47:39

标签: javascript node.js authentication typescript lti

我正在寻找任何代码示例,以便在NodeJS中使用LTI将外部工具集成到LMS,但似乎很难找到工作示例。 我已经通过IMS Global提供的样本,但很难理解。任何知道如何使用LTI授权应用程序的人请分享您的代码。

3 个答案:

答案 0 :(得分:1)

Github搜索产生了这些示例节点LTI应用程序 -

schul-cloud/node-lti-provider

whitmer/lti_example

omsmith/ims-lti-example

希望其中一个对你有用。

答案 1 :(得分:1)

我将CoffeeScript中的omsmith代码移植到普通JavaScript并将其放在Packagist上:

https://github.com/tsugiproject/tsugi-node-lti

https://www.npmjs.com/package/tsugi-node-lti

答案 2 :(得分:0)

这有点晚了,但可能会帮助别人。

我已经创建了Lti 1.3优势协议的nodejs实现,这使得设置lti提供程序非常容易。

Ltijs

这是用法的一个简单示例:

const path = require('path')

// Require Provider 
const Lti = require('ltijs').Provider

// Configure provider
const lti = new Lti('EXAMPLEKEY', 
            { url: 'mongodb://localhost/database', 
              connection:{ user:'user',
                          pass: 'pass'} 
            }, 
            { staticPath: path.join(__dirname, '/views/') })


let setup = async () => {
  // Configure main routes
  lti.appUrl('/')
  lti.loginUrl('/login')

  // Deploy and open connection to the database
  await lti.deploy()

  // Register platform
  let plat = await lti.registerPlatform(
    'http://platform/url', 
    'Platform Name', 'ClientIdThePlatformCreatedForYourApp', 
    'http://platform/AuthorizationUrl', 
    'http://platform/AccessTokenUrl', 
    { method: 'JWK_SET', key: 'http://platform/keyset' }
  )

  // Set connection callback
  lti.onConnect((connection, request, response) => {
    // Call redirect function
    lti.redirect(response, '/main')
  })

  // Set route accounting for issuer context
  lti.app.get('/:iss/main', (req, res) => {
    // Id token
    console.log(res.locals.token)
    res.send('It\'s alive!')
  })
}
setup()