Meteor LTI Auth,从 Iron Router 服务器路由到客户端的数据?
Meteor LTI Auth, data from Iron Router server route to client?
我在 LTI 工具提供程序上工作,我已经实现了一个 LTI auth package 并且我成功地获得了两个(..一个?)有腿的 OAuth 工作也就是匹配签名,我们都很好重定向,除了一件重要的事情。
我想做的是
- 如果该用户不存在,请创建并登录
- 如果用户存在,请登录我们的用户
现在我无法在重定向到客户端路由后实际确定我的用户。
LTI 消费者指向我的 Iron Router 服务器路由,类似于:
Router.route('/lti', { where: 'server' }).post(function() {
provider.valid_request(request, function(error, valid) {
if (valid) {
this.response.writeHead(302, { Location: '/' });
} else {
this.response.writeHead(403);
}
});
return this.response.end();
});
是否有任何软件包可以让我简单地使用它?我可以使用类似 accounts-base 的东西吗?我需要实现自己的逻辑吗?
感谢任何帮助或指导。
干杯。
我通过实施一次性身份验证令牌系统解决了这个问题,该系统由使用 accounts-base
和 Accounts.registerLoginHandler
方法的自定义登录处理程序处理。
粗略的身份验证流程概述:
LTI 路由(服务器)
- 如果通过身份验证,请创建一个新的 account/update 旧的
- 将令牌 + 时间戳对象插入集合。
- 重定向到身份验证路由,将我们的令牌作为参数传递
授权路由(客户端)
- 检查我们的用户是否登录。如果是,重定向到我们的主路由
- 如果提供了令牌并且它存在,请将其标记为已使用。由于我们无法在服务器路由中检查用户,如果用户有会话,关闭并再次通过 LMS 打开 link,我们需要处理多余的令牌。
- 如果我们的用户未登录,请检查令牌。如果存在,则通过
Accounts.callLoginMethod
将其传递给自定义身份验证
- 我们的自定义登录处理程序验证了我们的令牌。如果合法,使用令牌并让用户登录。
我的代码很乱,但是当我重构时,我可能会把它作为一个 Meteor 包开源。
我在 LTI 工具提供程序上工作,我已经实现了一个 LTI auth package 并且我成功地获得了两个(..一个?)有腿的 OAuth 工作也就是匹配签名,我们都很好重定向,除了一件重要的事情。
我想做的是
- 如果该用户不存在,请创建并登录
- 如果用户存在,请登录我们的用户
现在我无法在重定向到客户端路由后实际确定我的用户。
LTI 消费者指向我的 Iron Router 服务器路由,类似于:
Router.route('/lti', { where: 'server' }).post(function() {
provider.valid_request(request, function(error, valid) {
if (valid) {
this.response.writeHead(302, { Location: '/' });
} else {
this.response.writeHead(403);
}
});
return this.response.end();
});
是否有任何软件包可以让我简单地使用它?我可以使用类似 accounts-base 的东西吗?我需要实现自己的逻辑吗?
感谢任何帮助或指导。
干杯。
我通过实施一次性身份验证令牌系统解决了这个问题,该系统由使用 accounts-base
和 Accounts.registerLoginHandler
方法的自定义登录处理程序处理。
粗略的身份验证流程概述:
LTI 路由(服务器)
- 如果通过身份验证,请创建一个新的 account/update 旧的
- 将令牌 + 时间戳对象插入集合。
- 重定向到身份验证路由,将我们的令牌作为参数传递
授权路由(客户端)
- 检查我们的用户是否登录。如果是,重定向到我们的主路由
- 如果提供了令牌并且它存在,请将其标记为已使用。由于我们无法在服务器路由中检查用户,如果用户有会话,关闭并再次通过 LMS 打开 link,我们需要处理多余的令牌。
- 如果我们的用户未登录,请检查令牌。如果存在,则通过
Accounts.callLoginMethod
将其传递给自定义身份验证
- 我们的自定义登录处理程序验证了我们的令牌。如果合法,使用令牌并让用户登录。
我的代码很乱,但是当我重构时,我可能会把它作为一个 Meteor 包开源。