imskorea_logo_1 학습 도구 상호운용성 1.2 실행 가이드
발행일 2015년 1월 5일
최신버전 http://www.imsglobal.org/lti/
이전버전

IPR 및 유포에 관한 공지사항

이 표준을 활용하는 이는 표준을 적용하면서 인지하게 된 관련 특허 또는 지적재산권의 침해 가능성 사실을 코멘트와 함께 문서의 형태로 제공해야 한다.

IMS Korea는 이 문서에 명시된 기술의 적용 또는 활용과 관련된 지적재산권 또는 기타 권리의 적용범위와 유효성에 대한 입장, 또는 그러한 권리와 관련하여 어느 정도까지 허용될 것인지에 대한 입장을 표명하지 않는다. 뿐만 아니라, 그러한 권리를 파악하는 노력을 기울였다는 사실 또한 명시하지 않는다. IMS절차에 대한 정보는 IMS지적재산권 웹 페이지 : http://www.imsglobal.org/ipr/imsipr_policyFimal.pdf 에서 찾아 볼 수 있다.

Copyright © 2015 IMS Global Learning Consortium. All Rights Reserved.

이 표준을 활용하여 제품이나 서비스를 개발하기 위해서는 IMS 웹 페이지 : http://www.imsglobal.org/license.html에 나와 있는 IMS 표준의 라이선스 내용을 준수해야 한다.

모든 사용자는 제안요청서 작성을 위해 본 문서의 내용을 인용할 수 있다.

상기 부여된 제한된 승인 내용은 영속적이며, IMS Korea 또는 후임기관 그 누구라도 라이센스를 취소할 수 없다.

이 표준은 어떠한 보증도 하지 않으며, 특히 불침해에 대한 그 어떤 보증도 하지 않는다. 이 표준의 사용에 대한 책임은 온전히 사용자에 의하며, 그 어떤 컨소시엄이나 제공 주체도 이 표준을 사용함으로써 제3자가 직간접적으로 입을 수 있는 피해에 대해 책임지지 않는다.

LTI Public 포럼에 참여해 의견을 남겨주세요. http://www.imsglobal.org/community/forum/categories.cfm?catid=44

Copyright © 2015 IMS Global Learning Consortium, Inc. All Rights Reserved.

상표정보 : http://www.imsglobal.org/copyright.html

문서명 : IMS Global Learning Tools Interoperability Implementation Guide v1.2 Final

개정일 : 2015년 1월 5일

 

1 서론

IMS는 원격 도구 및 콘텐츠가 학습 관리 시스템Learning Management System에 통합될 수 있도록 학습 도구 상호운용성Learning Tools Interoperability 표준를 개발하고 있다. LTI 프로파일을 규정하는 이 실행 가이드는 개발한 표준들의 부분집합을 함께 담고 있다. 본 문서는 2010년 5월에 발간된 Basic LIT [BLTI, 10] 표준의 후속 신판이다.

1.1 LTI 개요

본 문서에서는 전반적으로 LTI와 관련된 두 핵심 소프트웨어를 설명하는 특정 용어들을 사용한다. 전통적으로 “학습 관리 시스템”(LMS)을 “도구 소비자Tool Consumer”(TC)라 칭하는데 이 시스템이 도구를 “소비”하기 때문이다. 외부의 도구나 콘텐츠는 도구 소비자가 사용하는 도구를 “공급”하기 때문에 “도구 공급자Tool Provider”(TP)라 불린다. 예로 도구 공급자는 외부 호스팅 테스트 시스템 또는 외부 호스팅 프리미엄 콘텐츠를 가진 서버를 포함한다.

본 문서에서는 “코스”라 볼 수 있는 “콘텍스트”라는 용어를 사용한다. 콘텍스트는 코스, 프로젝트 또는 공통된 사용자와 역할을 가진 리소스 컬렉션과 거의 비슷하다. 코스는 단지 콘텍스트의 한 종류이기 때문에 “코스”라는 단어 대신에 “콘텍스트”라는 단어가 사용된다(다른 유형의 콘텍스트는 “그룹”이 될 수 있음).

일반적으로 콘텍스트 내에서 사용자는 여러 LTI 콘텐츠 아이템을 저작할 수 있고, 때로는 그 아이템들을 “Week 1” 또는 “Pre-Work”와 같은 폴더 안에 배열할 수 있다. LTI 링크는 콘텍스트 구조 내의 다른 리소스로 활용되기 위한 것이다. 특히, 다중링크는 대부분 콘텍스트의 콘텐츠 구조를 통해 분산 될 것이다. LTI는 TP가 파라미터 resource_link_id를 이용해 분산된 링크를 구분할 수 있게 한다. 콘텍스트 내의 모든 링크들은 동일한 파라미터 context_id를 공유하고, 각 링크마다 고유한 파라미터 resource_link_id를 가진다. 이는 링크가 실행 된 후에 리소스 피커와 같은 구성 옵션을 교수자와 관리자에게 제공함으로써 TP가 콘텍스트 내의 파라미터 resource-by-resource를 이용해 보여 질 콘텐츠/기능을 구분할 수 있게 한다.

본 문서에서는 TC와 TP간의 안전한 상호작용을 위해 OAuth 1.0a 프로토콜[OAuth, 10]을 통한 메시지 서명을 사용한다. OAuth 서명은 메시지 서명을 위한 공유 비밀과 키가 필요하다. 각 메시지는 키와 그 키를 기반으로 OAuth가 생성한 서명과 함께 전송된다. TP는 발송자의 자격을 검증하기 위해 제공된 열쇠를 근거로 비밀을 찾아서 서명을 재 산출하고, 재 산출된 서명을 전송된 서명과 비교한다.

TC는 시스템 내에서 인증 방법(키와 비밀)을 어떻게 관리할 것인지 선택할 수 있다. LTI에는 (1) TC 관리자가 설정하여 특정 TP 도메인을 위해 모든 실행에 사용되는 특정 TP 도메인용 TC 차원의 인증, (2) TC 관리자가 설정하여 특정 TP URL을 위해 사용되는 특정 TP URL용 TC 차원의 인증 또는 (3) 각 LTI 링크가 자체적으로 보호하는 인증 등의 세 가지 패턴이 있다. 첫 번째와 두 번째 패턴은 교수자의 관점에서 TC 인스턴스와 TP 인스턴스를 보다 매끄럽게 통합할 수 있게 하고, 세 번째 패턴은 교수자가 LTI 링크를 “매시업”할 수 있게 한다.

LTI는 TP가 IMS 학습정보 서비스(LIS)를 이용할 수 있을 때 이를 불러올 수 있도록 도와준다. LTI는 LIS 서비스를 필요로 하지 않지만 TC는 Basic 실행 요청 값을 이용하여 LIS 주요 정보를 TP에게 전송할 수 있다.

용어에 대한 참고 사항 : 명세서 버전 1.0은 전체적으로 계획된 LTI 기능의 일부분임을 나타내기 위해 “Basic 학습 도구 상호운용성”이라는 제목을 붙였다. 지속적으로 추가될 향후 버전의 기능을 반영하기 위해 이 문서 버전 1.1은 “학습 도구 상호운용성”으로 개명되었다. 본 문서에서 가끔 “Basic”(“Basic 실행”)에 대한 언급을 볼 수 있을 것이다. Basic 실행 메시지는 궁극적으로 본 문서의 향후 버전에서 서술될 여러 유형의 메시지 중 하나이다. Basic 용어는 이러한 Basic 실행을 나타내는 IMS 커몬 카트리지 리소스 스키마와 Basic 실행에 대한 보안 패턴 안에서 특정 실행 메시지를 기술 하는데 지속적으로 사용 된다. 이 용어는 이러한 “Basic” 능력이 전반적으로 발전하는 LTI 능력의 일부분이 될 것이라는 사실을 보여준다.  

1.1 문서의 구조

본 문서의 구조 :

2 LTI의 유스케이스 LTI 표준의 핵심용도 시나리오를 기술하는 유스케이스의 나열

3 Basic 실행 데이터 Basic 실행이 실행 될 때 POST 데이터의 일부분으로서 전달된 데이터 항목의 서술

4 LTI 보안 모델 LTI 보안 환경에 대한 정의

5 카트리지에서의 Basic 실행 링크 표현 IMS 커몬 카트리지에 포함된 LTI 링크의 서술

6 LTI와 학습 정보 서비스의 활용 LTI와 IMS 학습 정보 서비스 사용 방법의 서술

부록 A LTI 표준 어휘 LTI 표준의 표준 어휘 참조

부록 B 구현 사례 구현을 돕기 위한 비규범적 토론과 권고

부록 C 사용자 정의 매개 변수 치환 LTI 표준의 사용자 정의 매개 변수 어휘 참조  

1.2 참고자료

This LTI v1.1 specification marks the convergence of the Basic LTI v1.0 spec with the LTI v1.0 Internal Draft documents (formerly known as full LTI).

[BLTI, 10] IMS Global Basic Learning Tools Interoperability v1.0, IMS Global Learning Consortium, C.Severance, May 2010. http://www.imsglobal.org/lti/.

[CC, 08a] IMS Global Common Cartridge v1.0, IMS Global Learning Consortium, K.Riley, October 2008. http://www.imsglobal.org/cc/.

[GWS, 06] IMS Global General Web Services WSDL Binding Guidelines v1.0, C.Schroeder, J.Simon and C.Smythe, IMS Global Learning Consortium, January 2006. http://www.imsglobal.org/gws/.

[IETF, 12] URI Template, J Gregorio. Retrieved 5 January 2015 from https://tools.ietf.org/html/rfc6570

[LIS, 11] IMS Global Learning Information Services v2.0, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, June 2011. http://www.imsglobal.org/lis/.

[LIS, 11 OMS] IMS Outcomes Management Service Information Model v1.0, L.Feng and C.Smythe, IMS Global Learning Consortium, March 2010, http://www.imsglobal.org/lis/.

[LTI, 14 OM] IMS Outcomes Management v1.0, S Vickers, IMS Global Learning Consortium, December 2014, http://www.imsglobal.org/lti/.

[OAuth, 10] The OAuth 1.0 Protocol, E. Hammer-Lahav. Retrieved 5 January 2015 from http://tools.ietf.org/html/rfc5849

[OBH, 11] OAuth Request Body Hash, B. Eaton, E. Hammer-Lahav. Retrieved 5 January 2015 from http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html  

2 LTI의 유스케이스

이 섹션에서는 LTI 버전 1.1 명세서에 대한 일반적인 시나리오를 기술한다.

유스케이스 제목 TP 도메인 인증 설정(Basic 실행)
유스케이스 로컬 아이디 LTIv1p1-01
간략한 설명 TP관리자는 특정 TP에 대한 TP 도메인 인증을 설정한다. 이러한 인증은 TC 시스템 내에서 직접 저작된 LTI 링크와 커몬 카트리지에서 불려온 LTI 링크 모두에 적용된다.(유스케이스 LTIv1p1-03 참조).
수준 요약
액터 TC 관리자, TP 관리자
이벤트의 기본 흐름
  1. 인증 생성. TP 관리자는 TC를 위한 키와 비밀의 조합을 만든다.(TC 관리자가 특정 열쇠, 즉 TC 도메인 명을 요청하는 곳)
  2. 인증 교환. TC 관리자가 TP 관리자로부터 키, 비밀과 TP 도메인 명을 얻는다. LTI 표준은 어떤 특정한 교환방법을 규정하지 않는다.
  3. TC 내 인증 유지. TC 관리자는 인증을 TP 도메인과 연결시켜 TC가 제공한 대화나 환경설정 메커니즘을 활용하여 이 정보를 유지한다.
