4

我正在开发一个基于锡罐的 LMS。我们根据本指南从 LMS 启动活动,并使用适当的查询参数让活动与 LRS xapi 端点进行通信。

https://github.com/RusticiSoftware/launch/blob/master/lms_lrs.md

我们正在努力解决的问题是对传入语句的身份验证。现在我们在作弊,只使用会话 cookie,因为活动与 LMS 位于同一域中,但是我们想转移到外部活动。

我知道 tin-can 为此更喜欢 OAuth 2.0,但是我不确定最好的令牌交换流程应该是什么。我最好的猜测是

  1. 用户单击 lms 中的活动链接
  2. 活动网址以锡罐参数(演员、端点等)打开
  3. 活动将用户重定向回 l​​rs 以获取身份验证令牌
  4. lrs 使用身份验证令牌和原始锡罐参数重定向回活动
  5. 活动将身份验证令牌交换为访问令牌
  6. lrs 将访问令牌返回给活动
  7. 活动使 tin can 语句调用使用访问令牌授权

然而,鉴于我们来自 LMS/LRS,前几个步骤似乎是多余的。是否有可能/建议:

  • 使用 url 中已经存在的身份验证令牌启动活动,跳到第 5 步
  • 使用 url 中已经存在的访问令牌启动活动,直接跳到第 7 步

这些中的任何一个都会减少所需的步骤数量,但可能会带来安全风险。

想法?

4

1 回答 1

4

启动文档没有指定使用 OAuth 时要传递的任何身份验证参数,并且仅在正在启动的活动提供者向 LMS 注册的情况下讨论 OAuth(此时 LMS 将假定活动将通过 OAuth 进行身份验证并且不发送基本的身份验证信息)。

https://github.com/RusticiSoftware/launch/blob/master/lms_lrs.md#oauth

因此,可以将 OAuth 与启动一起使用,但启动不提供任何帮助。它只是为您提供要使用的端点,然后您必须查看 XAPI 规范本身以查看 OAUth 端点相对于主 LRS 端点的位置。

https://github.com/adlnet/xAPI-Spec/blob/1.0.1/xAPI.md#oauth-endpoints

您还需要选择并遵循工作流程:

https://github.com/adlnet/xAPI-Spec/blob/1.0.1/xAPI.md#64-security

最后,如果从安全角度来看跳到第 7 步对您来说是可以接受的,为什么不直接使用 LMS 在启动链接上传递给您的基本身份验证令牌呢?

于 2014-06-13T19:25:33.957 回答