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

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. 带有 Tin Can 参数的活动 URL 打开(操作者、终端等)。 3. 活动将用户重定向回 LRS 进行身份验证令牌。 4. LRS 将身份验证令牌和原始的 Tin Can 参数重定向回活动。 5. 活动将身份验证令牌替换为访问令牌。 6. LRS 返回访问令牌给活动。 7. 活动使用访问令牌调用 Tin Can 语句。
然而,前几个步骤似乎是多余的,因为我们已经从 LMS/LRS 来了。是否可以/建议:
- 在 URL 中启动活动时,使用已经存在的身份验证令牌跳过第 5 步。 - 在 URL 中启动活动时,使用已经存在的访问令牌直接跳过第 7 步。
这两种方法都可以减少所需的步骤,但可能会引入安全风险。

你有什么想法?


1
xAPI/TinCan使用OAuth 1.0a:https://github.com/adlnet/xAPI-Spec/issues/447...并添加了2.0的范围属性来定义授权范围:https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md#requirements-22 - tom creighton
1个回答

4
启动文档没有指定在使用OAuth时要传递任何身份验证参数,只谈到了在启动的活动提供程序已在LMS上注册的情况下使用OAuth(此时LMS应假定活动将通过OAuth进行身份验证而不发送基本身份验证信息)。

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

因此,在使用launch时可以使用OAuth,但是launch不提供任何帮助。它只是提供要使用的端点,然后您必须查看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在启动链接中传递给您的基本身份验证令牌呢?

你有关于基本身份验证令牌的任何指针吗?我无法理解它的含义或用途。 - ricick
在这里单独提问:https://dev59.com/XIDba4cB1Zd3GeqPHKpp - ricick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接