2

我创建了一个测试 LTI 工具提供程序,并在http://www.imsglobal.org/developers/LTI/test/v1p1/lms.php上针对 IMSGlobal 测试使用者成功地对其进行了测试。

但是,当我在客户端的 D2L 测试实例中使用我的端点时,oAuth 签名不匹配。我怀疑 D2L 生成的签名基本字符串与我的有所不同。有没有办法获取 D2L 工具消费者的基本字符串进行比较?

4

2 回答 2

3

D2L Tool Consumer 实现也已针对 IMS 参考实现成功地进行了测试。但是,在学习环境中注册和配置外部学习工具有点棘手。

在外部学习工具管理工具中,您可以管理特定的列表链接(嵌入时,在 LMS 中创建 LTI 启动点)以及工具提供者配置列表(例如,如果您有一个工具提供者,但希望为同一工具提供者嵌入多个 LTI 启动链接)。学习环境中用于管理这两个项目列表的确切 UX 取决于您的 LE 的版本......在早期支持 LTI 的 LE 中,工具提供者列表隐藏在外部学习工具上的设置齿轮后面我认为管理页面;在后来的 LE 中,链接列表和工具提供者列表在管理页面中更加平等地可见。

工具提供者列表允许您为工具提供者提供密钥和秘密,并使用它来签署 LTI 启动,而不是为工具消费者本身配置的默认密钥/秘密(“使用自定义工具消费者信息而不是默认值”) .

链接列表允许您 (a) 选择从链接签署 LTI 启动,以及 (b) 使用工具使用者密钥/秘密或特定于 LTI 链接本身的密钥签署启动。请注意,如果您为外部学习工具链接条目使用匹配的工具提供者条目,并且如果该工具提供者条目具有设置为覆盖默认工具使用者信息的密钥/秘密,那么正是此工具提供者覆盖密钥/秘密如果在上面的 (b) 中选择使用工具使用者密钥/秘密对启动进行签名,请习惯于对启动进行签名。

是的,这很令人困惑。

所以 - 启动是否已签名,取决于链接的“编辑链接”页面中的设置。如果启动已签名,则可以使用“编辑链接”页面上提供的“链接密钥/密钥”对其进行签名,可以使用“工具使用者密钥/密钥”对其进行签名。如果是最后一个,那么它将首先检查匹配的工具提供者条目覆盖以提供密钥/秘密,如果找不到,它将使用为整个 LE 设置的密钥/秘密。

完成所有设置后,从“编辑链接”页面的链接中,您可以“预览请求”以进行测试启动。您还可以“预览请求详细信息”,这会将您带到一个页面,该页面向您显示 LTI POST 正文表单的外观——从那里您可以验证 oauth 属性是否会显示在启动表单中——如果它们'不在那个预览表格中,那么你的发布没有得到签名。如果 oauth 属性在表单中,那么您可以看到将发送的内容,您可以使用这些值进行调试/测试。

于 2013-09-13T13:23:51.523 回答
0

部分感谢 Viktor 建议预览请求,我能够调试它。

在我的工具提供程序中,我正在检查某些非必需的 LTI 参数。当消费者的请求中不存在这样的参数时,我将其设置为空字符串,而不是抛出异常。

使用 IMS 测试使用者,我发现当我将请求参数设置为空字符串时,而工具使用者完全省略了该字段,即使两个 base_strings 匹配,我们的签名也会有所不同。我仍然不完全理解这一点;我对 oAuth 的理解是,使用相同密钥和秘密签名的两个相同字符串将产生相同的签名。无论如何,现在更好地验证请求参数可以确保我们的字符串——和签名——匹配。

于 2013-09-13T16:42:18.787 回答