유스케이스 제목 링크 레벨 인증 설정
유스케이스 로컬 아이디 LTIv1p1-02
간략한 설명 교수자는 LTI 링크를 만들고 그 링크의 열쇠/비밀번호를 설정한다.
수준 요약
액터 교수자, 도구 공급자(TP)
이벤트의 기본 흐름
  1. 링크 레벨 인증 교환. 교수자는 TP와 교신하여 공급자의 도구와 콘텐츠에 대한 엑세스를 얻는다. TP는 교수자에게 (1)콘텐츠나 도구에 대한 LTI 실행 URL이나 XML의 단편적인 정보와 (2) 이 정보에 접속할 때 사용되는 키 그리고 (3) 키와 연계된 비밀 등을 제공한다. LTI 표준은 이러한 교환에 대한 메커니즘을 규정하지 않는다.
  2. TC 시스템 내 링크 레벨 인증의 유지. 교수자는 TC 시스템 내 저작 대화에 세 값(URL 또는 XML의 단편적인 정보, 키 그리고 비밀)을 입력한다.
유스케이스 제목 카트리지에서 불려온 LTI 링크 인증 관리
유스케이스 로컬 아이디 LTIv1p1-03
간략한 설명 교수자는 LTI 링크 설명을 포함한 커몬 카트리지를 콘텍스트로 불러오고, 사용자들은 콘텐츠를 사용한다.
수준 요약
액터 교수자, TC 유저(특정 교수자 또는 학생)
전제조건 카트리지 제작자가 하나 이상의 LTI 링크 설명을 포함한 커몬 카트리지를 만든다. 이 설명은 실행 URL과 링크와 연계된 다른 데이터들을 명시하지만 키나 비밀을 포함하지 않는다. TC 관리자는 유스케이스 LTIv1p1-01에 따라 카트리지 내에서 참조되는 특정 TP에 대한 도메인 인증을 설정한다.
이벤트의 기본 흐름 도구 실행 과정에 도메인 인증 활용. TC 사용자가 커몬 카트리지에서 불려온 LTI 링크를 실행할 때 TC는 실행 요청에 TP 주소와 연계된 미리 설정된 인증을 사용하여 서명한다. 특히, TC 차원의 인증이 이미 설치되어 있는 교수자는 카트리지를 불러온 후 실행요청을 확보하기 위한 추가 조치를 할 필요가 없다.
대체경로 A. 도메인 인증은 미리 설정되지 않는다. 도메인 인증이 TC 시스템 내에서 미리 설정되어 있지 않은 경우(유스케이스에 대한 전제조건이 충족되지 않는 경우), 제 2단계에서의 실행 요청은 승인되지 않는다. 이 경우 TC는 (자체 판단으로) 도구 실행이 진행되는 것을 허용하지 않을 수 있다. 서명이 없는 도구 실행이 발견되면, TP는 (자체 판단으로) 요청 수락을 거부할 수 있다. 카트리지를 불러온 후 도메인이나 링크 레벨 인증(유스케이스 LTIv1p1-01 및 LTIv1p1-02에 따라 각각)을 추가하여 이러한 실행 오류를 바로 잡을 수 있다.
유스케이스 제목 콘텍스트로부터 저작된 Basic 실행 링크 런칭하기
유스케이스 로컬 아이디 LITv1p1-04
간략한 설명 교수자가 아닌 사용자가 TC 내의 콘텍스트로부터 Basic 실행 링크를 선택한다.
액터 TC 사용자
전제조건 교수자는 Basic 실행 링크를 저작하거나 불러오고, 적절한 인증이 준비되어 있다.
이벤트의 기본 흐름
  1. TC 사용자는 TC UI 내의 링크를 클릭한다.
  2. TP의 도구나 콘텐츠는 TC UI나 다른 창에 나타난다. 자바스크립트가 꺼지면 TC 사용자는 TP에게 POST 데이터를 보내기 위해 “계속” 버튼을 클릭해야 한다.
유스케이스 제목 카트리지로부터 불려온 Basic 실행 링크 런칭하기(비밀 포함)
유스케이스 로컬 아이디 LTIv1p1-05
간략한 설명 교수자는 Basic 실행 링크 설명을 포함한 커몬 카트리지를 콘텍스트에 불러오고 사용자는 콘텐츠를 활용한다.
액터 카트리지 제작자, 교수자, TC 사용자
전제조건 TC 관리자는 카트리지 내에서 참조되는 특정 TP에 적합한 인증을 받아서 설치한다.
이벤트의 기본 흐름
  1. 카트리지 제작자는 하나 이상의 Basic 실행 링크 설명자가 들어간 카트리지를 만든다. 카트리지 내의 Basic 실행 링크 설명자는 실행 URL과 다른 데이터를 포함하지만 키와 비밀은 포함하지 않는다.
  2. 교수자는 커몬 카트리지를 얻어 TC 시스템 내 콘텍스트에 불러온다.
  3. TC 사용자가 커몬 카트리지로부터 불려온 Basic 실행 링크를 따를 경우, TC는 TP 도메인 또는 URL과 연계된 미리 설정된 인증을 활용한다.
대체경로 A. 전제조건이 충족되지 않았을 경우 카트리지를 불러온 후에 인증을 설정할 수도 있다. 인증이 규정되기 전에 실행이 발생할 경우, TP는 사용자에게 인증이 필요하다는 것을 알릴 책임이 있다.
유스케이스 제목 카트리지로부터 불려온 Basic 링크 런칭하기(비밀 미포함)
유스케이스 로컬 아이디 LTIv1p1-06
간략한 설명 교수자는 LTI 링크 설명자가 포함된 커몬 카트리지를 콘텍스트에 불러오고, 사용자는 콘텐츠를 사용한다. 이 시나리오는 경우에 따라서 TC 및/또는 TP가 비밀이 없는 Basic 실행을 오류로 인식할 수 있다.
액터 카트리지 제작자, 교수자, TC 사용자
전제조건 없음
이벤트의 기본 흐름
  1. 카트리지 제작자는 카트리지를 만들고 하나 이상의 Basic 실행 링크 설명자를 그 카트리지에 포함 시킨다. 카트리지의 Basic 실행 링크 설명자는 하나의 실행 URL 및 다른 데이터가 포함되지만 키나 비밀은 포함되지 않는다.
  2. 교수자는 커몬 카트리지를 얻어 TC 시스템 내 콘텍스트에 불러온다.
  3. TC 사용자가 커몬 카트리지의 Basic 실행 링크를 따를 때, TC는 인증 또는 서명 없이 Basic 실행 링크를 실행 한다.
유스케이스 제목 TP에서부터 TC로의 소수 점수 반환
유스케이스 로컬 아이디 LTIv1p1-07
간략한 설명 교수자는 하나의 코스 내에 리소스 링크를 만들고 TP로부터 점수를 받아 LTI 링크와 기록부 사이에 필요한 경로 설정을 보여준다. TC가 특정 사용자/콘텍스트/링크에 대한 점수를 수용할지 여부는 일부 TC 관리자와 TC 교수자자의 조합에 달려 있다.
액터 TC 관리자, 교수자, TC 사용자
전제조건 TC 관리자는 TC 내 점수 경로설정 지원을 할 수 있게 한다(보편적으로 또는 각 TP 별로).
이벤트의 기본 흐름
  1. 교수자는 링크를 저작하고 품목명이 그 링크와 연계되었다는 것을 보여준다.
  2. TC 사용자는 링크를 실행하고 TC가 LIS Basic 결과 서비스에 대한 서비스 종료 시점과 파라미터 lis_result_sourcedid를 포함시켜 TP가 점수를 설정, 읽기 및 삭제하는 서비스 호출을 하도록 만든다.
  3. TP 시스템은 TC의 결과서비스를 호출하여 필요에 따라 점수를 설정, 읽기 및/또는 삭제한다. 이 같은 서비스 동작은 서버와 서버 간의 신뢰라는 점에서 언제라도 가능해야 한다(단, 실행과정 중이 아니라면).

 

3 Basic 실행 데이터

이 섹션에서는 Basic 실행이 수행될 때 POST 데이터의 일부로 전달되는 데이터 항목을 기술한다. 각 도구공급자가 다른 요구사항을 가지고 있을 수 있으므로 기술적으로는 매우 적은 수의 필드만이 요구된다. 일부 TP는 실행 중인 필드를 추적용으로 모은 정보라 보며 다른 TP는 높은 지분의 활동을 수행하고 이 활동으로부터 확실하고 안전한 높은 지분의 결과를 반환하기 위해 매우 상세하고 정확한 정보를 필요로 한다.

TC 시스템은 TP가 제대로 작동하는데 필요한 데이터를 가질 기회를 극대화하기 위해 각 실행 마다 가능한 많은 데이터를 제공해야 한다. TC 시스템은 “승인된” TP에게만 특정 LTI 데이터 요소를 보내도록 제한하는 샌드박스 기능을 가진다. LTI 실행의 TC 샌드박스 본질을 규정하는 것은 표준의 범위를 벗어나는 일이다. TC가 정보를 가지고 있지 않거나 TP와 정보를 공유하지 않도록 설정되어 있으므로 TP는 부분적인 정보만으로도 작업을 할 수 있어야 한다.

프로파일이 필드를 확장하려면 본 문서에 기술되지 않는 모든 필드에 접두사 “ext_”를 붙여야 한다.

lti_message_type=basicltilaunchrequest (필수)

이는 Basic 실행 메시지임을 나타낸다. TP가 동일한 실행 URL에서 다수의 다른 LTI 메시지유형을 수용할 수 있게 한다.

lti_version=LTI1p0 (필수)

이는 특정 메시지에 어느 버전의 표준이 사용되었는지 나타낸다. 버전 1.1에 대한 실행은 1.0 실행과 상향 호환되므로 이 값은 LTI 1.1을 벗어나지 않는다. resource_link_id=88391e1919bb3456 (필수)

이는 링크의 모든 배치에 대해 TC가 TC내에서 고유하다고 보장하는 불분명한 고유 식별자이다. 동일한 콘텍스트 내에서 도구/활동이 여러 차례 배치되는 경우 각 배치는 구분될 것이다. 항목이 한 시스템이나 콘텐츠에서 수출되어 다른 시스템이나 콘텐츠로 불러와 지는 경우 이 값 또한 변경될 것이다.

resource_link_title=My Weekly Wiki (권장)

리소스에 대한 일반 텍스트[i] 제목. 링크에 나타나는 클릭할 수 있는 텍스트이다.

resource_link_description=…

링크 옆에 나란히 나타내기 적합한 링크 목적지 일반 텍스트 설명이다. 일반적으로 몇 줄을 넘기지 않는다. 이 파라미터는 선택사항이다.

user_id=0ae836b97fc94060006f27b2066ac545 (권장)

사용자를 고유하게 식별한다. 여기서는 사용자에 대한 확인정보가 포함되지 않아야 한다. 권장 사례는 이 필드가 “로컬 키”가 아니라 사용자 기록을 위해 TC가 생성한 장기적인 “기본 키”여야 한다는 것이다.

user_image=http://….

이 속성은 이 요청을 실행한 사용자의 이미지에 대한 URL을 명시한다. 이 이미지는 “프로필 사진”이나 사용자를 나타내는 아바타로서 사용되는 것이 적합하다. 널리 지원되는 이미지 파일(PNG, JPG 또는 GIF)을 사용하는 비교적 작은 정사각형 형상 비의 그래픽 파일로 예상된다. 이 파라미터는 선택사항이다.

roles=Instructor (권장)

콤마로 분리된 역할에 대한 URN 값의 목록이다. 이 목록이 비어있지 않다면 LIS System Role, LIS Institution Role 또는 LIS Context Role 어휘 중 최소한 하나를 포함하여야 한다(부록 A 참조). 이 URN의 추정되는 네임스페이스namespace는 LIS Context Role의 LIS 어휘이므로 그 목적이 LIS 콘텍스트 역할을 참조하는 것이라면 TC는 핸들을 사용할 수 있다. TC가 다른 네임스페이스에서의 역할을 포함하고자 한다면 완벽하게 인증된 URN을 사용하여야 한다. 비 LIS 어휘로부터의 역할 활용은 그것이 상호운용성을 제한 할 수 있으므로 바람직하지 않다.

lis_person_name_given=Jane

lis_person_name_family=Public

lis_person_name_full=Jane Q. Public

