如何验证LTI等级的退货?

时间:2014-03-05 15:44:30

标签: desire2learn lti

我有一个外部工具,我通过LTI连接到我的D2L网站。当学生完成工作时,我希望该工具将成绩发送回LMS。 我收到了#34;未经过身份验证的"在使用XML有效负载发送成绩时来自D2L的消息。如何验证我的成绩发布?

1 个答案:

答案 0 :(得分: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(普通'ol XML)正文

  • 计算正文哈希值

  • oauth_body_hash parm设置为此值

  • 根据Oauth签名规则对请求进行签名,并注意oauth_body_hash 必须包含在基本字符串中以与其他请求参数一起签名

  • 在已签名的请求中传输oauth_body_has h parm以及OAuth parms

D2L 高度建议实施者使用可靠的OAuth标准库为其特定平台进行签名生成和验证,而不是尝试自行实施OAuth签名/验证算法。

请注意,在这种情况下,Oauth parms在请求标头中传输,而不是在正文数据中传输。 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>