使用tincan LRS / LMS启动和OAuth的最佳实践

时间:2014-06-13 00:26:23

标签: oauth oauth-2.0 tin-can-api

我正致力于建造一个基于锡罐的LMS。我们根据本指南从LMS启动活动,并使用适当的查询参数将活动传回LRS xapi端点。

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

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

据我所知,锡罐为此目的更喜欢OAuth 2.0,但我不确定最佳令牌交换流应该是什么。我最好的猜测是

  1. 用户点击了lms
  2. 中的活动链接
  3. 活动网址以锡罐参数(演员,终点等)打开
  4. 活动将用户重定向回lrs以获取身份验证令牌
  5. lrs使用身份验证令牌和原始锡罐参数重定向回活动
  6. 活动交换访问令牌的身份验证令牌
  7. lrs将访问令牌返回给活动
  8. activity使用访问令牌授权的锡罐声明调用
  9. 然而,考虑到我们来自LMS / LRS,前几步似乎是多余的。是否可能/建议:

    • 使用已存在的身份验证令牌启动活动 该网址跳至第5步
    • 使用已存在的访问令牌启动活动 该网址直接跳至第7步

    其中任何一项都会减少所需的步骤,但可能会带来安全风险。

    思想?

1 个答案:

答案 0 :(得分: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在启动链接上传递给你的基本身份验证令牌?