lis_person_contact_email_primary=user@school.edu

이 필드들에는 이 실행을 수행하는 사용자 계정에 관한 정보가 포함되어 있다. 이 데이터 항목의 명칭은 LIS [LIS, 11]에서 가져온 것이다. 이 필드 내 콘텐츠의 정확한 의미는 LIS가 규정한다. 이 파라미터는 개인비밀 설정으로 인해 통제되지 않는 한 권장한다.

role_scope_mentor=f5b2cc6c8c5c24e875ccfac504df920f, dc19e42cb0fe68b8167e4b1a8f2b367e

현재 사용자가 멘토로서 접근할 수 있는 콤마로 분리된 파라미터 user_id 값의 목록이다. 멘토가 부모, 보호자 또는 감사역을 하는 것이 이 파라미터의 대표적인 유스케이스이다. 각 TP에 의해 다양한 방식으로 사용될 수 있다. 일반적으로 멘토가 추적 및 요약정보에 접근할 수 있지만 꼭 사용자의 개인적인 콘텐츠나 과제제출에 대한 접근은 아니다. 콤마가 포함된 파라미터 user_id 값을 수용하기 위해서는 각 파라미터 user_id는 암호화된 url이어야 한다. 이는 콤마로 구분된 목록의 각 파라미터 user_id도 TP가 사용하기 전에 url이 해독되어야 한다는 의미다. 이 파라미터는 선택사항이며 현재 사용자용으로 전달된 역할 중 하나가 urn:lti:role:ims/lis/Mentor인 경우에만 사용되어야 한다.

context_id=8213060006f27b2066ac545 (권장)

이는 실행될 링크를 포함하고 있는 환경을 독특하게 확인하는 불확실한 식별자이다.

context_type=CourseSection

이 문자열은 콘텍스트의 유형을 식별하는 콤마로 분리된 URN 값 목록이다. 이 목록에는 최소한 LIS 어휘로부터 발췌한 URN 값이 반드시 포함되어야 한다(부록 A 참조). 이러한 URL의 가정 네임스페이스는 LIS 어휘라서 LIS 콘텍스트 유형을 참조하는 목적이면 TC는 핸들을 사용할 수 있다. TC가 다른 네임스페이스의 콘텍스트 유형을 포함코자 한다면 완벽하게 인증된 URN을 사용하여야 한다. 이 파라미터는 선택사항이다.

context_title=Design of Personal Environments (권장)

콘텍스트의 일반 텍스트 제목 – 라인의 길이에 관한 것이어야 한다.

context_label=SI182 (권장)

콘텍스트에 대한 일반 텍스트 라벨 - 칼럼에 맞아야 한다.

launch_presentation_locale=enUS

http://www.rfceditor.org/rfc/bcp/bcp47.txt.에서 사용 가능한 언어 확인용 태그에 대한 IETF 모범사례를 사용하여 나타낸 국가 및 이형(BCP47) 언어. 이 파라미터는 선택사항이다.

launch_presentation_document_target=iframe (권장)

이 필드는 일종의 브라우저 저장소를 TC가 실행한 도구에 전달한다. TP는 이 파라미터를 무시하고 자바스크립트를 통하여 그 환경을 감지할 수 있지만 이 파라미터는 도구가 원하는 경우 자바스크립트의 활용을 요구하지 않고도 TP에 정보를 제공한다. 이 파라미터의 예상 값은 다음과 같다.

  • frame – 리소스 링크와 동일한 프레임에서 열림
  • iframe – 리소스 링크와 동일한 페이지/프레임 내에 배치된 iframe 내에서 열림
  • window – 새 창 (또는 탭)에서 열림
  • popup – 팝업 창에서 열림
  • overlay – 링크가 존재하는 페이지의 맨 위에서 열림(예를 들면 라이트박스를 활용하여)
  • embed – TP 페이지를 직접 TC 페이지로 삽입함. 이 옵션은 일반적으로 예상되는 유스케이스는 아니지만 예를 들어, TC가 사용자를 대신하여 실행 요청을 수행하고 (예, 서버 대 서버) 그 페이지 내 (예, 포탈 같은 인터페이스 내에서)에서 회신이 제공되는 경우 사용될 수 있다.

launch_presentation_css_url=

이는 특정 LMS의 CSS URL에 대한 URL이다. 어떠한 CSS 클래스들이 이 CSS 내에 있어야 하는 지를 정확하게 기술하는 표준은 없다. TC는 로컬 도구에 적용할 표준 CSS URL을 보낼 수 있다. TC에는 글꼴, 색깔 등을 설정하기 위한 HTML 태그의 스타일링과 그 내부 도구를 칭할 때 사용하는 속성태그도 포함되어야 한다. 이 파라미터는 선택사항이다.

언젠가는 CSS 클래스가 단 하나의 마크업 세트를 가진 “built-in”을 보게 하는 교차 LMS 표준이 나오겠지만 그때까지는 파라미터 launch_presentation_css_url이 도구들로 하여금 LMS 시스템을 통해 보고 느낀 것을 어느 정도 적용할 수 있도록 한다.

launch_presentation_width=320 (권장)

도구에서 콘텐츠가 보여 질 창이나 프레임의 폭. 도구는 이 파라미터를 무시하고 자바스크립트를 통해 그 환경을 감지할 수 있지만 파라미터는 도구가 원하는 경우 자바스크립트의 활용을 요구하지 않고도 TP에 정보를 제공한다.

launch_presentation_height=240 (권장)

도구에서 콘텐츠가 보여 질 창이나 프레임의 높이. 도구는 이 파라미터를 무시하고 자바스크립트를 통해 그 환경을 감지할 수 있지만 파라미터는 도구가 원하는 경우 자바스크립트의 활용을 요구하지 않고도 TP에 정보를 제공한다.

launch_presentation_return_url=http://lmsng.school.edu/portal/123/page/988/ (권장)

TP가 사용자를 TC 인터페이스로 다시 전송할 수 있게 하는 정규화 된 URL. 이 URL은 일단 TP가 종료되었거나 시작할 수 없을 경우 또는 TP가 약간의 기술적인 어려움이 있을 경우에 사용할 수 있다. 오류가 있는 경우 TP는 오류의 본질에 관한 일부 상세내용을 포함하는 lti_errormsg라 불리는 파라미터를 추가한다. 파라미터 lti_errormsg값이 사용자에게 보여 지면 목적을 이룬 것이다. 도구가 메시지를 최종사용자에게 보여주고 TC에게는 로그 할 메시지를 제공하기만을 원할 경우 파라미터 lti_errormsg 대신 파라미터 lti_errorlog를 사용한다. 도구가 정상적으로 종료되고 메시지가 사용자에게 보여 지기를 원하는 경우 반환 URL에 파라미터 lti_msg로 텍스트 메시지를 포함시킬 수 있다. 도구가 정상적으로 종료되고 메시지가 TC에게 로그 할 메시지를 제공하기를 원하는 경우 파라미터 lti_log를 사용한다. 이 데이터는 URL 상에 GET으로 발송되어야 한다. 따라서 TP는 이 파라미터의 전체 길이가 GET요청 한도에 맞는 크기로 유지되도록 주의하여야 한다.

tool_consumer_info_product_family_code=desire2learn (권장)

확장자 활용에서의 더 나은 도구 지원과 그들이 불려지는 TC의 사용자 인터페이스에 맞는 도구의 사용자 인터페이스를 만들기 위해, TC가 이 파라미터를 포함하는 것은 권장된다. 필드에서 사용 가능한 값의 표본은 다음과 같다.

learn

desire2learn

sakai

eracer

olat

webct

tool_consumer_info_version=9.2.4 (권장)

이 필드에는 마침표가 붙은 주요 발행번호가 있어야 한다. 사소한 발행의 포맷은 유동적이다. 이 필드에서 사용 가능한 값의 표본은 다음과 같다.

9.1.7081

2.801

7.1

8

이 필드를 분석할 때 TP는 융통성이 있어야 한다.

tool_consumer_instance_guid=lmsng.school.edu

이는 TC용 고유 식별자이다. 일반적인 관행은 조직의 DNS나 TC 인스턴스의 DNS를 사용하는 것이다. 조직이 다수의 TC 인스턴스를 가진 경우 모범사례는 TC 인스턴스에 로컬 고유 식별자가 붙은 도메인 명을 앞에 붙이는 것이다. 싱글 테넌시single-tenancy의 경우 도구소비자 데이터는 때때로 파라미터 oauth_consumer_key로부터 파생된다. 멀티 테넌시multi-tenancy의 경우 이는 단일 도구소비자 시설 내에 있는 다수의 테넌트를 구분하는데 사용된다. 멀티 테넌시가 가능한 시스템 내에서는 이 파라미터를 강력히 권장한다.

tool_consumer_instance_name=SchoolU (권장)

이는 일반 텍스트 사용자가 볼 수 있는 필드이다. 이는 칼럼의 길이에 관한 것이어야 한다.

tool_consumer_instance_description=University of School (LMSng)

이는 일반 텍스트 사용자가 볼 수 있는 필드이다. 이는 라인의 길이에 관한 것이어야 한다. 이 파라미터는 선택사항이다.

tool_consumer_instance_url=http://lmsng.school.edu

이는 소비자 인스턴스의 URL이다. 이 파라미터는 선택사항이다.

tool_consumer_instance_contact_email=System.Admin@school.edu (권장)

TC 인스턴스에 대한 e-mail 연락처이다.

custom_keyname=value

LTI 링크 제작자는 LTI 링크 실행에 포함될 실행에 커스텀 열쇠/값 파라미터를 추가할 수 있다. 아래의 커몬 카트리지 섹션에서는 커몬 카트리지에 커스텀 파라미터를 저장할 때 이러한 파라미터들이 어떻게 표현되는지를 기술한다.

실행 중 커스텀 명칭/값 파라미터가 있는 경우 각 커스텀 파라미터에는 POST 파라미터가 포함된다. 파라미터 명칭은 소문자에 맵핑되며 파라미터 명칭 내에 숫자도 글자도 아닌 문자는 “밑줄표시”로 교체된다. 따라서 커스텀 엔트리가 다음과 같았다면

Review:Chapter=1.2.56

다음과 같이 맵핑되었을 것이다.

custom_review_chapter=1.2.56

LTI 링크 제작자는 파라미터 명을 소문자로 제한하고 밑줄표시가 아닌 구두점을 사용하지 않도록 제대로 처리한다. 이러한 커스텀 파라미터가 LTI 링크에 포함되는 경우 TC는 이를 반드시 실행 데이터에 포함하여야 한다. 그렇지 않으면 TP는 기능하지 않는다. TC 실행에는 부록 C에 기술된 바와 같이 커스텀 파라미터의 값을 대체할 수 있는 능력이 있다.

예를 들어 커스텀 파라미터가

xstart=$CourseSection.timeFrame.begin>이면

파라미터는

custom_xstart=20130121T01:00:00Z가 될 것이다.

IMS LIS의 날짜/시간 데이터 유형은 ISO 87601 포맷의 복합형 날짜/시간, 즉 ‘YYYYMMDDThh:mm:ssTZD’을 나타냄을 주목하자. 시간은 UTC에 대하여 시간과 분으로 시간대 상쇄를 표시하는 TZD가 붙은 협정 시(UTC)로 나타난다.

TP가 특정 파라미터 치환을 지원하는 TC에 의존하지 않는다는 것이 중요하다. 만일 파라미터 치환을 지원하지 않는 TC가 위의 커스텀 파라미터를 보게 되면 파라미터 (즉, 대체되지 않은 파라미터를 보냄)를 간단히 다음과 같이 발송할 것이다.

custom_xstart=$CourseSection.timeFrame.begin

TC로부터 온 두 종류의 실행(대체가능과 대체불능)을 처리하는 것은 TP의 책임이다.

LTI 실행을 위한 이 같은 데이터 항목 외에도 다음 섹션에서는 실행에 포함되어야 할 추가적인 보안 파라미터를 기술한다.  

4 LTI 보안모델

 

