2015-10-16 4 views
0

Я работаю над Поставщиком инструментов LTI, я внедрил LTI auth package и успешно смогу получить два (...??) Нога OAuth, работающие так же, как и подписи, и мы все можем перенаправить, за исключением одной важной вещи.Meteor LTI Auth, данные от сервера сервера Iron Router до клиента?

То, что я хочу быть в состоянии сделать, это

  • Если пользователь оленья кожа существует, создайте его и войти в
  • Если пользователь существует, бревенчатый наш пользователь в

права теперь у меня нет способа фактически определить моего пользователя после перенаправления на клиентский маршрут.

В LTI Потребительские указывает на мой маршрут сервера Железный маршрутизатор, который выглядит примерно так:

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(); 
}); 

Есть ли какие-либо пакеты, я могу использовать, чтобы получить эту работу просто? Могу ли я использовать что-то вроде базы учетных записей? Нужно ли мне реализовать свою собственную логику?

Любая помощь или направление приветствуются.

Cheers.

ответ

1

Я решил это, внедряя одноразовую систему токенов аутентификации, обрабатываемую пользовательским обработчиком входа, используя accounts-base и метод Accounts.registerLoginHandler.

Грубый обзор Auth потока:

LTI Route (сервер)

  1. Если проверка подлинности, создайте новую учетную запись/обновить старую один
  2. Вставки объект маркеров + временную метки в коллекцию ,
  3. Перенаправление на пути аутентификации, передавая наш маркер в качестве параметра

маршрут Auth (клиент)

  1. Проверьте наш пользователь вошел в систему. Если это так, перенаправить на наш домашний маршрут
    • Если жетон предоставлен и существует, отметьте его. Поскольку у нас нет способа проверить пользователя на маршруте сервера, если пользователь имеет сеанс, закрыт и снова открывает ссылку через LMS, нам нужно иметь дело с нашими лишними токенами.
  2. Если наш пользователь не авторизовался, проверьте наличие токена. Если он существует, перейдите к пользовательской аутентификации через Accounts.callLoginMethod
  3. Наш пользовательский обработчик входа проверяет наш токен. Если законно, используйте токен и зарегистрируйте пользователя.

Мой код грязный, но когда я рефакторинг, я, вероятно, открою его как пакет метеоров.