2014-03-05 55 views
0

我有一個外部工具,我通過LTI連接到我的D2L網站。當學生完成他的工作時,我希望該工具將評分發送回LMS。 在使用XML負載發送評分時,我收到來自D2L的「未通過身份驗證」消息。我如何認證我的成績發佈?我如何驗證LTI成績回報?

回答

0

所需的認證取決於如何在LTI 1.1 implementation guide中描述的必須完成的操作。特別是(來自LTI 1.1 impl指南),請注意部分4: LTI Security Model和部分6.1: LTI Basic Outcome Service

的要求快速綜上所述,筆者認爲(如每部分4.3: Security for application/xml Messages):

  • 形式向上POX(純「醇XML)主體

  • 計算主體的散列值

  • oauth_body_hash parm設置爲該值

  • 將請求標記爲O AUTH簽名的規則,並注意該oauth_body_hash必須被包括在基本字符串與其它請求一起登錄參數parms

  • 與所述簽名的請求的OAuth的PARMS一起發送oauth_body_hasħPARM

D2L 高度建議實現者爲其特定平臺使用可靠的OAuth標準庫來執行簽名生成和驗證,而不是嘗試自行實現OAuth簽名/驗證算法。

請注意,在這種情況下,Oauth參數在請求標頭中發送,而不在主體數據中。 IMS規範本身包含一個身體應該看起來像什麼樣的示例(sec 4.3):

POST http://www.imsglobal.org/developers/BLTI/service_handle.php HTTP/1.0 
Host: 127.0.0.1:80 
Content-Length: 757 
Authorization: OAuth realm="",oauth_version="1.0", 
    oauth_nonce="29f90c047a44b2ece73d00a09364d49b", 
    oauth_timestamp="1313350943",oauth_consumer_key="lmsng.school.edu", 
    oauth_body_hash="v%2BxFnmDSHV%2Fj29qhxLwkFILrtPo%3D", 
    oauth_signature_method="HMAC-SHA1", 
    oauth_signature="8auRpRdPY2KRXUrOyz3HKCs92y8%3D" 
Content-type: application/xml 

<?xml version = "1.0" encoding = "UTF-8"?> 
<imsx_POXEnvelopeRequest xmlns = "http://www.imsglobal.org/services/ltiv1p1/xsd/imsoms_v1p0"> 
    <imsx_POXHeader>  
    <imsx_POXRequestHeaderInfo>  
     <imsx_version>V1.0</imsx_version> 
     <imsx_messageIdentifier>999999123</imsx_messageIdentifier>  
    </imsx_POXRequestHeaderInfo> 
    </imsx_POXHeader> 
    <imsx_POXBody>  
    <readResultRequest>  
     <resultRecord> 
     <sourcedGUID> 
      <sourcedId>3124567</sourcedId> 
     </sourcedGUID> 
     </resultRecord> 
    </readResultRequest> 
    </imsx_POXBody> 
</imsx_POXEnvelopeRequest>