4.1 Basic 실행 인증관리

TP 관리자와 TC 관리자 또는 Basic 실행 링크를 만들 교수자 간에 Basic 실행 대역 상호작용을 이용하여 Basic 실행의 보안환경은 반드시 설정되어야 한다.

모범사례로, TP는 키를 근거로 데이터를 격리시켜야 한다. TP는 격리된 데이터를 위해 키를 정확히 어떻게 사용할 것이지를 결정해야 한다. 예를 들어, TP는 복수의 키를 단일 데이터 사일로에 맵핑시켜 주는 테이블을 유지할 수 있다. 아니면, TP는 데이터가 동일한 데이터 사일로에 속하는 모든 경우에 반복적으로 동일한 키를 사용하여 정렬할 수 있다.

특정 Basic 실행과 연계된 사용 가능한 두 개의 인증이 있다.

  1. TC 차원의 특정 TP와 연계된 인스턴스 기드와 비밀. TC 차원의 인스턴스 기드는 특정 TP로의 실행을 위한 TC의 신분을 설정한다. 하나의 TP에 대해 TC 차원의 비밀이 일단 설정되면 PT 도메인에 대한 모든 Basic 실행은 동일한 이 비밀을 사용할 것이다. TC 차원의 비밀을 사용해 신뢰할 수 있는 사용자 정보 옵션과 TC에 의해 적절히 유지되는 특정 TC 인스턴스 내의 여러 콘텍스트에 걸친 정보를 TP에게 제공한다. 특정 Basic 실행 링크에 사용될 TC 차원의 비밀번호를 선택하기 위해 TC는 Basic 실행 링크를 위한 실행 URL의 도메인 명을 점검한다. TC 차원의 비밀번호는 TC 차원 비밀번호 목록에서 실행 URL의 도메인 명을 우에서 좌로 스캔하며 조회된다. 예를 들어, 실행 URL이 http://launch.math.vendor.com/launch.php이면 TC는 특정한 것에서부터 일반적인 것 순서로 다음과 같은 TC 차원 비밀 키들을 조회할 것이다 : launch.math.vendor.com, math.vendor.com, and then vendor.com. 따라서 TP가 링크 URL을 생성해 교수자에게 주거나 카트리지 내의 링크에 삽입하는 경우, 특정 TP에 대한 TC 차원의 비밀과 적절한 실행을 매치시키기 위해 실행 URL 내에서 일관된 도메인 명을 사용하는 것은 중요하다.
  2. 특정 링크와 연계된 링크 차원의 키와 비밀. 이것은 TC내에서 Basic 실행 링크가 교수자에 의해 직접적으로 저작될 때 발생한다. 이 비밀은 교수자가 TP 콘텐츠/도구에 대한 액세스를 만들거나 얻을 경우와 TP 콘텐츠/도구가 TP 링크와 연계된 키와 비밀을 교수자에게 제공할 경우 자주 생성된다. Basic 실행은 TC 차원과 링크 차원에서의 둘 다, 둘 중 하나 또는 둘 다 없는 인증과 TC의 조합으로 발생할 수 있다. 둘 다 있을 경우, 요청에 서명하기 위해 실행은 TC 차원의 비밀을 사용한다. TC가 실행을 수행하고 싶은데 실행에 사용 가능한 키/비밀 조합이 없다면, TC는 OAuth를 이용하여 실행 데이터에 서명을 해선 안 된다. TC는 서명요청을 보낼 것인지 아닌지와 받을 것인지 아닌지를 결정할 수 있다. TC는 키/비밀 값의 부재를 오류로 취급할 수 있으며, 실행 수행을 거부할 수 있다.

 

4.2 x-www-form-urlencoded 메시지에 대한 OAuth 메시지 서명

OAuth 서명은 POST와 GET 요청을 위해 설계된 보안 메커니즘이다. 이 섹션은 POST를 이용해 직렬화되어 보내지는 실행과 다른 메시지들을 보호하기 위해서만 적용된다.

OAuth 1.0 명세서[OAuth, 10]는 어떻게 Basic 메시지 문자열을 구성하는지 명시하고, 비밀을 이용해 구성된 문자열에 사인한다. 서명은 POST 요청의 일부로서 전송된 다음 OAuth를 이용한 TP에 의해 입증된다. http://www.oauth.net에서 OAuth 1.0 명세서와 OAuth 서명 구현을 위한 간단한 소스 코드를 볼 수 있다.

OAuth 명세서에 따른 서명과정에는 파라미터 oauth_consumer_key를 포함한 실행 요청에 추가될 많은 값이 생성된다.

oauth_consumer_key=b289378f88d2929ctools.umich.edu

oauth_signature_method=HMACSHA1

oauth_timestamp=1244834250

oauth_nonce=1244834250435893000

oauth_version=1.0

oauth_signature=Xddn2A%2BjzwjgBIVYkvigaKxCdcc%3D

oauth_callback=about:blank

OAuth를 이용한 파라미터 oauth_consumer_key와 파라미터 oauth_consumer_secret은 메시지 서명을 위한 중요한 값이다. 파라미터 oauth_consumer_key는 일반 텍스트로 메시지에 전달되어 TC(예, LMS)가 TP(예, 어플리케이션)로 하여금 확인을 위해 해당 비밀을 찾아 볼 수 있도록 메시지를 보내는 것을 식별한다. 파라미터 oauth_consumer_secret는 메시지 서명에 사용된다.

파라미터 oauth_callback은 서명 전용 시나리오(OAuth 1.0 문서 섹션 6.2.3 [OAuth, 10])에서 실제 사용되지 않으므로 OAuth 라이브러리가 원할 경우 “about:blank”와 같은 아무 값이나 설정할 수 있다. 또한 파라미터 launch_presentation_return_url는 파라미터 oauth_callback과는 매우 다른 용도로 사용된다는 것을 주의해야 한다.

서명 전용 시나리오(예, 제 3자의 신분을 전달하기 위해 OAuth를 사용하지 않는다.)에서 OAuth를 사용하고 있기 때문에 파라미터 oauth_token는 필요가 없다.

도구공급자는 최소한 HMAC-SHA1 서명방법과 POST 데이터로 전달된 OAuth 데이터를 반드시 지원해야 한다. POST를 수신할 때, TP는 TC와의 관계를 위해 파라미터 oauth_consumer_key에 로컬로 저장되어야 하는 공유비밀을 활용하여 OAuth 인증을 수행할 것이다. 타임스탬프 또한 특정 시간 간격 내에 입증되어야 한다. 이 시간 간격은 TP가 정의하고 짧아야 한다(임시 값 또는 수 시간으로 설정하지 않았을 경우 대략 수 분 정도로 설정). TC와 TP의 동기화 시간에 의존한다.

TP는 임시 값들의 기록을 보관해야 하며 단 한 차례만 임시 값의 사용을 허용해야 한다. 타임스탬프와 결합한다는 것은 수용 가능한 시간 간격과 동일한 시간 동안 임시 값을 추적해야만 한다는 의미이다. 90분 정도의 임시 값을 유지하도록 90분의 시간 간격을 가지는 것을 권장한다.

본 보안 프로파일에서는 TC와 TP가 동기화된 시계를 가질 것을 요구한다는 점을 주의해야 한다. 설정 가능한 시간 간격을 활용해 약간 어긋난 시계를 조정할 수 있지만 간격을 너무 크게 설정하는 것은 권장하지 않는다.  

4.3 애플리케이션/XML 메시지 보안

이 서비스는 “Plain Old XML” (POX) 패턴을 따르며 메시지는 무결성을 보장하고 호출 시스템(TP)의 정체성을 확립하기 위해 OAuth 바디 서명에 의해 서명된다.

메시지의 바디는 요청된 특정 서비스 운용에 대한 스키마를 따르는 XML이며, 메시지는 특정 사용자/코스/리소스를 위한 도구의 실행에 사용된 파라미터 oauth_consumer_key와 파라미터 oauth_consumer_secret을 이용하여 서명된다.

OAuth[OBH, 11]를 사용하여 바디에 서명하는 절차는 웹 사이트 :

http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html

에서 확인할 수 있다.

이러한 서비스를 이용하는 모든 메시지는 application/xml 콘텐츠 유형을 사용한다는 것이 중요하다. 특히, OAuth 바디 서명 표준에서는 모든 요청에서의 파라미터 oauth_body_hash와 x-www-form-urlencoded 조합을 명시적으로 금하고 있다.

OAuth 바디 해싱 표준에 따라 모든 OAuth 파라미터는 Authorization 헤더의 일부분으로서 전송되어야 한다. 특히, 요청 URL과 POST 바디에서 온 OAuth 파라미터는 무시된다.

파라미터 oauth_body_hash[OBH, 11]는 바디 콘텐츠의 SHA-1 해시에 의해 계산되어 Authorization 헤더에 추가된다. 모든 OAuth 파라미터, HTTP method와 URL은 OAuth가 서명한 다른 요청처럼 서명된다. 바디 해시 값을 생산하는 것과는 달리 실제 POST 데이터는 파라미터 oauth_signature의 계산에 관여하지 않는다.

많은 라이브러리가 이미 Authorization 헤더에서의 OAuth 파라미터 전송을 지원하고 있기 때문에 대부분의 OAuth 라이브러리는 이러한 메시지를 위한 서명을 생성하고 입증할 수 있다.

아래에 서명된 요청 예시가 있다. Authorization 헤더에서의 행 바꿈은 값을 보다 쉽게 읽을 수 있게 해준다. 파라미터 oauth_signature는 단지 서명의 예시일 뿐인 아래 데이터에는 맞지 않다.

POST http://www.imsglobal.org/developers/BLTI/service_handle.php HTTP/1.0

Host: 127.0.0.1:80

ContentLength: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="HMACSHA1",

oauth_signature=”8auRpRdPY2KRXUrOyz3HKCs92y8%3D”

Contenttype:application/xml

<?xml version = “1.0” encoding = “UTF8”?>

<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>

ims_POXHeader 내 필드의 상세 정보는 IMS 일반 웹 서비스를 참조하면 된다. 헤더 항목에 대한 정의와 값은 IMS 일반 웹 서비스에서 직접 가져온 것이다. ‘지원하지 않는’ 또는 ‘실패한’과 같은 응답에 대한 헤더 값의 자세한 내용은 IMS 일반 웹 서비스 WSDL 바인딩 가이드라인[GWS, 06]의 “표 A1.2 ‘CodeMajor/severity’ matrix 해석”을 보면 된다.

각 서비스는 imsx_POXBody 요청에 대한 자체 XML 스키마와 특정 서비스 내 특정 동작에 대한 응답 콘텐츠를 규정한다.  

5 카트리지 내 Basic 실행 링크 표현

LTI v1.1 포맷에 변경상항이 없으므로, 이 섹션에서는 네임스페이스 버전을 발전시키지 않는다.

Basic LTI 링크는 단순화된 내장형 LTI 링크이다. Basic 실행 링크는 다음과 같은 IMS 커몬 카트리지의 리소스 섹션에 규정되어있다.

<resource identifier="I_00010_R" type="imsbasiclti_xmlv1p0">

<file href="I_00001_R/BasicLTI.xml"/>

</resource>

리소스 엔트리에 href는 Basic 실행 링크의 XML 설명을 포함한 카트리지 내 파일경로를 조회한다.

<?xml version=”1.0” encoding=”UTF8”?>

<cartridge_basiclti_link xmlns=”http://www.imsglobal.org/xsd/imslticc_v1p0”

xmlns:blti = "http://www.imsglobal.org/xsd/imsbasiclti_v1p0"

xmlns:lticm ="http://www.imsglobal.org/xsd/imslticm_v1p0"

xmlns:lticp ="http://www.imsglobal.org/xsd/imslticp_v1p0"

xmlns:xsi = "http://www.w3.org/2001/XMLSchemainstance"

xsi:schemaLocation = "http://www.imsglobal.org/xsd/imslticc_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticc_v1p0.xsd

http://www.imsglobal.org/xsd/imsbasiclti_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imsbasiclti_v1p0.xsd

