我有一个外部工具,我连接到我的D2L网站通过LTI。当一个学生完成他的工作时,我想要工具把成绩送回LMS。在发送带有XML有效负载的级别时,我从D2L收到一条“未经身份验证”的消息。如何验证我的职系公告?
发布于 2014-03-05 15:51:30
所需的身份验证取决于如何按照LTI 1.1实施指南中所述的方式进行验证。特别是(来自LTI 1.1推动指南),请注意4: LTI安全模型节和6.1: LTI基本成果服务节。
我相信(根据4.3:应用程序/xml消息的安全性部分),对需求的快速总结:
oauth_body_hash parm设置为此值oauth_body_hash必须包含在基字符串中才能与其他请求parms一起签名oauth_body_hash parm和OAuth parmD2L强烈建议实现者为其特定平台使用可靠的OAuth标准库来进行签名生成和验证,而不是尝试单独实现OAuth签名/验证算法。
注意,在这种情况下,Oauth parms是在请求头中传输的,而不是在正文数据中传输的。IMS本身包含了一个主体应该是什么样子的示例(第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>https://stackoverflow.com/questions/22202362
复制相似问题