我已经创建了一个测试LTI工具提供程序,并在http://www.imsglobal.org/developers/LTI/test/v1p1/lms.php针对IMSGlobal测试用户成功测试了它。
但是,当我在客户端的D2L测试实例中使用我的端点时,oAuth签名不匹配。我怀疑D2L生成的签名基本字符串与我的不同。有没有办法获取D2L工具消费者的基本字符串进行比较?
答案 0 :(得分:3)
D2L工具消费者实现也已成功针对IMS参考实现进行了测试。但是,在学习环境中注册和配置外部学习工具是一个棘手的过程。
在外部学习工具管理工具中,您可以管理特定列表链接(嵌入时,在LMS中创建LTI启动点)以及工具提供程序配置列表(例如,如果您有一个工具提供者,但希望为同一个工具提供者嵌入一些LTI启动链接)。学习环境中用于管理这两个项目列表的确切用户体验取决于LE的版本......在早期支持LTI的LE中,工具提供者列表隐藏在外部学习工具的设置设备后面管理页面我想;在后来的LE中,链接列表和工具提供者列表在管理页面中更加明显。
工具提供者列表允许您为工具提供者提供密钥和秘密,并且使用它来签署LTI启动而不是为工具使用者自己配置的默认密钥/秘密(“使用自定义工具消费者信息而不是默认“)。
链接列表允许您(a)选择从链接签署LTI,以及(b)使用工具使用者密钥/秘密或LTI链接本身特定的签名启动。 注意如果您使用匹配的工具提供程序条目进行外部学习工具链接条目, if if 该工具提供程序条目具有设置为覆盖默认工具的密钥/机密消费者信息然后如果在上面的(b)中您选择使用工具消费者密钥/秘密签署启动,则此工具提供者覆盖密钥/密钥将用于签署启动。
是的,这令人困惑。
所以 - 启动是签名还是未签名,具体取决于链接的“编辑链接”页面中的设置。 如果启动已签名,则可以使用“编辑链接”页面上提供的“链接密钥/密码”进行签名,或可以使用'工具消费者密钥/秘密'。 如果最后一个,那么它将首先检查匹配的工具提供者条目覆盖以提供密钥/秘密,如果没有找到,它将使用整个LE的密钥/秘密集。 / p>
完成所有设置后,从“编辑链接”页面中获取链接,即可“预览请求”进行测试启动。您还可以 “预览请求详细信息”,它将带您进入一个页面,向您显示LTI POST正文表格的外观 - 从那里您可以验证oauth属性是否会显示在启动表单 - 如果他们不在预览表单中,那么您的启动不会签名。如果oauth属性在表单中,那么您可以看到将要发送的内容,您可以使用这些值进行调试/测试。
答案 1 :(得分:0)
部分由于Viktor建议预览请求,我能够对此进行调试。
在我的工具提供程序中,我正在检查某些非必需的LTI参数。当消费者的请求中不存在这样的参数时,我将其设置为空字符串而不是抛出异常。
使用IMS测试消费者,我发现当我将请求参数设置为空字符串时,工具消费者完全省略了该字段,即使两个base_strings匹配,我们的签名也会不同。我还是不完全明白这一点;我对oAuth的理解是,用相同的密钥和秘密签名的两个相同的字符串将产生相同的签名。无论如何,更好地验证请求参数现在可以确保我们的字符串 - 和签名 - 匹配。