http://www.imsglobal.org/xsd/imslticm_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticm_v1p0.xsd

http://www.imsglobal.org/xsd/imslticp_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticp_v1p0.xsd”>

<blti:title>Grade Book</blti:title>

<blti:description>Grade Book with many column types</blti:description>

<blti:custom>

<lticm:property name="keyname">value</lticm:property>

</blti:custom>

<blti:extensions platform="my.lms.com">

<lticm:property name="keyname">value</lticm:property>

</blti:extensions>

<blti:launch_url>url to the basiclti launch URL</blti:launch_url>

<blti:secure_launch_url>secure url to the basiclti launch URL</blti:secure_launch_url>

<blti:icon>url to an icon for this tool (optional)</blti:icon>

<blti:secure_icon>secure url to an icon for this tool (optional)></blti:secure_icon>

<blti:vendor>

<lticp:code>vendor.com</lticp:code>

<lticp:name>vendor.name</lticp:name>

<lticp:description>This is a vendor of learning tools.</lticp:description>

<lticp:url>http://www.vendor.com/</lticp:url>

<lticp:contact>

<lticp:email>support@vendor.com</lticp:email>

</lticp:contact>

</blti:vendor>

<cartridge_bundle identifierref="BLTI001_Bundle"/>

<cartridge_icon identifierref="BLTI001_Icon"/>

</cartridge_basiclti_link>

파라미처 launch_url에는 LTI에 전송하는 URL이 들어있다. 파라미터 secure_launch_url은 안전한 http가 필요한 경우 사용되는 URL이다.

파라미터 launch_url 또는 파라미터 secure_launch_url 중의 하나는 명시되어야 한다. 둘 다 명시할 수 있으며 이 경우 TC가 어느 것을 사용할지 정한다. 일반적으로, TC는 안전한 페이지에 도구를 저장할 때 파라미터 secure_launch_url을 사용하고, 안전하지 않은 페이지에 도구를 저장할 때 파라미터 launch_url을 사용한다. 따라서 어느 url을 사용하든 간에 TP 는 동일한 기능성을 제공한다는 것이 중요하다.

icon과 secure_icon 모두 선택사항이며 도구를 위한 아이콘으로 사용될 URL을 나타낸다.

카트리지 목록의 리소스 섹션에서 Basic 실행 링크가 정의 되면 필요할 때 조직 섹션에서 참조할 수 있다.

<item identifier="BasicLTI1" identifierref="I_00010_R">

<title>Homework Problems</title>

</item>

TC는 일반적으로 파라미터 basic_lti_link 항목 제목 보다는 사용자 인터페이스의 item 항목 제목을 보여준다. 선택적 커스텀 섹션에서는 최초에 링크를 만들었던 시스템의 링크 내에 배치된 키/값 쌍이 포함될 수 있다. 예를 들어 링크가 전자교과서의 한 섹션인 경우 다음과 같이 설정될 것이다.

<parameter key="section">1.2.7</parameter>

이러한 파라미터들은 도구가 실행 될 때 외부도구로 반송된다. Basic 실행 링크에 불려 진 후 내보내지면 링크를 다시 만드는 목적이 아닌 한 custom은 불러오기/내보내기 프로세스에서 유지되어야 한다.

확장자 섹션은 호스팅 TC가 자체 키/값 쌍을 링크에 추가할 수 있게 한다. TC는 자신 또는 저작환경이 내보내기-불러오기 사이클 전반에 걸쳐 사용할 수 있는 정보를 저장하기 위해 확장자를 사용할 것이다. 동일한 Basic 실행 설명자에 다수의 확장자 세트가 포함되도록 하기 위해 저작환경은 플랫폼속성을 추가하고 저작환경을 확인하는 식별자를 포함시켜야 한다.

설명자에 아이콘을 파라미터 cartridge_icon 항목을 사용하는 URL로 포함시키는 대신에 링크를 위한 아이콘으로 포함시키는 것이 가능하다. 아래와 같이 identifierref 속성은 아이콘 이미지가 포함된 링크를 가리키고 목록 내 Basic 실행 리소스 항목의 리소스 섹션에 종속된다.

<resource identifier="I_00010_R" type="imsbasiclti_xmlv1p0">

<file href="I_00001_R/BasicLTI.xml"/>

<dependency identifierref="BLTI001_Icon"/>

</resource>

<resource identifier=”BLTI001_Icon”

type=”associatedcontent/imscc_xmlv1p0/learning-application-resource”>

<file href="BLTI001_Media/learning_icon.gif"/>

</resource>

 

6 LTI와 학습 정보 서비스 활용

TP는 실행 요청 내에서 추가적인 파라미터를 포함한 TC에 의해 일부 IMS 학습정보 서비스(LIS) [LIS, 11]에 대한 접근 권한을 부여 받는다. TC가 LIS 서비스를 제공할 필요는 없지만 학생정보 시스템과 같은 제 3의 시스템은 이러한 서비스가 제공되는 종점이 될 것이다.

imskr1012-1_6.1

[그림 6.1 LIS 서비스를 이용하는 TP]

TC의 LIS 관련 서비스 지원은 선택사항이다. LTI 1.1에 소개된 결과 서비스는 별도의 문서 [LTI, 14 OM]에 기술되어 있다.

이 문서 범위 밖의 메커니즘이 TP 또는 다른 시스템에 제공하는 LIS 서비스와 상호작용하기 위해 TC가 특정 실행에 대한 데이터를 이용할 수 있다면 아래의 추가적인 실행 파라미터를 포함시킬 수 있다.

lis_person_sourcedid=school.edu:user (권장)

이 파라미터에는 실행을 수행하는 사용자 계정에 대한 LIS 식별자가 포함되어 있다. 예시 구문의 “school:user”는 필수 포맷이 아니다. 단순히 파라미터 lis_person_sourcedid가 고유 식별자(정규화 된 문자열)이다. 이 필드를 권장하며 필드 콘텐츠와 의미는 LIS [LIS, 11]가 규정한다.

lis_course_offering_sourcedid=school.edu:SI182F08 (권장)

lis_course_section_sourcedid=school.edu:SI182001F08 (권장)

위 파라미터들은 이 실행의 콘텍스트와 연계된 LIS 코스 식별자를 포함하고 있다. 이 필드를 권장하며 필드 콘텐트와 의미는 LIS [LIS, 11]가 규정한다.  

7 도구 소비자 프로파일

도구 소비자는 사용 가능한 서비스라는 것을 알리기 위해 도구 공급자에게 프로파일을 제공한다. 프로파일은 LIT 2와 동일한 포맷을 따르며 실행 요청의 일부로서 제공되는 몇 가지 정보를 카피한다. 이 기능 지원을 권장한다.

이 섹션에 기술된 소비자 프로파일을 지원하기 위해 $ToolConsumerProfile.url이라는 이름의 커스텀 파라미터 치환 변수는 Basic 실행 요청이 처리될 때 도구소비자 프로파일을 요청할 수도 있는 URL를 대신하여 정의 되어야 한다(부록 C – 커스텀 파라미터 치환 참조). URL은 1023자를 넘지 많아야 하며 URL에 lti_version 쿼리 파라미터를 추가하여 LTI의 버전을 명시해야 한다. 보통 실행 간에는 값을 교환해선 안 되고 일반적으로 도구 공급자는 URL과 특정 oauth_consumer_key 파라미터 간의 1 : 1 맵핑을 기대할 수 있다. 도구 소비자의 중요한 재구성이 있었거나 도구 소비자가 한 도메인에서 다른 도메인 옮겨 갔을 경우 값은 변할 수 있다. 도구 소비자는 반환된 프로파일의 유효기간을 나타내기 위해 Expires 헤더를 사용한다. 또한 각 도구 공급자를 위한 고유 프로파일 URL를 제공한다. TP가 TC 프로파일 URL을 요청할 때 파라미터를 달리 명명할 이유가 없는 한 tc_profile_url이라는 이름의 커스텀 파라미터를 추천한다. 즉, 아래의 커스텀 파라미터 설정을 사용하자.

tc_profile_url=$ToolConsumerProfile.url

도구 소비자는 커스텀 파라미터 전체가 명시되기를 기대하기 보다는 각 실행에서 생성 및 전달되어야 하는 URL을 나타내는 간단한 체크박스 인터페이스 구현을 위해 이 규칙을 사용한다.

그림 7.1에서는 application/vnd.ims.lti.v2.toolconsumerprofile+json의 미디어 유형을 지닌 JSON 문서인 완전한 도구소비자 프로파일의 사례를 제시한다.

imskr1012-1_7.1

그림 7.1 도구소비자 프로파일 표본

아래의 표에서는 프로파일의 요소와 Basic 실행 요청에 전달된 파라미터 간의 교신을 식별한다.

Profile name Launch parameter name
lti_version lti_version
product_instance/gui tool_consumer_instance_guid
service_owner/product_name tool_consumer_instance_name
service_owner/description tool_consumer_instance_description
service_owner/support/email tool_consumer_instance_contact_em
product_instance/product_info/product_family/code tool_consumer_info_product_family_code
product_instance/product_info/product_version tool_consumer_info_version

기능 요소는 도구소비자가 지원하는 메시지 유형을 선언할 때 사용된다. LTI 1에 대해 최소한 “basicltilaunchrequest”이 포함되어야 한다.

imskr1012-1_7.2

그림 7.2 에는 필요한 요소만 포함된 프로파일의 사례가 포함되어 있다.

그림 7.2 – 도구 소비자 프로파일의 최소 예

 

7.1 도구 소비자 프로파일에 대한 요청

동일한 도구 소비자에 대한 Basic 실행 요청이 요청한 커스텀 파라미터에 제공되는 URL에 대한 GET 요청을 전송하면서 도구 소비자 프로파일의 요청이 이루어진다. 요청된 프로파일의 LTI 버전을 명시하기 위한 쿼리 파라미터가 URL에 추가되어야 한다. 이 경우 LITI1-p2값이 사용되어야 한다. 예 :

GET /lti/ToolConsumerProfile?lti_version=LTI1p2HTTP/1.0

Host: lms.example.com

Accept: application/vnd.ims.lti.v2.toolconsumerprofile+json

회신은 application/vnd.ims.lti.v2.toolconsumerprofile+json 미디어 유형 (그림 7.1 참조)을 따르는 JSON 문서여야 한다. 예 :

HTTP/1.0 200 OK

Date: Tue, 18 Oct 2013 12:34:56 GMT

ContentType : application/vnd.ims.lti.v2.toolconsumerprofile+json

ContentLength : 2447

Expires: Tue, 18 Nov 2013 12:34:56 GMT

프로파일 유효기간은 회신에서 Expires 헤더를 통해 명시된다.

수령한 요청이 유효한 URL이 아니면 적절한 HTTP 오류 회신 코드가 반환되어야 한다.

HTTP/1.0 403 Forbidden

Date: Tue, 18 Oct 2013 12:34:56 GMT  

7.2 제공된 LTI 서비스

도구 소비자가 도구 공급자에게 제공한 LTI 서비스의 유효성을 선언하기 위해 프로파일의 “service_offered” 객체를 활용한다. 이 객체는 아래의 이름/값 쌍을 포함한다 :

  • @type – 서비스의 유형. 현재는 REST 서비스만 지원된다.
  • @id – 본 서비스 인스턴스를 식별하는 URI
  • endpoint – 본 서비스를 통해 이루어진 자원요청의 REST 종료시점을 규정하는 URI 양식 (URI는 제안된 IETF 표준 [IETF, 12]의 구문을 준수해야 한다)
  • format – 본 서비스에서 접속할 수 있는 콘텐트 (미디어) 유형의 리소스
  • action – 본 서비스가 지원하는 HTTP 요청행위

서비스 선언의 사례는 그림 7.1을 참조하자.  

부록 A – LTI 표준 어휘

LTI 표준은 확실하게 엔티티를 식별하기 위해 URN 값을 사용한다. 본 섹션은 컨텍스트 유형과 역할 값에 대한 URN 어휘를 포함한다.  

