2014-12-05 2 views
6

express.js 프레임 워크를 사용하여 간단한 '안녕하세요 세상'웹 앱을 만들었습니다.Node.js로 LTI 실행 인증

나는 응용 프로그램을 IMS-LTI 준수로 설정하여 moodle 및 기타 학습 관리 시스템에서 외부 도구로 실행할 수 있기를 바랍니다.

그러나 내 응용 프로그램에서 oTIh를 사용하여 LTI 실행을 인증하는 방법을 이해할 수 없으며 어떤 express.js/node.js 예제도 찾을 수 없습니다. 나는 passport-lti 노드 모듈 (https://www.npmjs.org/package/passport-lti)이 있지만 노드가있는 멍청이로서 단지 스파 스 문서를 이해하지 못한다고 생각합니다.

어떤 도움에 감사드립니다 ...이 비디오 (https://www.youtube.com/watch?v=twav6O53zIQ), I는 LTI 발사 인증을위한 유사한 도움을 바라고를 사용하여 -

나는 로컬 인증을 만들 passport.js을 사용했다.

건배, 올리

+0

나는 결국이 문제를 해결할 수있었습니다. 나는 노드 모듈이 문서뿐만 아니라 테스트 코드를 가지고 있다는 것을 깨닫지 못했다. 테스트 코드를 사용하여이를 수행하는 방법을 이해했습니다. –

+0

마음에 들지 않으면 답변을 여기에 게시 할 수 있습니까? – agpt

+0

답변을보고 싶습니다. – rjerue

답변

1

LTI 도구 소비자 (즉 LMS에)의 LTI 응용 프로그램 (도구 공급자) 시작하는 LTI 도구는 HTTP 포스트를 보냅니다.

게시물이 합법적임을 인증하려면 LTI 도구를 구성 할 때 도구 소비자와 교환 한 공유 비밀 키를 사용하여 서명을 로컬에서 다시 계산하여 게시 변수 'oauth_signature'가 유효한지 확인해야합니다 .

OAuth 서명 확인 작업은 OAuth 라이브러리에서 처리 할 가능성이 높습니다. nodejs에 이미이 작업이 있으므로 재 구현하지 마십시오.

당신은 그냥 내가 잠시 다시 이것의 작동 예를하고 결국 언급하고 싶은 IMS Global documentation

1

에서 출시 요청을 검증하는 전체 과정을 읽을 수 있습니다.

passport.use('lti-strategy', new CustomStrategy(
    function(req, callback) { 
     var val = (req.body) ? req.body : req.user  
     try{ 
      var provider = new lti.Provider(val , process.env.LTI_SECRET) 
      if(req.user){ 
       callback(null, val)   
      } 
      else{ 
       provider.valid_request(req, function(err, isValid) { 
        if(err){ 
         console.log("LTI Error", err, isValid) 
        } 
        callback(err, val) 
       }); 
      }  
     } 
     catch(err){ 
      console.log("Authenication error", err) 
      callback(err, null) 
     } 
    } 
)) 

https://github.com/ripples/Present/blob/master/server/app.js#L35

나는 사용자 정의 여권 전략을 수행하고 인증을 수행하는 다른 라이브러리를 사용하여 끝났다.

https://github.com/omsmith/ims-lti

new lti.Provider 비트, 키가 인증을 수행 할 LTI 포스트 REQ 객체에 걸리는 것을입니다.