2015-10-16 92 views
0

我正在使用LTI工具提供程序,我已經實現了LTI auth package,並且能夠成功地獲得兩個(..one?)legged OAuth,也就是匹配簽名,除了一件重要的事情外,我們都很擅長重定向。流星LTI認證,鐵路由器服務器路由到客戶端的數據?

我希望能夠做的,是

  • 如果此用戶犯規存在,創建並登錄
  • 該用戶是否存在,請登錄我們的用戶在

權現在當我重定向到客戶端路由時,我無法真正確定我的用戶。

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

是否有任何軟件包我可以用它來得到這個簡單的工作?我可以使用類似帳戶的東西嗎?我需要實現自己的邏輯嗎?

任何幫助或方向表示讚賞。

乾杯。

回答

1

我解決了這個問題,它通過實現一個使用身份驗證令牌系統,由一個自定義登錄處理程序使用accounts-base和​​方法處理。

粗糙的驗證流程概述:

LTI路線(服務器)

  1. 如果通過身份驗證,創建新帳戶/更新舊
  2. 插入令牌+時間戳對象到一個集合。
  3. 重定向到認證途徑,通過我們令牌作爲參數

驗證路徑(客戶端)

  1. 檢查我們的用戶登錄,如果是這樣,重定向到我們家的路線
    • 如果已經提供了令牌並且它存在,請將其標記爲已使用。由於我們無法檢查服務器路由中的用戶,如果用戶有會話,關閉並再次通過LMS打開鏈接,則需要處理我們的超額令牌。
  2. 如果我們的用戶沒有登錄,請檢查令牌。如果存在,請將其傳遞給通過Accounts.callLoginMethod
  3. 的自定義驗證我們的自定義登錄處理程序驗證我們的令牌。如果合法,消費令牌並將用戶登錄。

我的代碼很混亂,但是當我重構時,我可能會將它作爲Meteor包打開源代碼。