A.1 콘텍스트 유형 어휘

 

A.1.1 콘텍스트 유형에 대한 LIS 어휘

Handle Full URN
CourseTemplate urn:lti:contexttype:ims/lis/CourseTemplate
CourseOffering urn:lti:contexttype:ims/lis/CourseOffering
CourseSection urn:lti:contexttype:ims/lis/CourseSection
Group urn:lti:contexttype:ims/lis/Group

 

A.2 역할 어휘

 

A.2.1 시스템 역할에 대한 LIS 어휘

아래 표에서는 LIS 표준이 규정한 시스템 역할에 대한 URN 값을 나열한다.

Handle Full URN
SysAdmin urn:lti:sysrole:ims/lis/SysAdmin
SysSupport urn:lti:sysrole:ims/lis/SysSupport
Creator urn:lti:sysrole:ims/lis/Creator
AccountAdmin urn:lti:sysrole:ims/lis/AccountAdmin
User urn:lti:sysrole:ims/lis/User
Administrator urn:lti:sysrole:ims/lis/Administrator
None urn:lti:sysrole:ims/lis/None

 

A.2.2 기관 역할에 대한 LIS 어휘

아래 표에서는 LIS 표준이 규정한 기관 역할에 대한 URN 값을 나열한다.

Handle Full URN
Student urn:lti:instrole:ims/lis/Student
Faculty urn:lti:instrole:ims/lis/Faculty
Member urn:lti:instrole:ims/lis/Member
Learner urn:lti:instrole:ims/lis/Learner
Instructor urn:lti:instrole:ims/lis/Instructor
Mentor urn:lti:instrole:ims/lis/Mentor
Staff urn:lti:instrole:ims/lis/Staff
Alumni urn:lti:instrole:ims/lis/Alumni
ProspectiveStudent urn:lti:instrole:ims/lis/ProspectiveStudent
Guest urn:lti:instrole:ims/lis/Guest
Other urn:lti:instrole:ims/lis/Other
Administrator urn:lti:instrole:ims/lis/Administrator
Observer urn:lti:instrole:ims/lis/Observer
None urn:lti:instrole:ims/lis/None

 

A.2.3 콘텍스트 역할에 대한 LIS 어휘

LIS 표준 내 역할은 콘텍스트 유형과 선택적인 하위역할유형으로 구성된다. 해당되는 URN 값에 대한 핸들에는 /로 구분된 두 개의 요소가 포함된다.

Handle Full URN
Learner urn:lti:role:ims/lis/Learner
Learner/Learner urn:lti:role:ims/lis/Learner/Learner
Learner/NonCreditLearner urn:lti:role:ims/lis/Learner/NonCreditLearner
Learner/GuestLearner urn:lti:role:ims/lis/Learner/GuestLearner
Learner/ExternalLearner urn:lti:role:ims/lis/Learner/ExternalLearner
Learner/Instructor urn:lti:role:ims/lis/Learner/Instructor
Instructor urn:lti:role:ims/lis/Instructor
Instructor/PrimaryInstructor urn:lti:role:ims/lis/Instructor/PrimaryInstructor
Instructor/Lecturer urn:lti:role:ims/lis/Instructor/Lecturer
Instructor/GuestInstructor urn:lti:role:ims/lis/Instructor/GuestInstructor
Instructor/ExternalInstructor urn:lti:role:ims/lis/Instructor/ExternalInstructor
ContentDeveloper urn:lti:role:ims/lis/ContentDeveloper
ContentDeveloper/ContentDeveloper urn:lti:role:ims/lis/ContentDeveloper/ContentDeveloper
ContentDeveloper/Librarian urn:lti:role:ims/lis/ContentDeveloper/Librarian
ContentDeveloper/ContentExpert urn:lti:role:ims/lis/ContentDeveloper/ContentExpert
ContentDeveloper/ExternalContentExpert urn:lti:role:ims/lis/ContentDeveloper/ExternalContentExpert
Member urn:lti:role:ims/lis/Member
Member/Member urn:lti:role:ims/lis/Member/Member
Manager urn:lti:role:ims/lis/Manager
Manager/AreaManager urn:lti:role:ims/lis/Manager/AreaManager
Manager/CourseCoordinator urn:lti:role:ims/lis/Manager/CourseCoordinator
Manager/Observer urn:lti:role:ims/lis/Manager/Observer
Manager/ExternalObserver urn:lti:role:ims/lis/Manager/ExternalObserver
Mentor urn:lti:role:ims/lis/Mentor
Mentor/Mentor urn:lti:role:ims/lis/Mentor/Mentor
Mentor/Reviewer urn:lti:role:ims/lis/Mentor/Reviewer
Mentor/Advisor urn:lti:role:ims/lis/Mentor/Advisor
Mentor/Auditor urn:lti:role:ims/lis/Mentor/Auditor
Mentor/Tutor urn:lti:role:ims/lis/Mentor/Tutor
Mentor/LearningFacilitator urn:lti:role:ims/lis/Mentor/LearningFacilitator
Mentor/ExternalMentor urn:lti:role:ims/lis/Mentor/ExternalMentor
Mentor/ExternalReviewer urn:lti:role:ims/lis/Mentor/ExternalReviewer
Mentor/ExternalAdvisor urn:lti:role:ims/lis/Mentor/ExternalAdvisor
Mentor/ExternalAuditor urn:lti:role:ims/lis/Mentor/ExternalAuditor
Mentor/ExternalTutor urn:lti:role:ims/lis/Mentor/ExternalTuto
Mentor/ExternalLearningFacilitator urn:lti:role:ims/lis/Mentor/ExternalLearningFacilitator
Administrator urn:lti:role:ims/lis/Administrator
Administrator/Administrator urn:lti:role:ims/lis/Administrator/Administrator
Administrator/Support urn:lti:role:ims/lis/Administrator/Support
Administrator/Developer urn:lti:role:ims/lis/Administrator/Developer
Administrator/SystemAdministrator urn:lti:role:ims/lis/Administrator/SystemAdministrator
Administrator/ExternalSystemAdministrator urn:lti:role:ims/lis/Administrator/ExternalSystemAdministrator
Administrator/ExternalDeveloper urn:lti:role:ims/lis/Administrator/ExternalDeveloper
Administrator/ExternalSupport urn:lti:role:ims/lis/Administrator/ExternalSupport
TeachingAssistant urn:lti:role:ims/lis/TeachingAssistant
TeachingAssistant/TeachingAssistant urn:lti:role:ims/lis/TeachingAssistant/TeachingAssistant
TeachingAssistant/TeachingAssistantSection urn:lti:role:ims/lis/TeachingAssistant/TeachingAssistantSection
TeachingAssistnat/TeachingAssistantSectionAssociation urn:lti:role:ims/lis/TeachingAssistant/TeachingAssistantSectionAssociation
TeachingAssistant/TeachingAssistantOffering urn:lti:role:ims/lis/TeachingAssistant/TeachingAssistantOffering
TeachingAssistant/TeachingAssistantTemplate urn:lti:role:ims/lis/TeachingAssistant/TeachingAssistantTemplate
TeachingAssistant/TeachingAssistantGroup urn:lti:role:ims/lis/TeachingAssistant/TeachingAssistantGroup
TeachingAssistant/Grader urn:lti:role:ims/lis/TeachingAssistant/Grader

 

부록 B – 실행 관행

본 섹션에는 실행 가이드를 돕기 위한 비규범적 토론과 권장사항들이 포함되어 있다.  

B.1 링크 차원 인증으로 Basic 링크 만들기

TC가 링크 레벨 인증을 지원한다면 TC 안에 있는 LTI 링크 저작을 위한 교수자의 능력을 지원한다. 최소한의 제작스크린은 매우 단순하다.

imskr1012-1_B.1

[그림 B.1 TC 내부의 Basic 링크에 대한 제작 스크린]

또 다른 제작 인터페이스는 입력 필드에 XML basic_lti_link 서술자 붙여넣기를 허용할 수 있다.

imskr1012-1_B.2

[그림 B.2 XML 내 LTI 링크의 붙여넣기 표본]

모범 사례는 TC 시스템이 LTI 링크 저작의 URL/키/비밀과 XML/키/비밀 모두를 지원하는 것이다. 이러한 옵션들을 위한 사용자 인터페이스와 어디에서 어떻게 이러한 옵션들이 사용자에게 보여주는 지는 TC에 달려있다.

TC는 프레임 높이, “새 창으로 열기”와 같은 특징들을 추가하거나 제목 필드를 링크 엔트리에 추가할 수 있다.

imskr1012-1_B.3

[그림 B.3 TC 내에 다양한 옵션을 포함시키기 위한 인터페이스의 표본]

이러한 스크린들은 교수자가 코스 조직을 만들고 새로운 링크를 추가하는 TC 내에서 사용이 가능하다. 일반적인 접근방법은 코스 과정 내에 LTI 실행을 만드는 TC 링크의 또 하나의 유형을 만드는 것이다.

B.2 보안정책 / 샌드복싱 실행요청

TC 시스템은 TC 관리자와 교수자가 제어할 수 있는 특징들과 관련된 여러 보안 정책을 시행할 것이다. 다음은 일부 고려사항들이다 :

  • TC 시스템은 이름과 e-mail 같은 사용자 식별 정보를 신뢰성 있는 TP들의 집합에게 전송하는 것을 제한할 수 있다.
  • TC 관리자는 오직 확실하게 입증되고/믿을 수 있는 교수자들 만이 자신들의 LTI 링크를 만들 수 있도록 허용할 수 있다.
  • TC 시스템은 TP에 전달된 데이터 항목들을 추가로 감축/샌드박싱하는 교수자의 능력을 원할 수 있다.

어느 교수자가 LTI 링크를 만들지, LTI를 이용하여 어떤 URL을 실행 할 수 있을지 또는 어떤 데이터를 특정 TP와 공유할지 등을 TC 시스템이 어떻게 제어할지 명시하는 것은 이 문서 범위를 벗어나는 일이다.  

B.3 역할

일반적으로 LIS에서 사용되는 일부 역할에는 학습자, 교수자, 관리자, 보조교수자, 콘텐츠 개발자 그리고 멘토 등이 있다. 다중역할은 콤마로 구분하여 나타낼 수 있다. TC 시스템은 사용자를 위해 적절한 역할을 가능한 많이 가지고 있어야 한다(많을수록 좋다). TC 시스템은 단순 TP가 교수자 역할과 그룹 사용자의 존재 또는 부재를 교수자 역할이 있는 TP(읽기-쓰기-구성)와 없는 TP(읽기)로 구분한다는 것을 알아야 한다.  

B.4 비-콘텍스트 LTI 실행

LTI 링크는 전형적으로 콘텍스트 안에서 사용되지만, 콘텍스트의 일부가 아닌 링크를 실행하기 위해 LTI를 사용하는 것 또한 가능하다. TC 내 포탈 또는 글로벌 메뉴의 일부 인 메뉴 항목이 비-콘텍스트 실행의 한 예이다.

비-콘텍스트 실행 지원은 TP와 TC 모두에게 선택사항이다.

LTI 실행이 비-콘텍스트 배치로부터 오는 경우, 콘텍스트 정보는 단순히 생략되고 실행은 콘텍스트 정보 없이 사용자와 기관 정보를 포함할 것이다.  

B.5 LTI 샘플 실행

LTI 실행 프로토콜은 위에 서술된 LTI 파라미터를 가진 실행 URL을 위한 OAuth 서명으로 적절히 서명된 POST이다.

가장 일반적인 실행에 접근하는 방법은 TC가 브라우저로 형식을 배출한 다음 코드를 포함시켜 그 형식을 자동으로 실행 URL에 제출하는 것이다. TP는 브라우저 내에서 입력 파라미터를 처리하고, 필요한 경우 세션정보를 설정하여 선택적으로 전송한다고 추정할 것이다.

여기에 “secret”의 비밀번호와 “12345”의 파라미터 oauth_consumer_key를 사용하는 HTML 형식의 샘플 있다.

<form action=http://www.imsglobal.org/developers/LTI/test/v1p1/tool.php

name=”ltiLaunchForm” method=”post”

encType=”application/x-www-form-urlencoded”>

<input type=”hidden” name=”context_id” value=”456434513”/>

<input type=”hidden” name=”context_label” value=”SI182”/>

<input type=”hidden” name=”context_title” value=”Design of Personal Environments”/>

<input type=”hidden” name=”launch_presentation_css_url”

value=”http://www.imsglobal.org/developers/LTI/test/v1p1/lms.css”/>

<input type=”hidden” name=”launch_presentation_document_target” value=”frame”/>

<input type=”hidden” name=”launch_presentation_locale” value=”en-US”/>

<input type=”hidden” name=”launch_presentation_return_url”

value=”http://www.imsglobal.org/developers/LTI/test/v1p1/lms_return.php”/>

<input type=”hidden” name=”lis_outcome_service_url”

value=”http://www.imsglobal.org/developers/LTI/test/v1p1/common/

tool_consumer_outcome.php?b64=MTIzNDU6OjpzZWNyZXQ=”/>

<input type=”hidden” name=”lis_person_contact_email_primary” value=”user@school.edu”/>

<input type=”hidden” name=”lis_person_name_family” value=”Public”/>

<input type=”hidden” name=”lis_person_name_full” value=”Jane Q. Public”/>

<input type=”hidden” name=”lis_person_name_given” value=”Given”/>

<input type=”hidden” name=”lis_person_sourcedid” value=”school.edu:user”/>

<input type=”hidden” name=”lis_result_sourcedid” value=”feb-123-456-2929::28883”/>

<input type=”hidden” name=”lti_message_type” value=”basic-lti-launch-request”/>

<input type=”hidden” name=”lti_version” value=”LTI-1p0”/>

<input type=”hidden” name=”oauth_callback” value=”about:blank”/>

<input type=”hidden” name=”oauth_consumer_key” value=”12345”/>

<input type=”hidden” name=”oauth_nonce” value=”93ac608e18a7d41dec8f7219e1bf6a17”/>

<input type=”hidden” name=”oauth_signature” value=”QWgJfKpJNDrpncgO9oXxJb8vHiE=”/>

<input type=”hidden” name=”oauth_signature_method” value=”HMAC-SHA1”/>

<input type=”hidden” name=”oauth_timestamp” value=”1348093590”/>

<input type=”hidden” name=”oauth_version” value=”1.0”/>

<input type=”hidden” name=”resource_link_description” value=”A weekly blog.”/>

<input type=”hidden” name=”resource_link_id” value=”120988f929-274612”/>

<input type=”hidden” name=”resource_link_title” value=”Weekly Blog”/>

<input type=”hidden” name=”roles” value=”Instructor”/>

<input type=”hidden” name=”tool_consumer_info_product_family_code” value=”ims”/>

<input type=”hidden” name=”tool_consumer_info_version” value=”1.1”/>

<input type=”hidden” name=”tool_consumer_instance_description”

value=”University of School (LMSng)”/>

<input type=”hidden” name=”tool_consumer_instance_guid” value=”lmsng.school.edu”/>

<input type=”hidden” name=”user_id” value=”292832126”/>

<input type=”submit” value=”Press to continue to external tool”/>

</form>

<script language=”javascript”>

document.ltiLaunchForm.submit();

</script>

이 형식은 브라우저에서 자바스크립트가 꺼졌을 경우에도 작동하도록 설계되었다. 사용자는 그냥 제출 버튼을 누르면 된다. 자바스크립트가 켜져 있으면 버튼은 바로 숨겨지고 형식은 자동을 제출된다.

아래는 OAuth 서명 계산 이전의 Basic 문자열이다.

POST&http%3A%2F%2Fwww.imsglobal.org%2Fdevelopers%2FLTI%2Ftest%2Fv1p1%2Ftool.php&context_id%3D456434513%26context_label%3DSI182%26context_title%3DDesign%2520of%2520Personal%2520Environments%26launch_presentation_css_url%3Dhttp%253A%252F%252Fwww.imsglobal.org%252Fdevelopers%252FLTI%252Ftest%252Fv1p1%252Flms.css%26launch_presentation_document_target%3Dframe%26launch_presentation_locale%3Den-US%26launch_presentation_return_url%3Dhttp%253A%252F%252Fwww.imsglobal.org%252Fdevelopers%252FLTI%252Ftest%252Fv1p1%252Flms_return.php%26lis_outcome_service_url%3Dhttp%253A%252F%252Fwww.imsglobal.org%252Fdevelopers%252FLTI%252Ftest%252Fv1p1%252Fcommon%252Ftool_consumer_outcome.php%253Fb64%253DMTIzNDU6OjpzZWNyZXQ%253D%26lis_person_contact_email_primary%3Duser%2540school.edu%26lis_person_name_family%3DPublic%26lis_person_name_full%3DJane%2520Q.%2520Public%26lis_person_name_given%3DGiven%26lis_person_sourcedid%3Dschool.edu%253Auser%26lis_result_sourcedid%3Dfeb-123-456-2929%253A%253A28883%26lti_message_type%3Dbasic-lti-launch-request%26lti_version%3DLTI-1p0%26oauth_callback%3Dabout%253Ablank%26oauth_consumer_key%3D12345%26oauth_nonce%3D93ac608e18a7d41dec8f7219e1bf6a17%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1348093590%26oauth_version%3D1.0%26resource_link_description%3DA%2520weekly%2520blog.%26resource_link_id%3D120988f929-274612%26resource_link_title%3DWeekly%2520Blog%26roles%3DInstructor%26tool_consumer_info_product_family_code%3Dims%26tool_consumer_info_version%3D1.1%26tool_consumer_instance_description%3DUniversity%2520of%2520School%2520%2528LMSng%2529%26tool_consumer_instance_guid%3Dlmsng.school.edu%26user_id%3D292832126

위 문자열에서는 모든 라인 랩핑이 제거되어야 한다. 모든 POST 값은 Basic 문자열에 포함된다는 것을 주의해야 한다.  

B.6 적합성

LTI에 대한 적합성은 IMS CC-LTI 연합으로부터 부여되는 것과 TC와 TP 구현을 위한 자격시험으로 구성된다. 아래의 CC LTI 연합 사이트를 방문하면 적합성에 대한 추가적인 정보를 볼 수 있다 :

http://www.imsglobal.org/cc/alliance.html.  

B.7 관리자 / 교수자 사용자 인터페이스 / 커스텀 파라미터

사용자 인터페이스가 온전히 TC를 따르므로 실제로 아주 효과적으로 발전한 여러 사용자 인터페이스 패턴들이 있다. 아래에 두 가지 주요 유스케이스 패턴이 명시되어 있다.  

B.7.1 교수자의 새로운 도구 제작

TC가 관리자의 조치 없이 교수자로 하여금 TP로부터 URL, 키와 비밀 등을 얻어 코스 구조에 연결함으로써 도구를 배치하도록 한 경우는 교수자가 관리자의 도움을 요청하지 않고 커스텀 파라미터를 입력하도록 하는 것이 좋은 방법이다. 일부 TP는 제대로 기능하기 위해 커스텀 파라미터가 필요하다. 또한 교수자가 카트리지 내에서 LTI 링크를 가진 IMS 커몬 카트리지를 만드는 경우 도구 배치를 위한 잦은 커스텀 파라미터 설정은 카트리지 저작에 있어 필수적인 부분이다.  

B.7.2 관리자는 도구 제작, 교수자는 도구 배치

또 다른 일반적인 경우는 관리자가 새로운 도구(키/비밀/url)를 만들게 하고 그 다음 교수자가 사전에 구성된 도구를 코스에 배치하도록 하는 것이다. 이 유스케이스의 경우 교수자는 결코 url/키/비밀 값을 다룰 수 없다. 또한 교수자가 각 배치를 위해 커스텀 파라미터를 설정하고 늘릴 수 있도록 하는 것이 중요하다. 이러한 파라미터들은 TP가 작동하기 위해 필요하며 교수자가 IMS 커몬 카트리지로 내보내지는 코스를 TC 내에 구축하는데도 필요하다. 교수자에게 커스텀 파라미터를 설정하기 위한 옵션을 항상 줄 필요는 없지만 커스텀 파라미터를 설정하기 위해 관리자가 사용자 인터페이스를 공개하도록 선택할 수 있어야 한다.  

부록 C – 커스텀 파라미터

대체 가능한 커스텀 파라미터를 위한 지원은 선택적이고 TP는 이러한 파라미터가 대체되지 않은 형식에서 TC로부터 올 것을 예상해야 한다.  

C.1 LTI 사용자 변수

Message Variable Name Description
$User.id LaunchMixin.user_id(이는 TC 내 사용자에 대한 로컬 식별자이다.)
$User.image 프로파일 사진이나 아바타로 사용하기에 적합한 사용자의 이미지가 포함된 URL
$User.username 사용자를 LMS에 알리는 사용자 명. 사용자 명은 일반적으로 사용자가 로그인 시 사용하는 이름
$User.org 사용자의 조직적 특성을 기술하는 URI. 예를 들어 ldap://URI. 콤마를 이용하여 다수의 URI를 구분할 수 있다.
$User.scope.mentor 현재 사용자가 멘토로 접속할 수 있는 콤마로 구분된 사용자 ID 값의 목록

 

C.2 LIS 사람 변수

Message Variable Name XPath for value from LIS Database
$Person.sourcedId personRecord/sourcedid
$Person.name.full personRecord/person/formname/ [formnameType/instanceValue/text="Full"]/formattedName/text
$Person.name.family personRecord/person/name/partName [instanceName/text="Family”]/instanceValue/text
$Person.name.given personRecord/person/name/partName [instanceName/text="Given”]/instanceValue/text
$Person.name.middle personRecord/person/name/partName [instanceName/text="Middle”]/instanceValue/text
$Person.name.prefix personRecord/person/name/partName [instanceName/text="Prefix”]/instanceValue/text
$Person.name.suffix personRecord/person/name/partName [instanceName/text="Suffix”]/instanceValue/text
$Person.address.street1 personRecord/person/address/[addressType/instanceValue/text="Preferred"] addressPart/nameValuePair/ [instanceName/text="NonFieldedStreetAddress1"]/instanceValue/text/text[ii]
$Person.address.street2 personRecord/person/address/[addressType/instanceValue/text="Preferred"] addressPart/nameValuePair [instanceName/text="NonFieldedStreetAddress2"]/instanceValue/text
$Person.address.street3 personRecord/person/address/[addressType/instanceValue/text="Preferred"] addressPart/nameValuePair/ [instanceName/text="NonFieldedStreetAddress3"] /instanceValue/text
$Person.address.street4 personRecord/person/address/[addressType/instanceValue/text="Preferred"] addressPart/nameValuePair/ [instanceName/text="NonFieldedStreetAddress3"] /instanceValue/
$Person.address.locality personRecord/person/address/[addressType/instanceValue/text="Preferred"] addressPart/nameValuePair/[instanceName/text="Locality"]/instanceValue/text
$Person.address.statepr personRecord/person/address/[addressType/instanceValue/text="Preferred"] addressPart/nameValuePair/[instanceName/text="Statepr"]/instanceValue/text
$Person.address.country personRecord/person/address/[addressType/instanceValue/text="Preferred"] addressPart/nameValuePair/[instanceName/text="Country"]/instanceValue/text
$Person.address.postcode personRecord/person/address/[addressType/instanceValue/text="Preferred"] addressPart/nameValuePair/[instanceName/text="Postcode"]/instanceValue/text
$Person.address.timezone personRecord/person/address/[addressType/instanceValue/text="Preferred"] addressPart/nameValuePair/[instanceName/text="Timezone"]/instanceValue/text
$Person.phone.mobile personRecord/person/contactinfo [contactinfoType/instanceValue/text="Mobile"]/contactInfoValue/text
$Person.phone.primary personRecord/person/contactinfo [contactinfoType/instanceValue/text="Telephone_Primary"]/contactinfoValue/text
$Person.phone.home personRecord/person/contactinfo [contactinfoType/instanceValue/text="Telephone_Home"]/contactinfoValue/text
$Person.phone.work personRecord/person/contactinfo [contactinfoType/instanceValue/text="Telephone_Work"]/contactinfoValue/text
$Person.email.primary personRecord/person/contactinfo [contactinfoType/instanceValue/text="Email_Primary"]/contactinfoValue /text
$Person.email.personal person/contactinfo [contactinfoType/instanceValue/text="Email_Personal"]/contactinfoValue /text
$Person.webaddress personRecord/person/contactinfo [contactinfoType/instanceValue/text="Web‑Address"]/contactinfoValue/text
$Person.sms personRecord/person/contactinfo [contactinfoType/instanceValue/text="SMS"]/contactinfoValue/text

 

C.3 LTI 콘텍스트 변수

Message Variable Name Description
$Context.id 도구소비자 시스템 내의 콘텍스트 로컬 식별자
$Context.type 콘텍스트의 유형을 식별하는 콤마로 구분된 URN 값의 목록
$Context.label 콘텍스트 약식 라벨
$Context.title 콘텍스트 제목
$Context.org 콘텍스트의 조직적 특성을 기술하는 URI. 예를 들어 ldap://URI. 콤마를 이용하여 다수의 URI를 구분할 수 있다.
$Context.id.history 이전 콘텍스트 사본을 나타내는 콤마로 구분된 암호화된 URL 콘텍스트 ID 값의 목록. 가장 최근 사본의 ID가 목록에 최초로 나타나야 하며 시간의 역순으로 된 이전의 ID가 뒤를 따른다. 콘텍스트가 기존 콘텍스트의 사본으로서가 아니라 무에서 창출된다면 변수는 빈값을 가진다.

 

C.4 LTI 리소스 링크 변수

Message Variable Name Description
$ResourceLink.id 이는 실행이 일어나는 도구소비자 시스템 내의 리소스 링크에 대한 로컬 식별자이다.
$ResourceLink.title 리소스에 대한 일반 텍스트 제목
$ResourceLink.description 링크를 따라 보여주기에 적합한 링크의 목적지의 일반 텍스트 설명
$ResourceLink.id.history 이전 콘텍스트사본을 나타내는 콤마로 구분된 암호화된 URL 콘텍스트 ID 값의 목록. 가장 최근 사본의 ID가 목록에 최초로 나타나야 하며 시간의 역순으로 된 이전의 ID가 뒤를 따른다. 콘텍스트가 기존 콘텍스트 사본으로서가 아니라 무에서 창출된다면 변수는 빈값을 가진다.

 

C.5 LIS 코스 템플릿 변수

Message Variable Name XPath for value from LIS Database
$CourseTemplate.sourcedId courseTemplateRecord/sourcedId
$CourseTemplate.label courseTemplateRecord/courseTemplate/label/textString
$CourseTemplate.title courseTemplateRecord/courseTemplate/title/textString
$CourseTemplate.shortDescription courseTemplateRecord/courseTemplate/catalogDescription/shortDescription
$CourseTemplate.longDescription courseTemplateRecord/courseTemplate/catalogDescription/longDescription
$CourseTemplate.courseNumber courseTemplateRecord/courseTemplate/courseNumber/textString
$CourseTemplate.credits courseTemplateRecord/courseTemplate/defaultCredits/textString

 

C.6 LIS 코스 오퍼링 변수

Message Variable Name XPath for value from LIS Database
$CourseOffering.sourcedId courseOfferingRecord/sourcedId
$CourseOffering.label courseOfferingRecord/courseOffering/label
$CourseOffering.title courseOfferingRecord/courseOffering/title
$CourseOffering.shortDescription courseOfferingRecord/courseOffering/catalogDescription/shortDescription
$CourseOffering.longDescription ourseOfferingRecord/courseOffering/catalogDescription/longDescription
$CourseOffering.courseNumber courseOfferingRecord/courseOffering/courseNumber/textString
$CourseOffering.credits courseOfferingRecord/courseOffering/defaultCredits/textString
$CourseOffering.academicSession courseOfferingRecord/courseOffering/defaultCredits/textString

 

C.7 LIS 코스 섹션 변수

Message Variable Name XPath for value from LIS Database
$CourseSection.sourcedId courseSection/sourcedId
$CourseSection.label courseSectionRecord/courseSection/label
$CourseSection.title courseSectionRecord/courseSection/title
$CourseSection.shortDescription courseSectionRecord/courseSection/catalogDescription/shortDescription
$CourseSection.longDescription courseSectionRecord/courseSection/catalogDescription/longDescription
$CourseSection.courseNumber courseSectionRecord/courseSection/courseNumber/textString
$CourseSection.credits courseSectionRecord/courseSection/defaultCredits/textString
$CourseSection.maxNumberofStudents courseSectionRecord/courseSection/maxNumberofStudents
$CourseSection.numberofStudents courseSectionRecord/courseSection/numberofStudents
$CourseSection.dept courseSectionRecord/courseSection/org[type/textString="Dept"]/orgName/textString
$CourseSection.timeFrame.begin courseSectionRecord/courseSection/timeFrame/begin
$CourseSection.timeFrame.end courseSectionRecord/courseSection/timeFrame/end
$CourseSection.enrollControl.accept courseSectionRecord/courseSection/enrollControl/enrollAccept
$CourseSection.enrollControl.allowed courseSectionRecord/courseSection/enrollControl/enrollAllowed
$CourseSection.dataSource courseSectionRecord/courseSection/dataSource
$CourseSection.sourceSectionId createCourseSectionFromCourseSectionRequest/sourcedId

 

C.8 LIS 그룹 변수

Message Variable Name XPath for value from LIS Database
$Group.sourcedId groupRecord/sourcedId
$Group.grouptype.scheme groupRecord/group/groupType/scheme/textString
$Group.grouptype.typevalue groupRecord/group/groupType/typevalue/textString
$Group.grouptype.level groupRecord/group/groupType/typevalue/level/textString
$Group.email groupRecord/group/email
$Group.url groupRecord/group/url
$Group.timeFrame.begin groupRecord/group/timeframe/begin
$Group.timeFrame.end groupRecord/group/timeframe/end
$Group.enrollControl.accept groupRecord/group/enrollControl/enrollAccept
$Group.enrollControl.allowed groupRecord/group/enrollControl/enrollAllowed
$Group.shortDescription groupRecord/group/description/shortDescription
$Group.longDescription groupRecord/group/description/longDescription
$Group.parentId groupRecord/group/relationship[relation="Parent"]/sourcedId

 

C.9 LIS 멤버십 변수

Message Variable Name XPath for value from LIS Database
$Membership.sourcedId membershipRecord/sourcedId
$Membership.collectionSourcedId membershipRecord/membership/collectionSourcedId
$Membership.personSourcedId membershipRecord/membership/member/personSourcedId
$Membership.status membershipRecord/membership/member/role/status
$Membership.role membershipRecord/membership/member/role/roleType
$Membership.createdTimestamp membershipRecord/membership/member/role/dataTime
$Membership.dataSource membershipRecord/membership/member/role/dataSource

 

C.10 도구 소비자 변수

Message Variable Name Corresponding LTI value
$ToolConsumerProfile.url 도구소비자 프로파일 요청에 대한 URL

 

본문에 관하여

Title : IMS Global Learning Tools Interoperability Implementation Guide

Editor : Greg McFall (Pearson), Mark McKell (IMS Global), Lance Neumann (Blackboard), Stephen Vickers (IMS Global)

Version : 1.2

Version Date : 5 January 2015

Release : Final Release

Summary : This document offers implementation guidance for the IMS Global Learning Tools Interoperability (LTI) specification, which defines how remote tools and content can be integrated into a Learning Management System.

Purpose : This document is made available for adoption by the public community at large.

Document Location : http://www.imsglobal.org/lti/

Join the discussion and post comments on the LTI Public Forum:

http://www.imsglobal.org/community/forum/categories.cfm?catid=44

 

기고자 목록

The following individuals contributed to the development of this document:

Greg McFall Pearson

Matthew Stoelting Cengage

Mark McKell IMS Global

John Tibbetts VitalSource

Lance Neumann Blackboard

Stephen Vickers IMS Global

Charles Severance University of Michigan

Alan Zaitchik Jenzabar

Colin Smythe IMS Global

 

개정이력

Version No. Release Date Comments
v1.0 최종 발간 2011년 6월 30일 본 문서의 최종 본의 최초 공식 발간
v1.1 공개 초안 2011년 11월 21일 지적 및 평가를 위한 v 1.1 공개 초안 발간
v1.1 최종 발간 2012년 3월 13일 v1.1 최종 표준의 공식 발간
v1.1.1 최종 발간 2012년 6월 12일 역할_범위_멘토 실행 파라미터를 추가한 v1.1 최종 표준 공식 발간
v1.1.1 최종 발간(개정) 2012년 9월 20일 실행 코드 표본을 수정하기 위해 개정된 부록 B.5
v1.2 공개 초안 2014년 4월 7일 지적 및 평가를 위한 v1.2 공개 초안 발간
v1.2 최종 2015년 1월 5일 갱신된 커스텀 파라미터 대체변수

IMS Global Learning Consortium, Inc.(“IMS Global”)은 과학적, 실험적 그리고 학문적 협업의 목적으로만 본 문서에 담긴 정보를 발간하고 있다.

IMS Global은 표준의 정확도 또는 완성도에 대한 어떠한 보증이나 의사표현도 하지 않는다.

본 자료는 “As Is”와 “As Available” 기반으로 제공된다.

본 표준은 고지 없이 언제나 변경 및 개정될 수 있다.

본 표준의 유효도, 정확도 그리고 완성도 평가에 관한 책임은 온전히 평가 당사자에게 있다.

IMS Global은 모든 지적 사항과 제안을 감사히 받아들이겠습니다.

사이트 http://www.imsglobal.org를 통해 저희 IMS Global과 연락하실 수 있습니다.

문서명 : IMS Global Learning Tools Interoperability Implementation Guide v1.2 Final

날짜 : 5 January 2015

[i] 일반 텍스트는 도구공급자가 파라미터 값을 text/html이 아니라 text/plain으로 취급한다는 것을 의미한다. TC가 일반 텍스트 필드에 보다 작은 또는 보다 큰과 같은 문자를 포함시킨 경우 그러한 문자들은 에 띄지 않게 게시되어야 한다. 특히 TC는 HTML이 브라우저로 직접 건네진다는 기대로 HTML 태그를 일반 텍스트 필드에 내장시켜서는 안 된다. 예를 들어, 일반 텍스트 필드에 문자열 "Building <strong> Interoperability"이 포함된다면 TP는 이 데이터가 눈에 띄지 않게 하고 사용자가 “interoperability”라는 단어를 굵은 글씨체로 전환하기 보다는 보다 작은, 보다 큰 그리고 그들 사이의 텍스트를 문자 그대로 볼 수 있게 해야 한다.

[ii] “Preferred” 인스턴스명은 디폴트 LIS 어휘의 일부가 아니다. LIS의 LTI 프로파일에 이 용어를 추가함으로써 완전한 LIS 표준이 규정한 다중 주소 유형을 다루는 대신 단일 주소를 지원할 수 있게 할 것을 제안한다. “Preferred” 인스턴스명은 디폴트 LIS 어휘의 일부가 아니다. LIS의 LTI 프로파일에 이 용어를 추가함으로써 완전한 LIS 표준이 규정한 다중 주소 유형을 다루는 대신 단일 주소를 지원할 수 있게 할 것을 제안한다. “Preferred” 인스턴스명은 디폴트 LIS 어휘의 일부가 아니다. LIS의 LTI 프로파일에 이 용어를 추가함으로써 완전한 LIS 표준이 규정한 다중 주소 유형을 다루는 대신 단일 주소를 지원할 수 있게 할 것을 제안한다.