Learning Tools Interoperability (LTI)® Core Specification
학습 도구 상호운용성 핵심 표준 1.3
| Document Version: | 3 |
|---|---|
| Date Issued: | 16 April 2019 |
| Status: | This document is made available for adoption by the public community at large. |
| This version: | https://www.imsglobal.org/spec/lti/v1p3/ |
| Internal reference: | 1ETK-LTI-13:2025 |
|---|---|
| Proposal date: | 25 October 2025 |
| Adoption date: | 25 December 2025 |
| Translation completed: | December 2025 |
문서 식별 안내. 1ETK-LTI-13:2025는 1EdTech Korea의 내부 관리번호이며 1EdTech Consortium이 부여한 공식 표준번호가 아니다. 기술적 해석과 적합성 판단에는 1EdTech Consortium의 영어 원문을 기준으로 한다.
이 표준의 한국어 정보 및 공개는 2023년도 정부(과학기술정보통신부)의 재원으로 정보통신기획평가원의 지원을 받아 수행된 연구임(No.RS-2023-00229780, 맞춤형 교육을 위한 과정 중심 평가(학습진단) 인공지능 기술 개발)
요약
1. Overview
1 개요
This document defines the LTI ecosystem for integrating platforms with external tools or applications using the IMS Security Framework [SEC-10] for message and service authentication.
이 문서는 플랫폼과 외부 도구 또는 애플리케이션을 IMS 보안 프레임워크[SEC-10]를 사용하여 메시지 및 서비스 인증을 통해 통합하는 LTI 생태계를 정의한다.
1.1 Terminology
1.1 용어
IRI
The Internationalized Resource Identifier (IRI) extends the Uniform Resource Identifier (URI) scheme by using characters drawn from the Universal character set rather than US-ASCII per [RFC3987].
국제화 자원 식별자(IRI, Internationalized Resource Identifier)는 [RFC3987]에 따라 US-ASCII 대신 범용 문자 집합에서 가져온 문자를 사용하여 URI 체계를 확장한다.
LIS
Learning Information Services® (LIS®) is an IMS standard that defines how systems manage the exchange of information that describes people, groups, memberships, courses and outcomes.
학습 정보 서비스(Learning Information Services®, LIS®)는 사람, 그룹, 멤버십, 과정, 결과를 설명하는 정보를 시스템 간에 교환하는 방법을 정의하는 IMS 표준이다.
LTI
Learning Tools Interoperability (LTI) is an IMS standard for integration of rich learning applications within educational environments.
학습 도구 상호운용성(Learning Tools Interoperability®, LTI®)은 교육 환경 내에서 풍부한 학습 애플리케이션을 통합하기 위한 IMS 표준이다.
URI
The Uniform Resource Identifier (URI) utilizes the US-ASCII character set to identify a resource. Per [RFC2396], a URI "can be further classified as a locator, a name or both." Both the Uniform Resource Locator (URL) and the Uniform Resource Name (URN) are considered subspaces of the more general URI space.
통합 자원 식별자(Uniform Resource Identifier, URI)는 자원을 식별하기 위해 US-ASCII 문자 집합을 활용한다. [RFC2396]에 따르면 URI는 "위치자(locator), 이름(name) 또는 둘 다로 추가 분류될 수 있다." 통합 자원 로케이터(URL)와 통합 자원 이름(URN)은 더 일반적인 URI 공간의 하위 영역으로 간주된다.
URL
A Uniform Resource Locator (URL) is a type of URI that provides a reference to resource that specifies both its location and a means of retrieving a representation of it. An HTTP URI is a URL.
통합 자원 로케이터(Uniform Resource Locator, URL)는 자원의 위치와 해당 자원의 표현을 검색하는 방법을 모두 지정하는 참조를 제공하는 URI 유형이다. HTTP URI는 URL이다.
URN
A Uniform Resource Name (URN) is a type of URI that provides a persistent identifier for a resource that is bound to a defined namespace. Unlike a URL, a URN is location-independent and provides no means of accessing a representation of the named resource.
통합 자원 이름(Uniform Resource Name, URN)은 정의된 네임스페이스에 바인딩된 자원에 대한 영구 식별자를 제공하는 URI 유형이다. URL과 달리 URN은 위치와 독립적이며 명명된 자원의 표현에 접근하는 수단을 제공하지 않는다.
UUID
A 128-bit identifier that does not require a registration authority to assure uniqueness. However, absolute uniqueness is not guaranteed although the collision probability is considered extremely low. LTI recommends use of randomly or pseudo-randomly generated version 4 UUIDs.
등록 기관 없이 고유성을 보장할 수 있는 128비트 식별자이다. 절대적 고유성을 보장하지는 않지만 충돌 가능성이 매우 낮은 것으로 간주된다. LTI는 임의 또는 의사 난수 방식으로 생성된 버전 4 UUID 사용을 권장한다.
1.2 Conformance Statements
1.2 적합성 선언
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
규범적이지 않은 것으로 표시된 섹션뿐만 아니라, 이 표준에서 작성 지침, 다이어그램, 예제 및 주석은 모두 규범적이지 않다. 이 외의 모든 내용은 규범적(normative)이다.
The key words MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, REQUIRED, SHALL, SHALL NOT, SHOULD, and SHOULD NOT in this document are to be interpreted as described in [RFC2119].
이 문서에서 사용하는 주요 단어인 MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT은 [RFC2119]에서 설명된 대로 해석해야 한다.
An implementation of this specification that fails to implement a MUST/REQUIRED/SHALL requirement or fails to abide by a MUST NOT/SHALL NOT prohibition is considered nonconformant. SHOULD/SHOULD NOT/RECOMMENDED statements constitute a best practice. Ignoring a best practice does not violate conformance but a decision to disregard such guidance should be carefully considered. MAY/OPTIONAL statements indicate that implementers are entirely free to choose whether or not to implement the option.
이 표준의 구현에서 MUST/REQUIRED/SHALL 요구사항을 구현하지 않거나 MUST NOT/SHALL NOT 금지를 준수하지 않는 경우, 해당 구현은 비적합한 것으로 간주된다. SHOULD/SHOULD NOT/RECOMMENDED 문장은 모범 사례(best practice)를 구성한다. 모범 사례를 무시한다고 해서 적합성을 위반하는 것은 아니지만, 그러한 지침을 무시하는 결정을 내리기 전에 신중히 고려해야 한다. MAY/OPTIONAL 문장은 구현자가 해당 옵션을 구현할지 여부를 완전히 자유롭게 선택할 수 있음을 나타낸다.
The Conformance and Certification Guide for this specification may introduce greater normative constraints than those defined here for specific service or implementation categories.
이 표준의 적합성 및 인증 가이드에서는 특정 서비스 또는 구현 범주에 대해 여기서 정의된 것보다 더 큰 규범적 제약을 도입할 수 있다.
1.3 Document Set
1.3 문서 집합
1.3.1 Normative Documents
1.3.1 규범적 문서
LTI Advantage Conformance Certification Guide [LTI-CERT-13]
LTI Advantage 적합성 인증 가이드 [LTI-CERT-13]
The LTI Advantage Conformance Certification Guide describes the procedures for testing Platforms and Tools against the LTI v1.3 and LTI Advantage services using the IMS certification test suite.
LTI Advantage 적합성 인증 가이드는 IMS 인증 테스트 스위트를 사용하여 LTI v1.3 및 LTI Advantage 서비스에 대해 플랫폼과 도구를 테스트하는 절차를 설명한다.
Errata
정오표
The errata [LTI-CORE-13-ERRATA] details any erratum registered for this version of this specification since its publication.
정오표 [LTI-CORE-13-ERRATA]는 이 표준의 해당 버전이 발행된 이후 등록된 모든 오류 사항을 상세히 기술한다.
1.3.2 Informative Documents
1.3.2 참고 문서
LTI Advantage Implementation Guide [LTI-IMPL-13]
LTI Advantage 구현 가이드 [LTI-IMPL-13]
The LTI Advantage Implementation Guide provides information to lead you to successful implementation and certification of the LTI Core v1.3 specification and the set of LTI Advantage specifications.
LTI Advantage 구현 가이드는 LTI Core v1.3 표준 및 LTI Advantage 표준 집합의 성공적인 구현과 인증을 위한 정보를 제공한다.
2. History of this specification
2 이 표준의 역사
LTI has its origins in the IMS Tools Interoperability specifications released in 2006. IMS then developed this into what is now referred to as Learning Tools Interoperability, or LTI. In May 2010, IMS released a version named Basic LTI that described a simple mechanism for launching tools and content from within an LMS. This provided a small but useful subset of the functionality that underlies LTI 1.3 and future releases. When IMS added a simple outcomes service in March 2011, it renamed Basic LTI as LTI 1.0, with the new release including the simple outcomes service named as LTI 1.1.
LTI는 2006년에 발표된 IMS 도구 상호운용성(IMS Tools Interoperability) 표준에서 기원하였다. 이후 IMS는 이를 발전시켜 현재의 학습 도구 상호운용성(Learning Tools Interoperability, LTI)으로 명명하였다. 2010년 5월, IMS는 LMS 내에서 도구와 콘텐츠를 실행하기 위한 간단한 메커니즘을 설명하는 Basic LTI라는 버전을 발표하였다. 이 버전은 LTI 1.3 및 이후 릴리스 되는 표준의 기반이 되는 작은 기능 집합을 제공하였다. 2011년 3월, IMS가 간단한 결과 서비스(simple outcomes service)를 추가하면서 Basic LTI를 LTI 1.0으로 개명하였고, 새로운 릴리스에는 간단한 결과 서비스가 포함된 LTI 1.1로 명명되었다
LTI version 1.3 improves upon version [LTI-11] by moving away from the use of OAuth 1.0a-style signing for authentication and towards a new security model, using OpenID Connect, signed JWTs, and OAuth2.0 workflows for authentication.
LTI 버전 1.3은 OAuth 1.0a 스타일 서명 방식의 인증 사용을 제거하고 OpenID Connect, 서명된 JWT, OAuth2.0 워크플로우를 활용하는 새로운 보안 모델로 전환하여 LTI 1.1[LTI-11]에서 개선되었다.
3. Key concepts and elements
3 주요 개념과 요소
This document uses specific terminology and concepts that are important to understand.
이 문서는 이해해야 할 중요한 특정 용어와 개념을 사용한다.
3.1 Platforms and tools
3.1 플랫폼과 도구
An LTI-based ecosystem consists of two principal types of software services:
LTI 기반 생태계는 두 가지 주요 유형의 소프트웨어 서비스로 구성된다.
Platform. A tool platform or, more simply, platform has traditionally been a Learning Management Systems (LMS), but it may be any kind of platform that needs to delegate bits of functionality out to a suite of tools.
플랫폼. 도구 플랫폼(tool platform) 또는 간단히 플랫폼(platform)은 전통적으로 학습 관리 시스템(LMS)이었지만, 기능의 일부를 도구 모음에 위임할 필요가 있는 모든 종류의 플랫폼이 될 수 있다.
Tool. The external application or service providing functionality to the platform is called a tool. Examples of tools might include an externally hosted testing system or a server that contains externally hosted premium content.
도구. 플랫폼에 기능을 제공하는 외부 애플리케이션 또는 서비스를 도구(tool)라고 한다. 도구의 예로는 외부에 호스팅된 시험 시스템이나 외부에 호스팅된 프리미엄 콘텐츠를 포함하는 서버 등이 있다.
3.1.1 Historical identification of LTI integration parties
3.1.1 LTI 통합 대상의 명칭 변화
Note that, historically, LTI referred to platforms as tool consumers and referred to tools as tool providers. As this does not align with usage of these terms within the OAuth2 and OpenID Connect communities, LTI 1.3 no longer uses these terms and shifts to the terms platform and tool to describe the parties involved in an LTI integration.
과거 LTI 표준에서는 플랫폼을 도구 소비자(tool consumer), 도구를 도구 제공자(tool provider)로 지칭했다. 그러나 이러한 용어가 OAuth2 및 OpenID Connect 커뮤니티에서의 용어 사용과 일치하지 않기 때문에, LTI 1.3에서는 이러한 용어를 더 이상 사용하지 않고, LTI 통합에 관련된 대상을 설명하기 위해 플랫폼(platform)과 도구(tool)라는 용어로 변경하였다.
3.1.2 LTI Domain Model
3.1.2 LTI 도메인 모델
This non-normative diagram illustrates the general LTI domain model as defined in this document. Note that in the case of a single tenant model, some one to many relationships will de facto become one to one; for example, a tool will only have one deployment, a platform a single platform instance.
이 규범적이지 않은(non-normative) 다이어그램은 이 문서에서 정의된 일반적인 LTI 도메인 모델을 나타낸다. 단일 테넌트(single tenant) 모델의 경우, 일부 일대다 관계는 사실상 일대일 관계로 변환될 수 있다. 예를 들어, 하나의 도구는 단일 배포(deployment)만 가지며, 하나의 플랫폼은 단일 플랫폼 인스턴스만 가질 수 있다.

Figure 1 Diagram illustrating multiple the main entities making the LTI domain and their relationships.
[그림 1] LTI 도메인을 구성하는 주요 엔티티와 그 관계를 설명하는 다이어그램
3.1.3 Tool Deployment
3.1.3 도구 배포
A deployment of a tool defines the scope of contexts under which a tool is made available. For example, a tool may be deployed by the instructor into a single course, or the institution may deploy a tool across the whole institution, available to all institution's contexts, present and future.
도구의 배포(deployment)는 도구를 사용할 수 있는 컨텍스트의 범위를 정의한다. 예를 들어, 도구는 교사가 단일 강좌에 배포할 수도 있고, 기관 전체에 걸쳐 배포하여 현재 및 미래의 기관의 모든 컨텍스트에서 사용할 수 있게 할 수도 있다.
When a user deploys a tool within their tool platform, the platform MUST generate an immutable deployment_id identifier to identify the integration. A platform MUST generate a unique deployment_id for each tool it integrates with. Every message between the platform and tool MUST include the deployment_id in addition to the client_id.
사용자가 자신의 도구 플랫폼에 도구를 배포할 때, 플랫폼은 통합을 식별하기 위해 불변의deployment_id 식별자를 반드시(MUST) 생성해야 한다. 플랫폼은 통합하는 각 도구마다 고유한 deployment_id를 생성해야 한다. 플랫폼과 도구 간의 모든 메시지는 client_id와 함께 deployment_id를 반드시(MUST) 포함해야 한다.
A platform must always generate a deployment id even if the tool is only deployed once in the platform (see multi-tenant and single-tenant model below).
플랫폼은 도구가 플랫폼에 한 번만 배포된 경우에도 항상(MUST) deployment_id를 생성해야 한다.
A tool MUST thus allow multiple deployments on a given platform to share the same client_id and the security contract attached to it.
따라서 도구는 주어진 플랫폼에서 동일한 client_id와 해당 보안 계약(security contract)을 공유하면서 다중 배포를 반드시(MUST) 허용해야 한다.
3.1.3.1 Deployment id as account identifier
3.1.3.1 배포 ID를 계정 식별자로 사용하기
A common usage for the tool is to use the deployment id as an account identifier, for example attaching the institution's deployment to the institution's account, or a course-level deployment to a personal instructor's account.
도구의 일반적인 사용 사례는 배포 ID를 계정 식별자로 사용하는 것이다. 예를 들어, 기관의 배포를 기관 계정에 연결하거나, 강좌 수준의 배포를 개인 교사의 계정에 연결하는 방식이다.
3.1.3.2 Multi-tenant: tool registered once, deployed multiple times
3.1.3.2 다중 테넌트: 도구를 한 번 등록하고 여러 번 배포하기
In this deployment model, the tool is registered once; during registration, the security contract is established, keys are exchanged and a client_id is created by the platform. The tool may then be subsequently deployed once or multiple times, each deployment identified by its own lti deployment_id.
이 배포 모델에서는 도구가 한 번 등록된다. 등록 과정에서 보안 계약이 설정되고, 키가 교환되며, 플랫폼에 의해 client_id가 생성된다. 이후 도구는 한 번 또는 여러 번 배포될 수 있으며, 각 배포는 고유한 lti deployment_id로 식별된다.

Figure 2 Diagram illustrating multiple deployments of one Tool within the Platform using the same security contract.
[그림 2] 플랫폼 내에서 동일한 보안 계약을 사용하는 하나의 도구가 여러 번 배포된 상황을 나타내는 다이어그램
3.1.3.3 Single tenant: tool registered and deployed once
3.1.3.3 단일 테넌트: 도구를 한 번 등록하고 한 번 배포하기
In this deployment model, the registration and deployment are often done at the same time, the tool only being deployed once under the given client_id; Each deployment gets its own security contract, and there is a one to one relation between the client_id and deployment_id.
이 배포 모델에서는 등록과 배포가 종종 동시에 이루어지며, 도구는 주어진 client_id 하에서 한 번만 배포된다. 각 배포는 자체 보안 계약(security contract)을 가지며, client_id와 deployment_id 간에는 일대일 관계가 형성된다.

Figure 3 Diagram illustrating multiple deployments of one Tool within the Platform using unique security contracts.
[그림 3] 플랫폼 내에서 하나의 도구가 고유한 보안 계약을 사용하여 여러 번 배포된 상황을 나타내는 다이어그램.
3.1.4 LTI Links
3.1.4 LTI 링크
An LTI Link is a reference to a specific tool stored by a platform which may, for example, lead to a specific resource or content hosted on the tool, depending on the message_type of the LTI Link (see section § 4.3 Message claims for more information on message_type). The LTI Link is presented by the platform that provides access to the content of the tool and may be used as a means of performing LTI launches within the context of the platform.
LTI 링크는 플랫폼에 저장된 특정 도구에 대한 참조로, 예를 들어 해당 도구에서 호스팅하는 특정 자원이나 콘텐츠로 연결될 수 있다. 이 방식은 LTI 링크의 message_type에 따라 달라질 수 있다. LTI 링크는 도구의 콘텐츠에 접근할 수 있도록 플랫폼에 의해 제공되며, 플랫폼 컨텍스트 내에서 LTI 실행을 수행하는 수단으로 사용될 수 있다.
Typically, an LTI link contains a URL that points to the tool, along with some other metadata used for identification and presentation purposes that are unique to each link. Often LTI Links are presented to a user as an HTML link, but the two concepts should not be confused - an LTI Link is not just a URL, but may contain additional data that must be included in a launch to the tool.
일반적으로, LTI 링크는 도구를 가리키는 URL과 식별 및 표시 목적으로 사용되는 메타데이터를 포함하며, 각 링크 별로 고유하다. LTI 링크는 종종 HTML 링크로 사용자에게 표시되지만, 두 개념은 혼동해서는 안 된다. LTI 링크는 단순한 URL이 아니라, 도구 실행 시 포함해야 하는 추가 데이터도 포함할 수 있다.
Each LTI Link MUST be associated with a single deployment_id to identify the tool deployment it is linked to. A platform MAY display multiple instances of the same LTI Link within a page.
각 LTI 링크는 연결된 도구 배포를 식별하기 위해 단일 deployment_id와 반드시(MUST) 연관되어야 한다. 플랫폼은 페이지 내에서 동일한 LTI 링크의 여러 인스턴스를 표시할 수(MAY) 있다.
Each LTI Link connected to a particular resource (as described in section § 3.2 Contexts and resources below) MUST contain a platform unique identifier named resource_link_id. When an LTI Link is associated with a resource, it is referred to as a Resource Link (see section § 5.1 Resource link for more details).
특정 자원과 연결된 각 LTI 링크는 반드시(MUST) resource_link_id라는 플랫폼 고유 식별자를 포함해야 한다. LTI 링크가 자원과 연결된 경우, 이를 리소스 링크(Resource Link)라고 한다.
3.1.5 LTI Launch
3.1.5 LTI 실행
An LTI Launch refers to the process in which a user interacts with an LTI Link within the platform and is subsequently "launched" into a tool. The data between tool and platform in establishing a launch are defined upon tool integration into the platform. LTI platforms and tools use messages to transfer the user agent from one host to another through an HTML form post redirection containing the message payload. The data of this payload is determined by the message_type as discussed in section § 4.3.1 Message type and schemas of this document.
LTI 실행(LTI Launch)이란 사용자가 플랫폼 내에서 LTI 링크와 상호작용한 후, 해당 도구로 "실행(launched)"되는 과정을 말한다. 실행을 설정하기 위해 도구와 플랫폼 간에 교환되는 데이터는 도구가 플랫폼에 통합될 때 정의된다. LTI 플랫폼과 도구는 messages를 사용하여 HTML 폼 포스트 리디렉션을 통해 메시지 페이로드를 포함하여 사용자 에이전트를 한 호스트에서 다른 호스트로 전송한다. 이 페이로드의 데이터는 이 문서의 § 4.3.1 메시지 유형과 스키마(Message type and schemas)에서 논의된 message_type에 따라 결정된다.
3.2 Contexts and resources
3.2 컨텍스트와 자원
LTI generally organizes collections of resources into contexts:
LTI는 일반적으로 자원의 모음을 컨텍스트로 조직한다.
Context. LTI uses the term context where you might expect to see the word "course". A context is roughly equivalent to a course, project, or other collection of resources with a common set of users and roles. LTI uses the word "context" instead of "course" because a course is only one kind of context (another type could be "group" or "section").
컨텍스트. LTI는 "코스(course)"라는 단어 대신 컨텍스트라는 용어를 사용한다. 컨텍스트는 코스, 프로젝트, 혹은 공통 사용자와 역할 집합을 가진 다른 자원 모음과 대략적으로 동일하다. LTI가 "코스" 대신 "컨텍스트"라는 용어를 사용하는 이유는, 코스가 컨텍스트의 한 유형이기 때문이다.
Resource. Typically, within a context, users can integrate many LTI content items, or resources, sometimes arranging them into folders like "Week 1" or "Pre-Work". Conceptually, these platform integrations serve the same general purpose as any other type of item within the structure of a context's available content. In particular, commonly, users may scatter multiple LTI links through the content structure for a context that is linked to a particular resource. A platform MUST distinguish between each of these LTI links by assigning a resource_link_id to an LTI Link.
자원. 일반적으로 하나의 컨텍스트 내에서 사용자는 여러 LTI 콘텐츠 항목 또는 자원을 통합할 수 있으며, 이것을 "1주 차" 또는 "사전 학습"과 같은 폴더로 배열하기도 한다. 개념적으로 이러한 플랫폼 통합은 컨텍스트 내 가용 콘텐츠 구조에서 다른 항목들과 동일한 일반적인 목적을 제공한다. 특히, 특정 자원과 연결된 컨텍스트의 콘텐츠 구조에 여러 LTI 링크가 흩어져 있을 수 있다. 플랫폼은 LTI 링크에 resource_link_id를 할당하여 각각의 LTI 링크를 반드시(MUST) 구분해야 한다.
While all the LTI links integrated within a single context will share the same context_id, each link within the context will have a unique resource_link_id. This allows the hosting tool to differentiate the content or features it shows on a resource-by-resource basis (within a context) by, for example, providing configuration options such as a resource picker to the instructor or administrator after launching from a particular link.
하나의 컨텍스트에 통합된 모든 LTI 링크는 동일한 context_id를 공유하지만, 컨텍스트 내 각 링크는 고유한 resource_link_id를 가진다. 이것은 호스팅 도구가 특정 링크에서 실행된 후 교사나 관리자를 위해 리소스 선택기(resource picker)와 같은 구성 옵션을 제공하여, 자원별로 표시할 콘텐츠나 기능을 구분할 수 있도록 한다.
3.3 Users and roles
3.3 사용자와 역할
LTI generally recognizes that users make use of the integrated functionality offered by tools to platforms. These users typically come with a defined role with respect to the context within which they operate when using a tool.
LTI는 일반적으로 사용자가 플랫폼에 통합된 도구가 제공하는 기능을 사용한다고 간주한다. 사용자는 도구를 사용할 때 동작하는 컨텍스트에 따라 정의된 역할을 가진다.
User. An object representing a person with a current session within the platform and provided to the tool. The platform MAY delegate the authentication process to another system (for example, an LDAP server). A user MUST have a unique identifier within the platform, which acts as an OpenId Provider. Typical properties such as a first name, last name, and email address, MAY be shared with a tool. A tool or platform MUST NOT use any other attribute other than the unique identifier to identify a user when interacting between tool and platform.
사용자. 사용자는 플랫폼 내에서 현재 세션을 가진 사람을 나타내는 객체이며, 도구에 제공된다. 플랫폼은 인증 프로세스를 다른 시스템(예: LDAP 서버)에 위임할 수(MAY) 있다. 사용자는 플랫폼 내에서 고유한 식별자를 반드시(MUST) 가져야 하며, 이 식별자는 OpenID 제공자로 작동한다. 이름, 성, 이메일 주소와 같은 일반적인 속성은 도구와 공유될 수(MAY) 있다. 그러나 도구와 플랫폼 간의 상호작용에서 사용자를 식별하기 위해 고유 식별자 이외의 속성을 절대(MUST NOT) 사용해서는 안 된다.
Role. The role is one of the three main properties provided by the platform when a user launches via an LTI link to a tool (the other two items are the ID values that identify the user performing the launch, and the context containing the LTI link from which the launch initiated, all of which are optional). The role represents the level of privilege a user has been given within the context hosted by the platform. Typical roles are "learner", "instructor", and "administrator". Note that it's entirely possible that a user might have a different role in a different context (a user that is a "student" in one context may be an "instructor" in another, for example).
역할. 역할은 사용자가 LTI 링크를 통해 도구로 실행될 때 플랫폼이 제공하는 세 가지 주요 속성 중 하나이다. 역할은 사용자가 플랫폼에 의해 호스팅된 컨텍스트 내에서 부여받은 권한 수준을 나타낸다. 일반적인 역할로는 "학습자(learner)", "교사(instructor)", "관리자(administrator)"가 있다. 사용자가 다른 컨텍스트에서 다른 역할을 가질 가능성도 충분히 있다.
Tools may, in turn, use the role to determine the level of access they may give to a user.
도구는 사용자가 부여받은 역할을 사용하여 사용자에게 제공할 접근 수준을 결정할 수 있다.
3.4 Authentication, authorization, and capabilities
3.4 인증, 권한 부여, 기능
Authentication: Platforms in LTI acts as OpenID Providers and LTI Messages are OpenID tokens communicating the End-User's identity from the platform to the tool using the OpenID third-party initiated login flow. See the IMS Security Framework [SEC-10] for more details.
인증: LTI에서 플랫폼은 OpenID 제공자로 작동하며, LTI 메시지는 OpenID 써드파티 로그인 흐름을 사용하여 플랫폼에서 도구로 최종 사용자의 신원을 전달하는 OpenID 토큰으로 작동한다. 자세한 내용은 IMS 보안 프레임워크[SEC-10]를 참조할 수 있다.
The platform may use other authentication mechanisms to further verify identity or associate the platform user with a pre-existing tool's user account. The tool would traditionally only do this on a user's first launch from a given platform.
플랫폼은 다른 인증 메커니즘을 사용하여 신원을 추가로 확인하거나 플랫폼 사용자를 기존 도구의 사용자 계정에 연결할 수 있다. 도구는 전통적으로 사용자가 주어진 플랫폼에서 처음 실행되는 시점에만 이러한 작업을 수행한다.
Authorization. The process of identifying a user's right to gain access to resources or functionality. LTI addresses the overall authorization requirements for integrations between platform and tool at two different levels:
권한 부여: 사용자가 자원이나 기능에 접근할 권리를 식별하는 과정이다. LTI는 플랫폼과 도구 간 통합의 전반적인 권한 부여 요구사항을 두 가지 수준에서 다룬다.
Within the LTI layers themselves, LTI authorizes the capabilities (services, messages, or variables) a tool is allowed to use with the platform.
LTI의 계층 내에서 LTI는 도구가 플랫폼에서 사용할 수 있는 (서비스, 메시지, 또는 변수) 기능을 허가한다.
LTI supports the authorization work of the tool itself by reliably conveying contextually rich property data to the tool via messages. For example, for some tool to authorize a particular user to read an ebook, it might require the user's identity and role within a particular course context (all properties that the platform can pass along within a launch message).
LTI는 메시지를 통해 풍부한 컨텍스트 정보를 포함한 속성 데이터를 신뢰할 수 있게 도구로 전달하여, 도구가 자체적으로 권한을 부여하는 작업을 지원한다. 예를 들어, 도구가 특정 사용자가 전자책을 읽을 권한을 부여하려면, 해당 사용자의 신원 정보와 특정 코스 컨텍스트 내에서의 역할과 같은 데이터가 필요할 수 있다. 이러한 속성 데이터는 플랫폼이 실행 메시지(launch message)를 통해 전달할 수 있다.
Capability. A formal definition of some pattern of behavior. LTI v1.3 defines three broad kinds of capabilities:
기능: 일련의 동작 패턴에 대한 공식적인 정의이다. LTI v1.3은 세 가지 주요 유형의 기능을 정의한다.
Variable expansion
변수 확장
Messages
메시지
Services
서비스
The platform can advertise the capabilities it supports via the messages it sends to the tool.
플랫폼은 도구로 보내는 메시지를 통해 지원하는 기능을 알릴 수 있다.
3.5 Messages and services
3.5 메시지와 서비스
LTI supports two different kinds of integration between platforms and tools:
LTI는 플랫폼과 도구 간 통합을 지원하는 두 가지 방법을 제공한다.
Via messages (intermediated by a user's browser)
메시지: 사용자의 브라우저를 통해 중재
Via services (direct connections between platform and tool)
서비스: 플랫폼과 도구 간 직접 연결
Messages. When a user clicks on the embedded link for an LTI resource within the platform, the platform initiates an OpenID login which ultimately results in the platform passing the LTI Message (id_token) to the tool as defined in the IMS Security Framework [SEC-10].
메시지. 사용자가 플랫폼 내에서 LTI 리소스에 대한 임베디드 링크를 클릭하면, 플랫폼은 OpenID 로그인을 시작하여 최종적으로 IMS 보안 프레임워크[SEC-10]에서 정의된 대로 플랫폼이 LTI 메시지(id_token)를 도구로 전달하게 된다.
The resource link message, used to launch a tool's resource, is described in this document. Other kinds of launch messages might also be supported between platform and tool (in either direction).
도구의 리소스를 실행하기 위해 사용되는 리소스 링크 메시지(Resource Link Message)는 이 문서에서 설명된다. 플랫폼과 도구 간(양방향 모두) 다른 유형의 실행 메시지도 지원될 수 있다.
Receivers of LTI messages MUST ignore any contextual data contained in the message that they do not understand.
LTI 메시지 수신자는 메시지에 포함된 이해되지 않는 컨텍스트 데이터는 반드시(MUST) 무시해야 한다.
Services. When a tool needs to directly access a platform (or vice-versa), LTI 1.3 names these connections services (not mediated by a user with a browser); typically the providers of these services host them as simple REST-like HTTP-based web services.
서비스. 도구가 플랫폼에 직접 접근해야 하거나 (또는 그 반대의 경우), LTI 1.3은 이러한 연결을 서비스라고 명명한다. 이러한 연결은 사용자 브라우저로 중재되지 않는다. 일반적으로 이러한 서비스를 제공하는 주체는 REST 방식의 HTTP 기반 웹 서비스를 호스팅한다.
Authentication for messages and services. LTI v1.3 supports specific, separate (but related) authentication mechanisms for messages and services, defined in the IMS Security Framework [SEC-10]. LTI v1.3 requires the use of HTTPS (using TLS) for both messages and services. Additionally, implementers MUST use HTTPS for all URLs to resources included in messages and services (for example, URLs to service endpoints, or to static content like images and thumbnails).
LTI v1.3은 IMS 보안 프레임워크[SEC-10]에서 정의된 메시지와 서비스에 대해 각각 관련된 인증 메커니즘을 지원한다. LTI v1.3은 메시지와 서비스 모두에 대해 HTTPS(TLS 사용)의 사용을 반드시(MUST) 요구한다. 또한, 구현자는 메시지와 서비스에 포함된 모든 리소스(URL)에 대해 HTTPS를 반드시(MUST) 사용해야 한다.
4. LTI message general details
4 LTI 메시지 일반 세부사항
Messages between a platform and host are used to transfer the user agent between hosts (as described in section § 3.1.3 Tool Deployment of this document). This section further details the required structure of these messages. An LTI Message is the simplest way that a platform and tool communicate. Further requirements for structuring a message may be required depending on the scenario (such as when performing an LTI Launch).
플랫폼과 호스트 간의 메시지는 사용자 에이전트를 한 호스트에서 다른 호스트로 전송하는 데 사용된다. 이 섹션에서는 이러한 메시지에 필요한 구조를 상세히 설명한다. LTI 메시지는 플랫폼과 도구가 통신하는 가장 간단한 방법이다. 특정 시나리오(예: LTI 실행 수행 시)에 따라 메시지 구조에 대한 추가 요구사항이 있을 수 있다.
4.1 Additional login parameters
4.1 추가 로그인 매개변수
In addition to the OpenId 3rd Party Initiated parameters defined in the IMS Security Framework [SEC-10], this specification introduces a number of new parameters as defined below.
IMS 보안 프레임워크[SEC-10]에 정의된 OpenID 써드파티 로그인 매개변수 외에도, 이 표준은 아래에 정의된 여러 새로운 매개변수를 도입한다.
4.1.1 lti_message_hint login parameter
4.1.1 lti_message_hint 로그인 매개변수
The new optional parameter lti_message_hint may be used alongside the login_hint to carry information about the actual LTI message that is being launched.
새로운 선택적 매개변수 lti_message_hint는 login_hint와 함께 사용되어 실행 중인 실제 LTI 메시지에 대한 정보를 전달할 수 있다.
Similarly to the login_hint parameter, lti_message_hint value is opaque to the tool. If present in the login initiation request, the tool MUST include it back in the authentication request unaltered.
login_hint 매개변수와 유사하게, lti_message_hint의 값은 도구에 대해 불투명하다. 로그인 초기화 요청에 이 매개변수가 포함되어 있으면, 도구는 이를 변경하지 않고 인증 요청에 반드시(MUST) 포함해야 한다.
4.1.2 lti_deployment_id login parameter
4.1.2 lti_deployment_id 로그인 매개변수
The new optional parameter lti_deployment_id that if included, MUST contain the same deployment id that would be passed in the https://purl.imsglobal.org/spec/lti/claim/deployment_id claim for the subsequent LTI message launch.
새로운 선택적 매개변수 lti_deployment_id는 포함된 경우, 이후 LTI 메시지 실행을 위해 전달될 https://purl.imsglobal.org/spec/lti/claim/deployment_id 클레임에 있는 배포 ID와 반드시(MUST) 동일한 값을 포함해야 한다.
This parameter may be used by the tool to perform actions that are dependent on a specific deployment. An example of this would be, using the deployment id to identify the region in which a tenant linked to the deployment lives. Subsequently changing the redirect_url the final launch will be directed to.
이 매개변수는 도구가 특정 배포에 의존하는 작업을 수행하는 데 사용할 수 있다. 예를 들어, 배포 ID를 사용하여 해당 배포에 연결된 테넌트가 위치하는 지역을 식별하고, 최종 실행이 리디렉션될 redirect_url을 변경하는 경우를 들 수 있다.
4.1.3 client_id login parameter
4.1.3 client_id 로그인 매개변수
The new optional parameter client_id specifies the client id for the authorization server that should be used to authorize the subsequent LTI message request. This allows for a platform to support multiple registrations from a single issuer, without relying on the initiate_login_uri as a key.
새로운 선택적 매개변수 client_id는 이후 LTI 메시지 요청을 승인하는 데 사용될 권한 서버의 클라이언트 ID를 지정한다. 플랫폼은 하나의 발행자(issuer)에서 다중 등록을 지원할 수 있으며, initiate_login_uri를 키로 사용할 필요가 없다.
4.2 JSON Web Token
4.2 JSON 웹 토큰
LTI messages sent from the platform are OpenID Tokens. Messages sent from the tool are JSON Web Tokens (JWT) as the tool is not typically acting as OpenID Provider.
플랫폼에서 전송되는 LTI 메시지는 OpenID 토큰이다. 도구에서 전송되는 메시지는 JSON 웹 토큰(JWT)이며, 도구는 일반적으로 OpenID 제공자(OpenID Provider)로 작동하지 않기 때문이다.
The IMS Security Framework [SEC-10] describes the process by which a message sender encodes its message into a JWT.
IMS 보안 프레임워크[SEC-10]는 메시지 발신자가 메시지를 JWT로 인코딩하는 프로세스를 설명한다.
4.3 Message claims
4.3 메시지 클레임
Each message type supplements the fundamental claims mandated by the IMS Security Framework [SEC-10] with additional claims specific to the needs of that message type. LTI message types specified in other documents may reuse some message claims defined here for the LTI resource link launch request, when applicable. Each message type's specification defines which claims are required and which claims are optional.
각 메시지 유형은 IMS 보안 프레임워크[SEC-10]에서 요구하는 기본 클레임을 보완하며, 해당 메시지 유형의 필요에 따라 추가 클레임을 포함한다. 다른 문서에서 정의된 LTI 메시지 유형은 필요에 따라, 여기에서 정의된 LTI 리소스 링크 실행 요청의 메시지 클레임 중 일부를 재사용할 수 있다. 각 메시지 유형의 표준은 필수 클레임과 선택적 클레임을 명시적으로 정의한다.
In order to preserve forward compatibility and interoperability between platforms and tools, receivers of messages MUST ignore any claims in messages they do not understand, and not treat the presence of such claims as an error on the part of the message sender.
플랫폼과 도구 간의 전방 호환성 및 상호운용성을 보장하기 위해 메시지 수신자는 이해하지 못하는 메시지 클레임을 반드시(MUST) 무시해야 하며, 이러한 클레임의 존재를 메시지 발신자의 오류로 간주해서는 안 된다.
4.3.1 Message type and schemas
4.3.1 메시지 유형과 스키마
A message's https://purl.imsglobal.org/spec/lti/claim/message_type claim declares the general intent of the workflow. Each type of message will have its own value for this claim, indicating to the receiver of the message what kind of message the sender has sent.
메시지의 https://purl.imsglobal.org/spec/lti/claim/message_type 클레임은 워크플로우의 일반적인 의도를 선언한다. 각 메시지 유형은 이 클레임에 고유한 값을 가지며, 메시지 수신자에게 발신자가 어떤 유형의 메시지를 보냈는지 나타낸다.
Each message type has an associated JSON Schema definition that formally defines all its claims, and further defines which of those claims are optional or are required. An example of defining a message type is shown in the table below.
각 메시지 유형은 모든 클레임을 정식으로 정의하는 관련 JSON 스키마(JSON Schema) 정의를 가지며, 해당 클레임 중 선택적인 것과 필수적인 것을 구분하여 정의한다. 메시지 유형을 정의하는 예는 아래 표에서 확인할 수 있다.
‘5. Resource link launch request message’ 내용 중 표 참조
4.4 General LTI Launch
4.4 일반 LTI 실행 세부사항
A platform displaying an LTI Link to a user can perform an LTI Launch to a tool in the following manner. Depending on the messagetype of the link, the platform turns the message's payload JSON into a JWT to include in the launch request message body; each top-level property within this object becomes a _claim in the resulting JWT. After encoding as a JWT, the platform sends the message as a form post using the JWT or id_token parameter (see the IMS Security Framework [SEC-10]) for more details about the use of JWT and id_token), redirecting the user's browser to the tool's resource link URL.
플랫폼이 사용자에게 LTI 링크를 표시하는 경우, 도구로의 LTI 실행(LTI Launch)을 다음과 같은 방식으로 수행할 수 있다. 링크의 messagetype에 따라 플랫폼은 메시지의 페이로드 JSON을 JWT로 변환하여 실행 요청 메시지 본문에 포함한다. 이 객체 내 최상위 속성은 결과적으로 생성된 JWT의 클레임(claim)이 된다. JWT로 인코딩한 후, 플랫폼은 메시지를 JWT 또는 id_token 매개변수를 사용하여 폼 포스트(form post) 방식으로 전송하며, 사용자의 브라우저를 도구의 리소스 링크 URL로 리디렉션한다. JWT와 id_token 사용에 대한 자세한 내용은 IMS 보안 프레임워크[SEC-10]을 참조한다.
5. Resource link launch request message
5 리소스 링크 실행 요청 메시지
This document describes the composition of the LTI resource link launch request. The LTI ecosystem supports other kinds of messages defined in other specification documents (for example, the content item selection request message defined in the LTI Deep Linking [LTI-DL-20] specification).
이 문서는 LTI 리소스 링크 실행 요청의 구성을 설명한다. LTI 생태계는 다른 표준 문서에서 정의된 다양한 메시지 유형도 지원한다.
This message type encapsulates the fundamental workflow of a user clicking a link in the presented user experience of a context hosted by the platform and thereby launching out to an external tool that will provide a related, but separate, user experience. With this workflow, the platform sends this message, and the tool receives the message.
이 메시지 유형은 사용자가 플랫폼에서 제공하는 컨텍스트의 화면에서 링크를 클릭해 외부 도구로 이동하는 기본 워크플로를 설명한다. 외부 도구는 플랫폼과는 별개이지만 (플랫폼의 컨텍스트와) 관련된 사용자 경험을 제공한다. 이 과정에서 플랫폼은 메시지를 보내고, 도구는 이를 수신하여 실행한다.
The table below describes the name of the message type, the message_type, and the schema defined in the message type's launch.
아래 표는 메시지 유형의 이름, message_type, 해당 메시지 유형 실행에 정의된 스키마를 설명한다.
| Name | Message type | Schema |
|---|---|---|
| Resource link launch request | LtiResourceLinkRequest | Resource Link Request message JSON |

Figure 4 Diagram illustrating the flow of the LTI resource link launch request.
[그림 4] LTI 리소스 링크 실행 요청의 흐름을 나타내는 다이어그램
5.1 Resource link
5.1 리소스 링크
LTI uses the term resource link to refer to a link to a resource delivered by a tool. LTI intends platforms to present resource links to their users in a manner similar to any other resource within the structure of a context. In particular, LTI expects that a platform may embed multiple LTI resource links (to many different tools), scattered throughout the content structure for the context.
LTI는 리소스 링크(resource link)라는 용어를 도구가 제공하는 자원에 연결된 링크를 지칭하는 데 사용한다. LTI는 플랫폼이 컨텍스트 구조 내에서 다른 자원과 비슷한 방식으로 사용자에게 리소스 링크를 제공하도록 설계되었다. 특히, LTI는 플랫폼이 하나의 컨텍스트 내에 (다양한 도구로 연결된) 여러 LTI 리소스 링크를 통합하고, 이러한 링크를 컨텍스트의 콘텐츠 구조 전반에 배치할 수 있을 것이라고 기대한다.
LTI uses the resource_link_id property to help platforms and tools differentiate amongst multiple links embedded in a single context. While all the links within a context will share the same context_id, each LTI resource link will have a platform wide unique resource link ID. See section § 3.1.2 LTI Domain Model of this document for more details.
LTI는 resource_link_id 속성을 사용하여 플랫폼과 도구가 단일 컨텍스트에 포함된 여러 링크를 구별할 수 있도록 한다. 컨텍스트 내의 모든 링크는 동일한 context_id를 공유하지만, 각 LTI 리소스 링크는 플랫폼 전체에서 고유한 리소스 링크 ID를 가진다. 자세한 내용은 이 문서의 § 3.1.2 LTI 도메인 모델 섹션을 참조할 수 있다.
5.2 Launch from a resource link
5.2 리소스 링크에서의 실행
The LTI resource link launch request originates from within the platform starting from a single LTI resource link. It MUST identify the resource link related to the launch. It should, by best practice, include the context in which the launch originates; it should also, by best practice, include the user doing the launch except in the case where the user's identity is to remain anonymous. It should also, by best practice, include the roles of that user in the context of the launch and other information about the platform, the context, and the resource link, as defined in the following sections.
LTI 리소스 링크 실행 요청은 플랫폼 내의 단일 LTI 리소스 링크에서 시작된다. 이 요청은 반드시(MUST) 실행과 관련된 리소스 링크를 식별해야 한다. 또한, 모범 사례에 따라 실행이 시작된 컨텍스트를 포함해야 하며, 사용자의 신원이 익명으로 유지되어야 하는 경우를 제외하고, 실행을 수행하는 사용자를 포함해야 한다. 실행의 컨텍스트에서 해당 사용자의 역할과 플랫폼, 컨텍스트, 리소스 링크에 대한 기타 정보를 포함하는 것도 모범 사례에 해당한다.
The tool will use this information to decide whether to grant the user access to that resource, and, if so, how to present the resource to the user. For example, the view of a resource the tool gives to a student in the context of a course may differ from the view it offers to the course's instructor or administrator.
도구는 이 정보를 활용하여 해당 사용자에게 자원 접근 권한을 부여할지 여부를 결정하며, 접근이 허용된 경우, 사용자가 자원을 어떻게 볼 수 있을지를 결정한다. 예를 들어, 도구가 강좌의 학생에게 제공하는 자원의 보기(view)는 동일한 강좌의 교사나 관리자가 보는 자원의 보기와 다를 수 있다.
See § E. Full example resource link request for an example of a full resource link launch message payload (the examples in the following sections are excerpts from that example).
완전한 리소스 링크 실행 메시지 페이로드 예시는 § E. 리소스 링크 요청 전체 예시를 참조할 수 있다.
5.3 Required message claims
5.3 필수 메시지 클레임
LTI resource link launch request messages MUST contain all the claims included in this section (except in the case of anonymous launches, where sending the user identity is not required). Note that some of the claims compose several properties, only some of which are required.
LTI 리소스 링크 실행 요청 메시지는 이 섹션에 포함된 모든 클레임을 반드시(MUST) 포함해야 한다. 일부 클레임은 여러 속성으로 구성되며, 이 중 일부만 필수일 수 있다.
5.3.1 Message type claim
5.3.1 메시지 유형 클레임
The required https://purl.imsglobal.org/spec/lti/claim/message_type claim's value contains a string that indicates the type of the sender's LTI message. For conformance with this specification, the claim must have the value LtiResourceLinkRequest.
필수 클레임 https://purl.imsglobal.org/spec/lti/claim/message_type의 값은 발신자의 LTI 메시지 유형을 나타내는 문자열을 포함한다. 이 표준에 대한 적합성을 위해, 이 클레임의 값은 반드시(MUST) LtiResourceLinkRequest여야 한다.
5.3.2 LTI Version claim
5.3.2 LTI 버전 클레임
The required https://purl.imsglobal.org/spec/lti/claim/version claim's value contains a string that indicates the version of LTI to which the message conforms. For conformance with this specification, the claim must have the value 1.3.0.
필수 클레임 https://purl.imsglobal.org/spec/lti/claim/version의 값은 메시지가 준수하는 LTI 버전을 나타내는 문자열을 포함한다. 이 표준에 대한 적합성을 위해, 이 클레임의 값은 반드시(MUST) 1.3.0이어야 한다.
5.3.3 LTI Deployment ID claim
5.3.3 LTI 배포 ID 클레임
The required https://purl.imsglobal.org/spec/lti/claim/deployment_id claim's value contains a case-sensitive string that identifies the platform-tool integration governing the message. It MUST NOT exceed 255 ASCII characters in length.
필수 클레임 https://purl.imsglobal.org/spec/lti/claim/deployment_id의 값은 메시지를 관리하는 플랫폼-도구 통합을 식별하는 대소문자 구분 문자열을 포함한다. 이 값은 반드시(MUST) 255 ASCII 문자를 초과하지 않아야 한다.
The deployment_id is a stable locally unique identifier within the iss (Issuer).
deployment_id는 iss(Issuer) 내에서 안정적이고 로컬에서 고유한 식별자이다.
The deployment_id is an essential attribute for tools to associate to an account. See the section § 3.1.3 Tool Deployment for more details.
deployment_id는 도구가 계정과 연관을 맺는 데 필수적인 속성이다. 자세한 내용은 § 3.1.3 도구 배포를 참조할 수 있다.
5.3.4 Target Link URI
5.3.4 대상 링크 URI
The required https://purl.imsglobal.org/spec/lti/claim/target_link_uri MUST be the same value as the target_link_uri passed by the platform in the OIDC third party initiated login request.
필수 클레임 https://purl.imsglobal.org/spec/lti/claim/target_link_uri는 플랫폼이 OIDC 써드파티 초기화 로그인 요청에서 전달한 target_link_uri와 반드시(MUST) 동일해야 한다.
The target link URI is the actual endpoint for the LTI resource to display; for example, the url in Deep Linking ltiResourceLink items, or the launch_url in IMS Common Cartridges, or any launch URL defined in the tool configuration.
대상 링크 URI는 LTI 리소스를 표시하기 위한 실제 엔드포인트를 나타낸다. 예를 들어, Deep Linking의 ltiResourceLink 항목의 url, IMS Common Cartridges의 launch_url, 또는 도구 설정에서 정의된 실행 URL 등이 이에 해당한다.
A Tool should rely on this claim rather than the initial target_link_uri to do the final redirection, since the login initiation request is unsigned.
도구는 초기 target_link_uri가 서명되지 않았기 때문에 최종 리디렉션을 수행할 때 초기 값 대신 이 클레임을 사용하는 것이 권장된다.
5.3.5 Resource link claim
5.3.5 리소스 링크 클레임
The required https://purl.imsglobal.org/spec/lti/claim/resource_link claim composes properties for the resource link from which the launch message occurs, as in the following example:
필수 클레임 https://purl.imsglobal.org/spec/lti/claim/resource_link는 실행 메시지가 발생하는 리소스 링크의 속성을 구성한다. 아래는 예시이다.
{
...
"https://purl.imsglobal.org/spec/lti/claim/resource_link": {
...
"id": "200d101f-2c14-434a-a0f3-57c2a42369fd",
...
}
...
}id (REQUIRED). Opaque identifier for a placement of an LTI resource link within a context that MUST be a stable and locally unique to the deployment_id. This value MUST change if the link is copied or exported from one system or context and imported into another system or context. The value of id MUST NOT exceed 255 ASCII characters in length and is case-sensitive.
id (REQUIRED). 컨텍스트 내 LTI 리소스 링크의 배치를 나타내는 불투명 식별자이다. 이 값은 반드시(MUST) deployment_id에 대해 안정적이고 로컬에서 고유해야 한다. 링크가 한 시스템 또는 컨텍스트에서 다른 시스템이나 컨텍스트로 복사되거나 내보내져 가져올 경우, 이 값은 반드시(MUST) 변경되어야 한다. id 값은 반드시(MUST) 255 ASCII 문자를 초과하지 않아야 하며, 대소문자를 구분한다.
description (OPTIONAL). Descriptive phrase for an LTI resource link placement.
description (OPTIONAL). LTI 리소스 링크 배치를 설명하는 문구이다.
title (OPTIONAL). Descriptive title for an LTI resource link placement.
title (OPTIONAL). LTI 리소스 링크 배치에 대한 설명 제목이다.
5.3.6 User Identity claims
5.3.6 사용자 신원 클레임
Since any platform-originating message is an OpenID ID Token, user claims are defined in the OpenId Connect Standard Claims [OpenID-14] (section 5.1). LTI messages usually expect the following claims:
플랫폼에서 생성된 메시지는 모두 OpenID ID 토큰이므로, 사용자 클레임은 OpenID Connect Standard Claims [OpenID-14](섹션 5.1)에서 정의된다. LTI 메시지에서는 일반적으로 다음 클레임이 기대된다.
sub (Required): This is the only required user claim (except, see anonymous launch case following). When included, per OIDC specifications, the sub (Subject) MUST be a stable locally unique to the iss (Issuer) identifier for the actual, authenticated End-User that initiated the launch. It MUST NOT exceed 255 ASCII characters in length and is case-sensitive.
이것은 유일하게 필수적인 사용자 클레임이다. OIDC 표준에 따라 sub(Subject)는 실행을 시작한 실제 인증된 최종 사용자(End-User)에 대해 iss(Issuer)에 대해 안정적이고 로컬에서 고유해야 하며, 반드시(MUST) 255 ASCII 문자를 초과하지 않아야 하고 대소문자를 구분해야 한다.
given_name: Per OIDC specifications, given name(s) or first name(s) of the End-User. Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters.
OIDC 표준에 따라 최종 사용자의 이름(또는 첫 이름)을 나타낸다. 일부 문화권에서는 여러 이름을 가질 수 있으며, 이 경우 모든 이름이 공백으로 구분되어 표시될 수 있다.
family_name: Per OIDC specifications, surname(s) or last name(s) of the End-User. Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters.
OIDC 표준에 따라 최종 사용자의 성(또는 마지막 이름)을 나타낸다. 일부 문화권에서는 여러 성을 가지거나 성이 없을 수 있으며, 이 경우 모든 성이 공백으로 구분되어 표시될 수 있다.
name: Per OIDC specifications, end-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences.
OIDC 표준에 따라 최종 사용자의 전체 이름을 표시 가능한 형식으로 나타낸다. 이름의 모든 구성 요소를 포함할 수 있으며, 제목이나 접미사도 포함될 수 있다. 이름의 순서는 사용자의 로캘(locale) 및 선호도에 따라 결정된다.
email: Per OIDC specifications, end-User's preferred e-mail address.
OIDC 표준에 따라 최종 사용자가 선호하는 이메일 주소를 나타낸다.
locale: Per OIDC specifications, end-User's preferred locale as a BCP47 language tag.
OIDC 표준에 따라 최종 사용자가 선호하는 로캐일(locale)을 BCP47 언어 태그로 나타낸다.
Note that a platform may also add any other claims from the OpenID Connect Standard Claims list (for example, gender).
플랫폼은 OpenID Connect Standard Claims 목록의 다른 클레임(예: gender)을 추가할 수도 있다.
5.3.6.1 Anonymous launch case
5.3.6.1 익명 실행 사례
At times the platform may wish to send anonymous request messages to avoid sending identifying user information to the tool. To accommodate for this case, the platform may in these cases not include the sub claim or any other user identity claims. The tool must interpret the lack of a sub claim as a launch request coming from an anonymous user.
플랫폼이 도구에 사용자 신원 정보를 보내지 않기 위해 익명 요청 메시지를 전송하려는 경우가 있을 수 있다. 이러한 경우를 지원하기 위해, 플랫폼은 sub 클레임 또는 기타 사용자 신원 클레임을 포함하지 않을 수 있다. 도구는 sub 클레임이 없는 것을 익명 사용자로부터의 실행 요청으로 해석해야 한다.
5.3.7 Roles claim
5.3.7 역할 클레임
The required https://purl.imsglobal.org/spec/lti/claim/roles claim's value contains a (possibly empty) array of URI values for roles that the user has within the message's associated context.
필수 클레임 https://purl.imsglobal.org/spec/lti/claim/roles의 값은 메시지와 연관된 컨텍스트에서 사용자가 가진 역할을 나타내는 URI 값 배열을 포함한다.
If this list is not empty, it MUST contain at least one role from the role vocabularies described in role vocabularies.
이 목록이 비어 있지 않다면, 반드시(MUST) 역할 어휘(Role Vocabularies)에서 설명된 역할 중 최소 하나를 포함해야 한다.
If the sender of the message wants to include a role from another vocabulary namespace, by best practice it should use a fully-qualified URI to identify the role. By best practice, systems should not use roles from another role vocabulary, as this may limit interoperability.
메시지 발신자가 다른 어휘 네임스페이스에서 역할을 포함하려면, 모범 사례에 따라 완전한 URI를 사용하여 역할을 식별해야 한다. 모범 사례에 따르면, 상호운용성을 제한할 수 있으므로 다른 역할 어휘에서 역할을 사용하는 것을 지양해야 한다.
5.3.7.1 Anonymous launch case
5.3.7.1 익명 실행 사례
Note that the platform may, in the case of an anonymous launch, provide no user-identity claims, but may still include roles claim values. These indicate, if present, what roles the anonymous user has within the context of the launch. If the platform wishes to send no role information, it must still send the roles claim, but may leave the value of the roles claim array empty.
플랫폼이 익명 실행을 수행하는 경우, 사용자 신원 클레임을 제공하지 않을 수 있지만, 역할 클레임 값은 여전히 포함할 수 있다. 포함된 경우, 이것은 익명 사용자가 실행의 컨텍스트 내에서 가진 역할을 나타낸다. 플랫폼이 역할 정보를 전송하지 않으려는 경우에도, roles 클레임은 여전히(MUST) 전송되어야 하지만, roles 클레임 배열의 값은 비어 있을 수 있다.
5.4 Optional message claims
5.4 선택적 메시지 클레임
LTI resource link launch request messages MAY contain any of the following claims. LTI defines each group of claims with its own JSON Schema, and each message type schema aggregates one or more of those.
LTI 리소스 링크 실행 요청 메시지는 아래 클레임 중 일부를 포함할 수(MAY) 있다. LTI는 각 클레임 그룹을 자체 JSON 스키마로 정의하며, 각 메시지 유형 스키마는 하나 이상의 클레임 그룹을 집계한다.
5.4.1 Context claim
5.4.1 컨텍스트 클레임
The optional https://purl.imsglobal.org/spec/lti/claim/context claim composes properties for the context from within which the resource link launch occurs. The following is an example of this claim as if the resource link launch is in the context of a course:
선택적 클레임 https://purl.imsglobal.org/spec/lti/claim/context는 리소스 링크 실행이 발생하는 컨텍스트의 속성을 구성한다. 아래는 강좌 컨텍스트에서 리소스 링크 실행이 발생하는 경우의 예시이다.
{
...
"https://purl.imsglobal.org/spec/lti/claim/context": {
"id": "c1d887f0-a1a3-4bca-ae25-c375edcc131a",
"label": "CPS 435",
"title": "CPS 435 Learning Analytics",
"type": ["http://purl.imsglobal.org/vocab/lis/v2/course#CourseOffering"]
}
...
}id (REQUIRED). Stable identifier that uniquely identifies the context from which the LTI message initiates. The context id MUST be locally unique to the deployment_id. It is recommended to also be locally unique to iss (Issuer). The value of id MUST NOT exceed 255 ASCII characters in length and is case-sensitive.
LTI 메시지가 시작된 컨텍스트를 고유하게 식별하는 안정적인 식별자이다. 컨텍스트 ID는 반드시(MUST) deployment_id에 대해 로컬에서 고유해야 한다. 또한, iss(Issuer)에도 로컬에서 고유하도록 설정하는 것이 권장된다. id 값은 반드시(MUST) 255 ASCII 문자를 초과하지 않아야 하며, 대소문자를 구분한다.
type (OPTIONAL). An array of URI values for context types. If present, the array MUST include at least one context type from the context type vocabulary described in context type vocabulary. If the sender of the message wants to include a context type from another vocabulary namespace, by best practice it should use a fully-qualified URI. By best practice, systems should not use context types from another role vocabulary, as this may limit interoperability.
컨텍스트 유형에 대한 URI 값 배열이다. 배열이 포함된 경우, 반드시(MUST) 컨텍스트 유형 어휘(context type vocabulary)에서 적어도 하나의 컨텍스트 유형을 포함해야 한다. 메시지 발신자가 다른 어휘 네임스페이스에서 컨텍스트 유형을 포함하려는 경우, 모범 사례에 따라 완전한 URI를 사용해야 한다. 상호운용성을 제한할 수 있으므로, 다른 어휘의 컨텍스트 유형을 사용하는 것은 지양해야 한다.
label (OPTIONAL). Short descriptive name for the context. This often carries the "course code" for a course offering or course section context.
컨텍스트에 대한 간단한 설명 이름이다. 이는 종종 강좌 제공 또는 강좌 섹션 컨텍스트에 대한 "강좌 코드"를 포함한다.
title (OPTIONAL). Full descriptive name for the context. This often carries the "course title" or "course name" for a course offering context.
컨텍스트의 전체 설명 이름이다. 이는 종종 강좌 제공 컨텍스트에 대한 "강좌 제목" 또는 "강좌 이름"을 포함한다.
5.4.2 Platform instance claim
5.4.2 플랫폼 인스턴스 클레임
The optional https://purl.imsglobal.org/spec/lti/claim/tool_platform claim composes properties associated with the platform instance initiating the launch.
선택적 클레임 https://purl.imsglobal.org/spec/lti/claim/tool_platform는 실행을 시작하는 플랫폼 인스턴스와 관련된 속성을 구성한다.
A typical usage is to identify the learning institution's online learning platform as in the following example:
전형적인 사용 사례는 학습 기관의 온라인 학습 플랫폼을 식별하는 것이다. 예시는 다음과 같다.
"https://purl.imsglobal.org/spec/lti/claim/tool_platform": {
"guid": "ex/48bbb541-ce55-456e-8b7d-ebc59a38d435",
"product_family_code": "ExamplePlatformVendor-ZLMS",
"name": "LMS from Example University"
}In a multi-tenancy case, a single platform (iss) will host multiple instances, but each LTI message is originating from a single instance identified by its guid.
다중 테넌트(multitenancy) 환경의 경우, 단일 플랫폼(iss)은 여러 인스턴스를 호스팅할 수 있다. 그러나 각 LTI 메시지는 guid로 식별된 단일 인스턴스에서 시작된다.
guid (REQUIRED). A stable locally unique to the iss identifier for an instance of the tool platform. The value of guid is a case-sensitive string that MUST NOT exceed 255 ASCII characters in length. The use of Universally Unique IDentifier (UUID) defined in [RFC4122] is recommended.
플랫폼 인스턴스에 대한 iss에서 로컬 고유 식별자이다. guid의 값은 대소문자를 구분하는 문자열이며, 반드시(MUST) 255 ASCII 문자를 초과하지 않아야 한다. [RFC4122]에서 정의된 범용 고유 식별자(UUID)의 사용이 권장된다.
contact_email (OPTIONAL). Administrative contact email for the platform instance.
플랫폼 인스턴스의 관리용 연락 이메일 주소이다.
description (OPTIONAL). Descriptive phrase for the platform instance.
플랫폼 인스턴스에 대한 설명 문구이다.
name (OPTIONAL). Name for the platform instance.
플랫폼 인스턴스의 이름이다.
url (OPTIONAL). Home HTTPS URL endpoint for the platform instance.
플랫폼 인스턴스의 기본 HTTPS URL 엔드포인트이다.
product_family_code (OPTIONAL). Vendor product family code for the type of platform.
플랫폼 유형에 대한 벤더 제품군 코드이다.
version (OPTIONAL). Vendor product version for the platform.
플랫폼에 대한 벤더 제품 버전이다.
5.4.3 Role-scope mentor claims
5.4.3 역할 범위 멘토 클레임
The optional https://purl.imsglobal.org/spec/lti/claim/role_scope_mentor claim's value contains an array of the user ID values which the current, launching user can access as a mentor (for example, the launching user may be a parent or auditor of a list of other users), as in the following example:
선택적 클레임 https://purl.imsglobal.org/spec/lti/claim/role_scope_mentor의 값은 현재 실행 중인 사용자가 멘토로서 접근할 수 있는 사용자 ID 값 배열을 포함한다. 아래는 예시이다.
{
...
"https://purl.imsglobal.org/spec/lti/claim/role_scope_mentor": [
"fad5fb29-a91c-770-3c110-1e687120efd9",
"5d7373de-c76c-e2b-01214-69e487e2bd33",
"d779cfd4-bc7b-019-9bf1a-04bf1915d4d0"
]
...
}Different systems may use this information in different ways, LTI generally expects that the message receiver will provide the mentor with access to tracking and summary information for other users, but not necessarily access to those users' personal data or content submissions.
서로 다른 시스템은 이 정보를 다르게 활용할 수 있다. 일반적으로 LTI는 메시지 수신자가 멘토에게 다른 사용자의 추적 및 요약 정보를 제공할 것을 기대하지만, 반드시 해당 사용자의 개인 데이터나 콘텐츠 제출물에 대한 접근 권한을 제공해야 하는 것은 아니다.
The sender of the message MUST NOT include a list of user ID values in this property unless they also provide http://purl.imsglobal.org/vocab/lis/v2/membership#Mentor as one of the values passed in the roles claim.
메시지 발신자는 role_scope_mentor 속성에 사용자 ID 값 목록을 포함하려면, http://purl.imsglobal.org/vocab/lis/v2/membership#Mentor를 roles 클레임에 전달된 값 중 하나로 반드시(MUST) 포함해야 한다.
5.4.4 Launch presentation claim
5.4.4 실행 프레젠테이션 클레임
The optional https://purl.imsglobal.org/spec/lti/claim/launch_presentation claim composes properties that describe aspects of how the message sender expects to host the presentation of the message receiver's user experience (for example, the height and width of the viewport the message sender gives over to the message receiver), as in the following example:
선택적 클레임 https://purl.imsglobal.org/spec/lti/claim/launch_presentation는 메시지 발신자가 메시지 수신자의 사용자 경험을 호스팅할 방식을 설명하는 속성을 구성한다. 아래는 예시이다.
{
...
"https://purl.imsglobal.org/spec/lti/claim/launch_presentation": {
"document_target": "iframe",
...
"return_url": "https://platform.example.edu/terms/201601/courses/7/sections/1/resources/2"
}
...
}document_target (OPTIONAL). The kind of browser window or frame from which the user launched inside the message sender's system. The value for this property MUST be one of: frame, iframe, or window.
메시지 발신자 시스템 내에서 사용자가 실행된 브라우저 창 또는 프레임의 종류를 나타낸다. 이 속성의 값은 반드시(MUST) frame, iframe, 또는 window 중 하나여야 한다.
height, width (OPTIONAL). Height and width of the window or frame where the content from the message receiver will be displayed to the user.
메시지 수신자의 콘텐츠가 사용자에게 표시될 창 또는 프레임의 높이와 너비를 나타낸다.
return_url (OPTIONAL). Fully-qualified HTTPS URL within the message sender's user experience to where the message receiver can redirect the user back. The message receiver can redirect to this URL after the user has finished activity, or if the receiver cannot start because of some technical difficulty.
메시지 발신자 시스템 내에서 사용자 경험을 위해 메시지 수신자가 사용자를 다시 리디렉션할 수 있는 완전한 HTTPS URL이다. 메시지 수신자는 사용자가 활동을 완료한 후 또는 기술적인 문제로 활동을 시작할 수 없는 경우 이 URL로 리디렉션할 수 있다.
The message receiver may want to send back a message to the message sender. If the message sender includes a return_url in its launch_presentation, it MUST support these four query parameters that MAY parameterize the redirection to the return URL:
메시지 수신자는 메시지 발신자에게 메시지를 다시 보낼 수 있다. 메시지 발신자가 launch_presentation에 return_url을 포함하는 경우, 아래 네 가지 쿼리 매개변수를 반드시(MUST) 지원해야 하며, 이는 return URL로의 리디렉션에 매개변수화될 수 있다.
lti_errormsg, lti_msg. Use these query parameters to carry a user-targeted message for unsuccessful or successful (respectively) activity completion. These are intended for showing to the user.
실패(또는 성공)한 활동 완료를 사용자에게 전달하는 메시지를 나타낸다. 사용자에게 보여지도록 설계되었다.
lti_errorlog, lti_log. Use these query parameters to carry a log-targeted message for unsuccessful or successful (respectively) activity completion. These are intended for writing to logs.
실패(또는 성공)한 활동 완료에 대한 로그 메시지를 나타낸다. 로그에 기록하기 위한 것이다.
locale (OPTIONAL). Language, country, and variant as represented using the IETF Best Practices for Tags for Identifying Languages [BCP47].
언어, 국가, 및 변형을 IETF 언어 태그 식별을 위한 모범 사례[BCP47]로 나타낸다.
5.4.5 Learning Information Services LIS claim
5.4.5 학습 정보 서비스(LIS) 클레임
The optional https://purl.imsglobal.org/spec/lti/claim/lis claim's value composes properties about available Learning Information Services (LIS), usually originating from the Student Information System, as in the following example:
선택적 클레임 https://purl.imsglobal.org/spec/lti/claim/lis의 값은 주로 학적 정보 시스템(Student Information System)에서 기원한 학습 정보 서비스(Learning Information Services, LIS)에 대한 속성을 구성한다. 아래는 예시이다.
{
"https://purl.imsglobal.org/spec/lti/claim/lis": {
"person_sourcedid": "example.edu:71ee7e42-f6d2-414a-80db-b69ac2defd4",
"course_offering_sourcedid": "example.edu:SI182-F16",
"course_section_sourcedid": "example.edu:SI182-001-F16"
}
}When the platform instance has access to these values it should, by best practice, provide them in messages sent to tools.
플랫폼 인스턴스가 이러한 값에 접근할 수 있는 경우, 모범 사례에 따라 도구로 전송되는 메시지에 이를 제공해야 한다.
See § D. Using Learning Information Services with LTI) for more detail on this service.
자세한 내용은 § D. LTI와 학습 정보 서비스 사용(Using Learning Information Services with LTI) 섹션을 참조할 수 있다.
5.4.6 Custom properties and variable substitution
5.4.6 사용자 정의 속성과 변수 대체
The optional https://purl.imsglobal.org/spec/lti/claim/custom claim acts like a key-value map of defined custom properties that a platform may associate with the resource link that initiated the launch.
선택적 클레임 https://purl.imsglobal.org/spec/lti/claim/custom는 플랫폼이 실행을 시작한 리소스 링크와 연결할 수 있는 정의된 사용자 정의 속성의 키-값 맵(key-value map)처럼 작동한다.
Each custom property name appears as a property within the message's top-level custom property. A custom property value must always be of type string. Note that "empty-string" is a valid custom value (""); note also that null is not a valid custom value.
각 사용자 정의 속성 이름은 메시지의 최상위 custom 정의 속성 내에 속성으로 나타난다. 사용자 정의 속성 값은 항상 문자열(string) 타입이어야 한다. 빈 문자열(empty-string)("")은 유효한 사용자 정의 값임을 유의해야 하며, null은 유효한 사용자 정의 값이 아님을 유의해야 한다.
5.4.6.1 Custom property value substitution
5.4.6.1 사용자 정의 속성 값 대
Senders of LTI messages MAY have the ability to make value substitutions for custom properties, at launch time, as described in § B. Custom parameter substitution.
LTI 메시지 발신자는 실행 시점에 사용자 정의 속성의 값 대체를 수행할 수 있는 기능을 가질 수 있다(MAY). 자세한 것은 § B. 사용자 정의 매개변수 대체(Custom Parameter Substitution)에서 설명한다.
5.4.6.2 Custom properties and Common Cartridge
5.4.6.2 사용자 정의 속성과 공통 카트리지
§ C. Representing LTI links in an IMS Common Cartridge explains how custom properties are represented when a link is stored in a Common Cartridge.
§ C. IMS 공통 카트리지에서 LTI 링크를 표현하는 방법(Representing LTI Links in an IMS Common Cartridge)은 링크가 공통 카트리지에 저장될 때 사용자 정의 속성이 어떻게 표현되는지를 설명한다.
5.4.7 Vendor-specific extension claims
5.4.7 벤더-특정 확장 클레임
Vendors MAY extend the information model for any message type and inject additional properties into the message's JSON object by adding one or more claims. Vendors MUST use a fully-qualified URL as the claim name for any of their extension claims.
벤더는 메시지 유형의 정보 모델을 확장하고, 하나 이상의 클레임을 추가하여 메시지의 JSON 객체에 추가 속성을 삽입할 수(MAY) 있다. 벤더는 확장 클레임의 클레임 이름으로 반드시(MUST) 완전한 URL을 사용해야 한다.
"http://www.ExamplePlatformVendor.com/session": {
"id": "89023sj890dju080"
}By best practice, vendors should define custom variables as described in § 5.4.6 Custom properties and variable substitution instead of relying on extension properties.
모범 사례로, 벤더는 확장 속성에 의존하기보다는, § 5.4.6 사용자 정의 속성과 변수 대체(Custom Properties and Variable Substitution)에 설명된 대로 사용자 정의 변수를 정의하는 것이 권장된다.
6. Interacting with services
6 서비스와의 상호작용
6.1 Services exposed as additional claims
6.1 추가 클레임으로 노출되는 서비스
LTI does not rely on prior knowledge of service endpoints. Rather, the platform MUST include in each message applicable service endpoints as fully resolved URLs (not as URL templates).
LTI는 서비스 엔드포인트에 대한 사전 지식에 의존하지 않는다. 대신, 플랫폼은 각 메시지에 적용 가능한 서비스 엔드포인트를 완전히(MUST) (템플릿이 아닌) 해석된 URL로 포함해야 한다.
The platform MUST have a separate claim in the message for each service, to contain the endpoints (and possibly other properties) relevant for that service. The endpoints and properties the platform sends for a service usually vary from message to message and are always fully resolved.
플랫폼은 메시지에서 각 서비스에 대해 별도의 클레임을 반드시(MUST) 가져야 하며, 해당 클레임은 해당 서비스와 관련된 엔드포인트(및 필요시 다른 속성)를 포함해야 한다. 플랫폼이 서비스에 대해 전송하는 엔드포인트와 속성은 메시지마다 일반적으로 다르며, 항상 완전히 해석된 상태여야 한다.
6.2 Token endpoint claim and services
6.2 토큰 엔드포인트 클레임과 서비스
Access tokens MUST protect all the services described by the platform; tools MUST retrieve these access tokens using the JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants as specified in the LTI Security Framework - Using JSON Web Tokens with OAuth 2.0 [SEC-10].
액세스 토큰은 플랫폼이 설명하는 모든 서비스를 반드시(MUST) 보호해야 하며, 도구는 LTI 보안 프레임워크[SEC-10]에서 지정한 JSON 웹 토큰(JWT) 프로파일을 사용한 OAuth 2.0 클라이언트 인증 및 권한 부여 토큰 발급 방식으로 이 액세스 토큰을 획득해야 한다.
The access token endpoint is communicated during the tool registration and used to access all services (unless explicitly stated otherwise in the service definition).
액세스 토큰 엔드포인트는 도구 등록 중에 전달되며, (서비스 정의에서 명시적으로 다르게 명시되지 않는 한) 모든 서비스에 접근하기 위해 사용된다.
When requesting an access token, the client assertion JWT iss and sub must both be the OAuth 2 client_id of the tool as issued by the learning platform during registration.
액세스 토큰을 요청할 때, 클라이언트 어설션 JWT의 iss와 sub는 모두 플랫폼이 등록 중 발급한 도구의 OAuth 2 client_id와 동일해야 한다.
6.2.1 Deployment ID
6.2.1 배포 ID
A resource server, e.g., platform instance, is uniquely identified by its issuer, client_id, and deployment_id, therefore when requesting an OAuth2 bearer token the client (i.e., tool) SHOULD include the deployment ID as part of the JWT to request a token.
리소스 서버(예: 플랫폼 인스턴스)는 발행자(issuer), client_id, deployment_id로 고유하게 식별된다. 따라서 OAuth 2 베어러 토큰을 요청할 때 클라이언트(즉, 도구)는 JWT의 일부로 배포 ID를 포함해야(SHOULD) 한다.
This is an optional claim. In addition to including the client_id, some platforms may require the token to be scoped to a given LTI deployment of that tool, and thus will require the deployment ID to be included in the token request. In the event that a platform refuses to provide a token the platform SHOULD follow the guidance laid out in section 4.1 of the IMS security document
이것은 선택적 클레임이다. 일부 플랫폼에서는 액세스 토큰이 도구의 특정 LTI 배포 범위에 제한되기를 요구할 수 있으며, 이 경우 배포 ID가 토큰 요청에 포함되어야 한다. 플랫폼이 토큰 제공을 거부하는 경우, 플랫폼은 IMS 보안 문서 섹션 4.1에서 제시한 지침을 따라야(SHOULD) 한다.
The claim name is https://purl.imsglobal.org/spec/lti/claim/deployment_id
{
"iss" : "f9660dea-d7ac-4d2c-af4c-97d26bd90d96",
"sub" : "f9660dea-d7ac-4d2c-af4c-97d26bd90d96",
"aud" : ["https://www.example.com/lti/auth/token"],
"iat" : "1485907200",
"exp" : "1485907500",
"jti" : "29f90c047a44b2ece73d00a09364d49b",
"https://purl.imsglobal.org/spec/lti/claim/deployment_id":
"07940580-b309-415e-a37c-914d387c1150"
}A. Appendix A - LTI standard vocabularies
A. 부록 A - LTI 표준 어휘
This specification uses URI values to identify certain standard vocabulary entities. This section defines the URI values for various LIS context types. LTI 1.0 through LTI 1.1.1 used URN values for these entities, and allowed the use of simple names. LTI 1.3 supports the old simple name and URN values for backward compatibility, but deprecates their use and replaces them with a URI that points to entities in an RDF ontology.
이 표준은 특정 표준 어휘 항목을 식별하기 위해 URI 값을 사용한다. 이 섹션에서는 다양한 LIS 컨텍스트 유형에 대한 URI 값을 정의한다. LTI 1.0부터 LTI 1.1.1까지는 이러한 항목에 대해 URN 값을 사용했으며, 간단한 이름(Simple Names)도 허용했다. LTI 1.3은 이전의 간단한 이름 및 URN 값을 하위 호환성을 위해 지원하지만, 해당 사용은 더 이상 권장되지 않으며(deprecated), RDF 온톨로지의 항목을 가리키는 URI로 대체되었다.
Conforming implementations MAY recognize the deprecated simple names (for context types and context roles) and the deprecated URN values, and MUST recognize the new URI values.
적합한 구현은 컨텍스트 유형과 컨텍스트 역할에 대한 간단한 이름과 URN 값을 인식할 수 있어야(MAY) 하며, 반드시(MUST) 새로운 URI 값을 인식해야 한다.
A.1 Context type vocabulary
A.1 컨텍스트 유형 어휘
The context type vocabularies are derived from the LIS v2.0 specification [LIS-20].
컨텍스트 유형 어휘는 LIS v2.0 표준 [LIS-20]에서 파생되었다.
| Type | Name |
|---|---|
| Course Template | http://purl.imsglobal.org/vocab/lis/v2/course#CourseTemplate CourseTemplate (deprecated) urn:lti:context-type:ims/lis/CourseTemplate (deprecated) |
| Course Offering | http://purl.imsglobal.org/vocab/lis/v2/course#CourseOffering CourseOffering (deprecated) urn:lti:context-type:ims/lis/CourseOffering (deprecated) |
| Course Section | http://purl.imsglobal.org/vocab/lis/v2/course#CourseSection CourseSection (deprecated) urn:lti:context-type:ims/lis/CourseSection (deprecated) |
| Group | http://purl.imsglobal.org/vocab/lis/v2/course#Group Group (deprecated) urn:lti:context-type:ims/lis/Group (deprecated) |
A.2 Role vocabularies
A.2 역할 어휘
The role vocabularies are derived from the LIS 2.0 specification [LIS-20]. LTI divides them into core and non-core roles. Core roles are those which are most likely to be relevant within LTI and hence vendors should support them by best practice. Vendors may also use the non-core rules, but they may not be widely used.
역할 어휘는 LIS v2.0 표준 [LIS-20]에서 파생되었다. LTI는 이를 핵심(Core) 역할과 비핵심(Non-Core) 역할로 나눈다. 핵심 역할은 LTI 내에서 가장 관련성이 높을 가능성이 있는 역할로, 벤더는 모범 사례에 따라 이를 지원해야 한다. 벤더는 비핵심 역할을 사용할 수도 있지만, 이러한 역할은 널리 사용되지 않을 수 있다.
A.2.1 LIS vocabulary for system roles
A.2.1 시스템 역할을 위한 LIS 어휘
A.2.2 LIS vocabulary for institution roles
A.2.2 기관 역할을 위한 LIS 어휘
A.2.3 LIS vocabulary for context roles
A.2.3 컨텍스트 역할을 위한 LIS 어휘
Core context roles are:
핵심 컨텍스트 역할은 다음과 같다.
Conforming implementations MAY recognize the simple names for context roles; thus, for example, vendors can use the following roles interchangeably:
적합한 구현은 컨텍스트 역할에 대한 간단한 이름(Simple Names)을 인식할 수(MAY) 있다. 예를 들어, 벤더는 다음 역할을 상호 교환적으로 사용할 수 있다.
http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor
Instructor
However, support for simple names in this manner for context roles is deprecated; by best practice, vendors should use the full URIs for all roles (context roles included).
그러나 이러한 방식으로 컨텍스트 역할에 대해 간단한 이름을 지원하는 것은 더 이상 권장되지 않는다(deprecated). 모범 사례에 따르면, 벤더는 모든 역할(컨텍스트 역할 포함)에 대해 전체 URI를 사용하는 것이 권장된다.
A.2.3.1 Context sub-roles
A.2.3.1 컨텍스트 하위 역할
Roles within the LIS 2.0 specification [LIS-20] consist of a principal RoleType and an optional SubRoleType, according to the following format:
LIS 2.0 표준 [LIS-20]에 정의된 역할은 주 역할 유형(Principal RoleType)과 선택적 하위 역할 유형(SubRoleType)으로 구성되며, 다음 형식을 따른다.
■ http://purl.imsglobal.org/vocab/lis/v2/membership/{rolename}#{sub-rolename}
For example, here is the URL for principal role Instructor, sub-role TeachingAssistant:
예를 들어, 주 역할이 Instructor이고, 하위 역할이 TeachingAssistant인 경우의 URL은 다음과 같다.
■ http://purl.imsglobal.org/vocab/lis/v2/membership/Instructor#TeachingAssistant
The list below gives the sub-roles available for each principal context role.
아래 목록은 각 주 컨텍스트 역할에 대해 사용할 수 있는 하위 역할을 제공한다.
| Principal role | Sub-role |
|---|---|
| Administrator | Administrator Developer ExternalDeveloper ExternalSupport ExternalSystemAdministrator Support SystemAdministrator |
| ContentDeveloper | ContentDeveloper ContentExpert ExternalContentExpert Librarian |
| Instructor | ExternalInstructor Grader GuestInstructor Lecturer PrimaryInstructor SecondaryInstructor TeachingAssistant TeachingAssistantGroup TeachingAssistantOffering TeachingAssistantSection TeachingAssistantSectionAssociation TeachingAssistantTemplate |
| Learner | ExternalLearner GuestLearner Instructor Learner NonCreditLearner |
| Manager | AreaManager CourseCoordinator ExternalObserver Manager Observer |
| Member | Member |
| Mentor | Advisor Auditor ExternalAdvisor ExternalAuditor ExternalLearningFacilitator ExternalMentor ExternalReviewer ExternalTutor LearningFacilitator Mentor Reviewer Tutor |
| Officer | Chair Communications Secretary Treasurer Vice-Chair |
LTI does not classify any of the sub-roles as a core role. Whenever a platform specifies a sub-role, by best practice it should also include the associated principal role; for example, by best practice, a platform specifying the http://purl.imsglobal.org/vocab/lis/v2/membership/Instructor#TeachingAssistant role should always also specify the http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor role.
LTI는 하위 역할(Sub-Roles)을 핵심 역할(Core Role)로 분류하지 않는다. 플랫폼이 하위 역할을 지정할 때는, 모범 사례에 따라 항상 해당 주 역할(Principal Role)도 포함해야 한다. 예를들어,플랫폼이 http://purl.imsglobal.org/vocab/lis/v2/membership/Instructor#TeachingAssistant 역할을 지정하는 경우, 모범 사례에 따라 http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor 역할도 함께 지정해야 한다.
A.2.4 LTI vocabulary for system roles
A.2.4 LTI 시스템 역할 어휘
LTI defines roles that are specific to LTI launches.
LTI는 LTI 실행(LTI Launches)에 특화된 역할을 정의한다.
| http://purl.imsglobal.org/vocab/lti/system/person#TestUser | This is a marker role to be used in conjunction with a "real" role. It indicates this user is created by the platform for testing different user scenarios. The most common use case is when an instructor wants to view the course as a student would see it, student-preview mode. Usually a new user object is created from the instructor user, with a flag it is a "preview user". It may be ephemeral, but it may not. The instructor can switch to this user view at any time. Tools may wish to filter out this user when displaying the course roster. They may want to ignore this user when it comes to sending grades, but they should be able to treat it as a regular user. 이 역할은 "실제" 역할과 함께 사용되는 마커 역할(marker role)로, 사용자가 플랫폼에 의해 다양한 사용자 시나리오를 테스트하기 위해 생성되었음을 나타낸다. 가장 일반적인 사용 사례는 교사가 학생 역할로 강좌를 미리보기(student-preview mode) 할 때이다. 이 경우 교사 사용자를 기반으로 새로운 사용자 객체가 생성되며, "미리보기 사용자(preview user)"로 플래그가 설정된다. 이 사용자 객체는 일시적일 수도 있지만, 그렇지 않을 수도 있다. 교사는 언제든지 이 사용자 보기를 전환할 수 있다. 도구는 강좌 명단(course roster)을 표시할 때 이 사용자를 필터링할 수 있다. 이 사용자를 대상으로 점수를 전송할 때 무시할 수 있지만, 일반 사용자로 처리할 수 있어야 한다. |
|---|
B. Custom parameter substitution
B. 사용자 정의 매개변수 대체
By prefixing the value of a custom parameter by $, the tool indicates the use of a substitution parameter. A substitution parameter allows the platform to pass additional runtime data to the tool in addition to the core claims highlighted above; it allows a tool to tailor its message payload to include the additional data it needs.
사용자 정의 매개변수 값 앞에 $를 접두사로 추가하면, 도구는 이를 대체 매개변수(substitution parameter)로 사용함을 나타낸다. 대체 매개변수는 플랫폼이 실행 시점에 도구에 추가적인 런타임 데이터를 전달할 수 있게 하며, 도구가 자신의 메시지 페이로드에 필요한 추가 데이터를 포함하도록 맞춤화할 수 있게 한다.
Support for substitution parameters is optional; each platform may support a different set of variables. If the platform supports a given variable and authorizes the tool to access it, it must resolve it at launch time. Otherwise, the substitution parameter must be passed unresolved, indicating to the tool that this variable is not supported.
대체 매개변수 지원은 선택적이다. 각 플랫폼은 서로 다른 변수 집합을 지원할 수 있다. 플랫폼이 특정 변수를 지원하고, 도구에 대한 접근 권한을 승인한 경우, 실행 시점에 해당 변수를 반드시(MUST) 해석해야 한다. 그렇지 않은 경우, 변수는 해석되지 않은 상태로 전달되어야 하며, 이는 도구가 해당 변수를 지원하지 않음을 나타낸다.
Substituted values must always be of type string. Note that "empty-string" is a valid value (""); note also that null is not a valid value.
대체된 값은 항상 문자열(string) 타입이어야 한다. 빈 문자열("")은 유효한 값으로 간주되지만, null은 유효하지 않다.
If the platform does not have a value for a variable that it does support, then it should by best practice indicate this by sending an empty-string value (""); this means that LTI tools and platforms must be prepared to accept empty-string as a valid value for all properties, even when they have strict formatting requirements (for example, a property that must have a date-time value must also be able to have an empty-string value for cases where no date has been set).
플랫폼이 지원하는 변수에 대해 값이 없는 경우, 모범 사례에 따라 빈 문자열("")을 보내야 한다. 이는 도구와 플랫폼이 모든 속성에서 빈 문자열을 유효한 값으로 처리할 준비가 되어 있어야 함을 의미한다. 이는 엄격한 형식 요구 사항(예: 날짜-시간 값이 필요한 속성)을 가진 경우에도 적용된다. 예를 들어, 강좌 시작 날짜가 설정되지 않은 경우, 속성의 값은 빈 문자열로 설정되어야 한다.
For example, if a custom property was xstart=$CourseSection.timeFrame.begin the custom property appearing in the LTI message would look like this:
예를 들어, 사용자 정의 속성이 xstart=$CourseSection.timeFrame.begin이라면 LTI 메시지에 나타나는 사용자 정의 속성은 다음과 같다.
{
...
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"xstart": "2017-04-21T01:00:00Z",
...
}
...
}However, if the platform does not support CourseSection.timeFrame.begin or has not authorized the tool to access that data, the parameter must be passed unresolved:
그러나 플랫폼이 CourseSection.timeFrame.begin을 지원하지 않거나 도구에 대한 접근을 승인하지 않은 경우, 매개변수는 해석되지 않은 상태로 전달되어야 한다.
{
...
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"xstart": "$CourseSection.timeframe.begin",
...
}
...
}If the platform supports CourseSection.timeFrame.begin variable but there is no value for it because the course has no start date, the substitution parameter's value should be set to empty-string to indicate that no date has been set for the course's start date:
플랫폼이 CourseSection.timeFrame.begin 변수를 지원하지만 강좌에 시작 날짜가 없는 경우, 대체 매개변수의 값은 강좌 시작 날짜가 설정되지 않았음을 나타내기 위해 빈 문자열로 설정해야 한다.
{
...
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"xstart": "",
...
}
...
}Vendors may extend the list of custom property substitution variables.
벤더는 사용자 정의 속성 대체 변수 목록을 확장할 수 있다.
Other LTI related specifications may also define their own specific variables in addition to the core variables included in this document.
LTI 관련 다른 표준은 본 문서에 포함된 핵심 변수 외에도 고유한 특정 변수를 정의할 수 있다.
B.1 LTI User Variables
B.1 LTI User 변수
| Message variable name | Corresponding LTI message value |
|---|---|
| User.id | user.id message property value; this may not be their real ID if they are masquerading as another user; see following. user.id 메시지 속성 값; 사용자가 다른 사용자로 가장한 경우 실제 ID가 아닐 수 있음. (아래 참조) |
| User.image | user.image message property value. user.image 메시지 속성 값. |
| User.username | Username by which the message sender knows the user (typically, the name a user logs in with). 메시지 발신자가 사용자를 알고 있는 사용자명(일반적으로 사용자가 로그인할 때 사용하는 이름). |
| User.org | One or more URIs describing the user's organizational properties (for example, an ldap:// URI); by best practice, message senders should separate multiple URIs by commas. 사용자의 조직 속성을 설명하는 하나 이상의 URI(예: ldap:// URI). 모범 사례로, 발신자는 URI를 쉼표로 구분. |
| User.scope.mentor | role_scope_mentor message property value. role_scope_mentor 메시지 속성 값. |
| User.gradeLevels.oneRoster | A comma-separated list of grade(s) for which the user is enrolled. The permitted vocabulary is from the grades field utilized in OneRoster Users. 사용자가 등록된 학년 목록(쉼표로 구분). OneRoster Users에서 사용하는 grades 필드 어휘를 따름. |
| User.gradeLevels.* | A comma-separated list of grade(s) for which the user is enrolled. The permitted vocabulary is from the organization or vendor specified in the place of the * in the field name. 사용자가 등록된 학년 목록(쉼표로 구분). * 대신 조직 또는 벤더가 지정한 어휘를 사용. |
These User variables represent the user who is the subject of the message. There may, however, be occasions when this is not the actual user performing the action; for example, when an administrator accesses a course as one of its members. In this case, the same information about the actual user (the administrator in the example given) can be requested by using a variable name prefix of ActualUser (rather than User); for example, ActualUser.id. In this case, the corresponding LTI message properties will be actual_user properties (for example, actual_user.id).
이 User 변수는 메시지의 대상이 되는 사용자를 나타낸다. 그러나 특정 상황에서는 이 사용자가 실제로 작업을 수행하는 사용자가 아닐 수 있다. 예를 들어, 관리자가 강좌의 구성원 중 한 명으로 강좌에 접근하는 경우가 이에 해당한다. 이 경우, 실제 사용자를 나타내는 동일한 정보를 요청하려면 User 대신 ActualUser를 변수 이름 접두사로 사용해야 한다. (예: ActualUser.id). 이러한 경우 해당 LTI 메시지 속성은 actual_user 속성이 된다. (예: actual_user.id).
B.2 LIS Person Variables
B.2 LIS Person 변수
| Message variable name | XPath for value from LIS database |
|---|---|
| Person.sourcedId | personRecord/sourcedId (lis_person.sourcedid property) |
| Person.name.full | personRecord/person/formname/[formnameType/instanceValue/text="Full"]/formattedName/text (lis_person.name_full property) |
| Person.name.family | personRecord/person/name/partName[instanceName/text="Family"]/instanceValue/text (lis_person.name_family property) |
| Person.name.given | personRecord/person/name/partName[instanceName/text="Given"]/instanceValue/text (lis_person.name_given property) |
| 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.gender | personRecord/person/demographics/gender/instanceValue/text2 |
| Person.gender.pronouns | N/A3 |
| Person.address.street1 | personRecord/person/address/[addressType/instanceValue/text="Preferred"]/addressPart/nameValuePair/[instanceName/text="NonFieldedStreetAddress1"]/instanceValue/text1 |
| Person.address.street2 | personRecord/person/address/[addressType/instanceValue/text="Preferred"]/addressPart/nameValuePair[instanceName/text="NonFieldedStreetAddress2"]/instanceValue/text1 |
| Person.address.street3 | personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart/nameValuePair/[instanceName/text="NonFieldedStreetAddress3"]/instanceValue/text1 |
| Person.address.street4 | personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart/nameValuePair/[instanceName/text="NonFieldedStreetAddress4"]/instanceValue/1 |
| Person.address.locality | personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart/nameValuePair/[instanceName/text="Locality"]/instanceValue/text1 |
| Person.address.statepr | personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart/nameValuePair/[instanceName/text="Statepr"]/instanceValue/text1 |
| Person.address.country | personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart/nameValuePair/[instanceName/text="Country"]/instanceValue/text1 |
| Person.address.postcode | personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart/nameValuePair/[instanceName/text="Postcode"]/instanceValue/text1 |
| Person.address.timezone | personRecord/person/address/[addressType/instanceValue/text="Preferred"]addressPart/nameValuePair/[instanceName/text="Timezone"]/instanceValue/text1 |
| 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 (lis.person_contact_email_primary property) |
| 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 |
| 1 The "Preferred" instanceName is not part of the default LIS vocabulary. The IMS LTI group proposes to add this term in the LTI Profile of LIS so that LTI can support a single address instead of dealing with multiple address types as prescribed by the full LIS standard. 1 "Preferred" instanceName은 기본 LIS 어휘의 일부가 아니다. IMS LTI 그룹은 LTI가 전체 LIS 표준에서 요구하는 여러 주소 유형을 처리하는 대신, 단일 주소를 지원할 수 있도록 LIS의 LTI 프로파일에 이 용어를 추가할 것을 제안한다. 2 The LIS specification admits for four possible values for the Gender demographics type: male, female, unknown, other. The IMS LTI group proposes that LTI Tools be prepared to accept other arbitrary string values for this property (as more specific user-chosen values to elaborate on the other value) in order to align support for this information with the OpenID Connect Standard Claim, gender. 2 LIS 표준은 성별 정보 유형(Gender demographics type)에 대해 네 가지 가능한 값을 허용한다. male, female, unknown, other. IMS LTI 그룹은 LTI 도구가 이 속성에 대해 기타 특정한 사용자 정의 값(예: other 값을 보완하기 위해 사용자가 선택한 값)을 허용하도록 준비할 것을 제안한다. 이는 OpenID Connect 표준 클레임의 gender와의 호환성을 지원하기 위함이다. 3 The LIS specification does not have a place to carry a person's pronoun choices. The IMS LTI group proposes to provide a simple string field to carry user-chosen values in anticipation of enhnacements to the upstream person data model as described in the LIS standard; this is the most logical place for a variable to rest to carry this information. 3 LIS 표준에는 사용자의 대명사 선택을 포함할 수 있는 필드가 없다. IMS LTI 그룹은 LIS 표준에서 설명된 대로 상위(person data model) 데이터 모델의 확장을 기대하며, 사용자 선택 값을 포함할 간단한 문자열 필드를 제공할 것을 제안한다. 이는 이러한 정보를 담을 변수로 가장 적절한 위치이다. 4 Note that the LIS specification expressly describes the value for "fullname" field as intended to be the full, displayable, user-preferred name value. 4 LIS 표준은 "fullname" 필드 값을 사용자 선호에 따라 표시할 수 있는 전체 이름 값으로 사용할 것을 명시적으로 설명하고 있다. | |
These Person variables represent the person who is the subject of the message. There may, however, be occasions when this is not the actual person performing the action; for example, when an administrator accesses a course as one of its members. In this case, the same information about the actual person (the administrator in the example given) can be requested by using a variable name prefix of ActualPerson (rather than Person); for example, ActualPerson.sourcedId.
이 Person 변수는 메시지의 대상이 되는 사람을 나타낸다. 그러나 특정 상황에서는 이 사람이 실제로 작업을 수행하는 사람이 아닐 수 있다. 예를 들어, 관리자가 강좌의 구성원 중 한 명으로 강좌에 접근하는 경우가 이에 해당한다. 이 경우, 실제 사람(예: 예시에서의 관리자)에 대한 동일한 정보를 요청하려면 Person 대신 ActualPerson을 변수 이름 접두사로 사용해야 한다. (예: ActualPerson.sourcedId).
B.3 LTI Context Variable
B.3 LTI Context 변수
| Message variable name | Corresponding LTI value |
|---|---|
| Context.id | context.id property. |
| Context.org | A URI describing the context's organizational properties; for example, an ldap:// URI. By best practice, message senders should separate URIs using commas. 컨텍스트의 조직 속성을 설명하는 URI(예: ldap:// URI). 모범 사례에 따르면, 메시지 발신자는 URI를 쉼표로 구분해야 한다. |
| Context.type | context.type property. |
| Context.label | context.label property. |
| Context.title | context.label property. |
| Context.sourcedId | The sourced ID of the context. |
| Context.id.history | A comma-separated list of URL-encoded context ID values representing previous copies of the context; the ID of most recent copy should appear first in the list followed by any earlier IDs in reverse chronological order. If the context was created from scratch, not as a copy of an existing context, then this variable should have an empty value. 쉼표로 구분된 URL 인코딩된 컨텍스트 ID 값 목록으로, 이전에 복사된 컨텍스트를 나타낸다. 가장 최근 복사의 ID가 목록의 첫 번째에 나타나야 하며, 이후에는 이전 ID들이 역순으로 나열되어야 한다. 컨텍스트가 기존 컨텍스트를 복사하지 않고 새로 생성된 경우, 이 변수는 빈 값을 가져야 한다. |
| Context.gradeLevels.oneRoster | A comma-separated list of grade(s) for which the context is attended. The permitted vocabulary is from the grades field utilized in OneRoster Classes. 컨텍스트에 참여하는 학년(grade)의 쉼표로 구분된 목록이다. 허용되는 어휘는 OneRoster Classes에서 사용하는 grades 필드를 따른다. |
| Context.gradeLevels.* | A comma-separated list of grade(s) for which the context is attended. The permitted vocabulary is from the organization or vendor specified in the place of the * in the field name. 컨텍스트에 참여하는 학년(grade)의 쉼표로 구분된 목록이다. 허용되는 어휘는 필드 이름에서 *에 지정된 조직 또는 벤더에 의해 정의된다. |
B.4 LTI ResourceLink Variables
B.4 LTI ResourceLink 변수
| Message variable name | Corresponding LTI value |
|---|---|
| ResourceLink.id | resource_link.id property |
| ResourceLink.title | resource_link.title property |
| ResourceLink.description | resource_link.description property |
| ResourceLink.available.startDateTime | The ISO 8601 date and time when this resource is available for learners to access. 학습자가 이 리소스에 접근할 수 있는 ISO 8601 형식의 날짜와 시간. |
| ResourceLink.available.user.startDateTime | The ISO 8601 date and time when this resource is available for the current user to access. This date overrides that of ResourceLink.available.startDateTime. A value of an empty string indicates that the date for the resource should be used. 현재 사용자가 이 리소스에 접근할 수 있는 ISO 8601 형식의 날짜와 시간. 이 날짜는 ResourceLink.available.startDateTime의 날짜를 재정의한다. 값이 빈 문자열("")인 경우, 리소스에 설정된 날짜를 사용해야 함을 나타낸다. |
| ResourceLink.available.endDateTime | The ISO 8601 date and time when this resource ceases to be available for learners to access. 학습자가 이 리소스에 접근할 수 없게 되는 ISO 8601 형식의 날짜와 시간. |
| ResourceLink.available.user.endDateTime | The ISO 8601 date and time when this resource ceases to be available for the current user to access. This date overrides that of ResourceLink.available.endDateTime. A value of an empty string indicates that the date for the resource should be used. 현재 사용자가 이 리소스에 접근할 수 없게 되는 ISO 8601 형식의 날짜와 시간. 이 날짜는 ResourceLink.available.endDateTime 값을 재정의한다. 빈 문자열 값은 리소스에 설정된 날짜를 사용해야 함을 나타낸다. |
| ResourceLink.submission.startDateTime | The ISO 8601 date and time when this resource can start receiving submissions. 이 리소스가 제출을 받을 수 있는 시작 ISO 8601 형식의 날짜와 시간. |
| ResourceLink.submission.user.startDateTime | The ISO 8601 date and time when the current user can submit to the resource. This date overrides that of ResourceLink.submission.startDateTime. A value of an empty string indicates that the date for the resource should be used. 현재 사용자가 리소스에 제출을 시작할 수 있는 ISO 8601 형식의 날짜와 시간. 이 날짜는 ResourceLink.submission.startDateTime 값을 재정의한다. 빈 문자열 값은 리소스에 설정된 날짜를 사용해야 함을 나타낸다. |
| ResourceLink.submission.endDateTime | The ISO 8601 date and time when this resource stops accepting submissions. 이 리소스가 제출을 더 이상 받지 않게 되는 ISO 8601 형식의 날짜와 시간. |
| ResourceLink.submission.user.endDateTime | The ISO 8601 date and time when the current user stops being able to submit to the resource. This date overrides that of ResourceLink.submission.endDateTime. A value of an empty string indicates that the date for the resource should be used. 현재 사용자가 리소스에 제출을 할 수 없게 되는 ISO 8601 형식의 날짜와 시간. 이 날짜는 ResourceLink.submission.endDateTime 값을 재정의한다. 빈 문자열 값은 리소스에 설정된 날짜를 사용해야 함을 나타낸다. |
| ResourceLink.lineitem.releaseDateTime | The ISO 8601 date and time set when the grades for the associated line item can be released to learner. 연관된 라인 아이템(line item)의 점수가 학습자에게 공개될 수 있는 ISO 8601 형식의 날짜와 시간. |
| ResourceLink.lineitem.user.releaseDateTime | The ISO 8601 date and time set when the current user's grade for the associated line item can be released to the user. This date overrides that of ResourceLink.lineitem.releaseDateTime. A value of an empty string indicates that the date for the resource should be used. 현재 사용자의 연관된 라인 아이템 점수가 사용자에게 공개될 수 있는 ISO 8601 형식의 날짜와 시간. 이 날짜는 ResourceLink.lineitem.releaseDateTime 값을 재정의한다. 빈 문자열 값은 리소스에 설정된 날짜를 사용해야 함을 나타낸다. |
| ResourceLink.id.history | A comma-separated list of URL-encoded resource link ID values representing the ID of the link from a previous copy of the context; the most recent copy should appear first in the list followed by any earlier IDs in reverse chronological order. If the link was first added to the current context then this variable should have an empty value. 컨텍스트의 이전 복사본에서 링크의 ID를 나타내는 URL 인코딩된 리소스 링크 ID 값의 쉼표로 구분된 목록. 가장 최근 복사의 ID가 목록의 첫 번째에 나타나야 하며, 이후에는 이전 ID들이 역순으로 나열된다. 링크가 현재 컨텍스트에 처음 추가된 경우, 이 변수는 빈 값을 가져야 한다. |
B.5 LIS Course Template Variables
B.5 LIS Course Template 변수
| 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 |
B.6 LIS Course Offering Variables
B.6 LIS Course Offering 변수
| Message variable name | XPath for value from LIS database |
|---|---|
| CourseOffering.sourcedId | courseOfferingRecord/sourcedId (lis_course_offering_sourcedid property) |
| CourseOffering.label | courseOfferingRecord/courseOffering/label |
| CourseOffering.title | courseOfferingRecord/courseOffering/title |
| CourseOffering.shortDescription | courseOfferingRecord/courseOffering/catalogDescription/shortDescription |
| CourseOffering.longDescription | courseOfferingRecord/courseOffering/catalogDescription/longDescription |
| CourseOffering.courseNumber | courseOfferingRecord/courseOffering/courseNumber/textString |
| CourseOffering.credits | courseOfferingRecord/courseOffering/defaultCredits/textString |
| CourseOffering.academicSession | courseOfferingRecord/courseOffering/defaultCredits/textString |
B.7 LIS Course Section Variables
B.7 LIS Course Section 변수
| Message variable name | XPath for value from LIS database |
|---|---|
| CourseSection.sourcedId | courseSection/sourcedId (lis_course_section_sourcedid property) |
| 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 |
B.8 LIS Group Variables
B.8 LIS Group 변수
| Message variable name | XPath for value from LIS database |
|---|---|
| Group.sourcedId | groupRecord/sourcedId |
| Group.scheme | groupRecord/group/groupType/scheme/textString |
| Group.typevalue | groupRecord/group/groupType/typevalue/textString |
| Group.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.end | groupRecord/group/enrollControl/enrollAllowed |
| Group.shortDescription | groupRecord/group/description/shortDescription |
| Group.longDescription | groupRecord/group/description/longDescription |
| Group.parentId | groupRecord/group/relationship[relation="Parent"]/sourcedId |
B.9 LIS Membership Variables
B.9 LIS Membership 변수
| Message variable name | XPath for value from LIS database |
|---|---|
| Membership.sourcedId | membershipRecord/sourcedId |
| Membership.collectionSourcedid | membershipRecord/membership/collectionSourcedId |
| Membership.personSourcedId | membershipRecord/membership/memnber/personSourcedId |
| Membership.status | membershipRecord/membership/member/role/status |
| Membership.role | membershipRecord/membership/member/role/roleType (roles property) |
| Membership.createdTimestamp | membershipRecord/membership/member/role/dateTime |
| Membership.dataSource | membershipRecord/membership/member/role/dataSource |
| Membership.role.scope.mentor | role_scope_mentor property |
B.10 LIS Message Variables
B.10 LIS Message 변수
| Message variable name | Corresponding LTI value |
|---|---|
| Message.returnUrl | URL for returning the user to the platform (for example, the launch_presentation.return_url property). 플랫폼으로 사용자를 되돌리는 URL(예: launch_presentation.return_url 속성). |
| Message.documentTarget | launch_presentation.document_target property. |
| Message.height | launch_presentation.height property. |
| Message.width | launch_presentation.width property. |
| Message.locale | launch_presentation.locale property. |
B.11 Tool Platform Variables
B.11 Tool Platform 변수
| Message variable name | Corresponding LTI value |
|---|---|
| ToolPlatform.productFamilyCode | tool_platform.product_family_code property. |
| ToolPlatform.version | tool_platform.version property. |
| ToolPlatformInstance.guid | tool_platform.instance_guid property. |
| ToolPlatformInstance.name | tool_platform.instance_name property. |
| ToolPlatformInstance.description | tool_platform.instance_description property. |
| ToolPlatformInstance.url | tool_platform.instance_url property. |
| ToolPlatformInstance.contactEmail | tool_platform.instance_contact_email property. |
B.12 Custom Variables
B.12 사용자 정의 변수
Vendors may define custom variables. For example, a platform vendor may wish to provide access to certain platform-specific values of its own. Custom variable names MUST be globally unique. By best practice, the name of a custom variable should start with a registered domain name, where the components of the domain are listed in reverse order, as in the form in this example (where the vendor owns the example.com domain registration):
벤더는 사용자 정의 변수를 정의할 수 있다. 예를 들어, 플랫폼 벤더는 특정 플랫폼 전용 값을 제공할 수 있다. 사용자 정의 변수 이름은 반드시(MUST) 전역적으로 고유해야 한다. 모범 사례에 따르면, 사용자 정의 변수 이름은 등록된 도메인 이름으로 시작해야 하며, 도메인 구성 요소는 역순으로 나열되어야 한다. 다음은 그 예이다.
■ $com.example.Foo.bar
Every custom variable is associated with a capability identified by some URI. The capability asserts that the offering vendor supports expansion of the specified variable within LTI message properties. For example, the capability associated with the $com.example.Foo.bar variable might be associated with this URI:
모든 사용자 정의 변수는 특정 URI로 식별되는 기능(capability)과 연결된다. 이 기능은 제공 벤더가 LTI 메시지 속성 내에서 지정된 변수의 확장을 지원함을 나타낸다. 예를 들어, $com.example.Foo.bar 변수와 연결된 기능은 다음 URI와 연결될 수 있다.
■ http://www.example.com/var#com.example.Foo.bar
C. Representing LTI links in an IMS Common Cartridge
C. IMS 공통 카트리지에서 LTI 링크 표현
The format to include LTI resource links has not changed except that all launches MUST be sent over HTTPS (non-secure launches are no longer an option). The values of secure_launch_url and secure_icon SHOULD be included to maintain backwards compatibility, but they MUST also contain a secure HTTPS url if included. The original name of "basic LTI link" is still used to refer to LTI resource links. Self-contained, basic LTI resource links are defined in the resource section of an IMS Common Cartridge as follows:
LTI 리소스 링크를 포함하는 형식은 변경되지 않았으나, 모든 실행은 반드시(MUST) HTTPS를 통해 이루어져야 한다. secure_launch_url과 secure_icon 값은 하위 호환성을 유지하기 위해 포함되어야(SHOULD) 하며, 포함된 경우 반드시(MUST) 보안 HTTPS URL이어야 한다. LTI 리소스 링크를 지칭하는 데 "기본 LTI 링크(basic LTI link)"라는 기존 명칭이 여전히 사용된다. 독립적으로 정의된 기본 LTI 리소스 링크는 IMS 공통 카트리지의 resource 섹션에서 다음과 같이 정의된다.
<resource identifier="I_00010_R" type="imsbasiclti_xmlv1p0">
<file href="I_00001_R/BasicLTI.xml"/>
</resource>The href in the resource entry refers to a file path in the cartridge that contains an XML description of the basic LTI link, as in the following example:
resource 항목의 href는 카트리지 내 파일 경로를 참조하며, 이 경로에는 기본 LTI 링크에 대한 XML 설명이 포함되어 있다. 다음은 그 예시이다.
<?xml version="1.0" encoding="UTF-8"?>
<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/XMLSchema-instance"
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>Once the cartridge creator has defined the basic LTI link in the resources section of the cartridge manifest, the organization section of the manifest may make reference to it as needed:
카트리지 생성자가 카트리지 매니페스트(manifest)의 resources 섹션에 기본 LTI 링크를 정의한 후, 매니페스트의 organization 섹션에서 필요에 따라 이를 참조할 수 있다.
<item identifier="BasicLTI1" identifierref="I_00010_R">
<title>Homework Problems</title>
</item>By best practice, the cartridge importer should display in the user interface the title in this referring item entry, rather than the title in the referred-to basic_lti_link entry.
모범 사례에 따르면, 카트리지 가져오기(importer)는 참조된 basic_lti_link 항목의 title이 아니라, 이 참조 item 항목의 title을 사용자 인터페이스에 표시해야 한다.
The optional custom section MAY contain a set of key-value pairs that were associated with the link in the system that originally authored the link. For example if the link were a section in an eTextbook, there might be a setting like:
선택적인 custom 섹션은 원래 링크를 작성한 시스템에서 링크와 연결된 키-값 쌍을 포함할 수(MAY) 있다. 예를 들어, 링크가 eTextbook의 섹션이라면 다음과 같은 설정이 있을 수 있다
<parameter key="section">1.2.7</parameter>
The platform sends these properties back to the external tool when launching from the imported basic LTI link. If a basic LTI link is imported and then exported, by best practice, the platform should maintain the custom section across the import/export process, unless the intent is to re-author the link.
플랫폼은 가져온 기본 LTI 링크에서 실행할 때 이러한 속성을 외부 도구에 다시 전달한다. 기본 LTI 링크를 가져오고 다시 내보내는 경우, 모범 사례에 따르면, 플랫폼은 링크를 새로 작성하려는 의도가 없는 한 가져오기/내보내기 과정에서 custom 섹션을 유지해야 한다.
The extensions section allows the hosting platform to add its own key-value pairs to the link. The platform may use extensions to store information that the platform or authoring environment might use across an export-import cycle. In order to allow multiple sets of extensions to be contained in the same basic LTI descriptor, by best practice, authoring environments should add the platform attribute and include an identifier that identifies the authoring environment.
extensions 섹션은 호스팅 플랫폼이 링크에 자체 키-값 쌍을 추가할 수 있도록 한다. 플랫폼은 확장을 사용하여 플랫폼이나 작성 환경이 가져오기/내보내기 과정에서 사용할 수 있는 정보를 저장할 수 있다. 모범 사례에 따르면, 동일한 기본 LTI 설명자에 여러 확장 집합을 포함할 수 있도록 작성 환경은 platform 속성을 추가하고 작성 환경을 식별하는 식별자를 포함해야 한다.
It is possible to include the icon for the link in the cartridge instead of including it as a URL using the cartridge_icon entry in the descriptor. The identifierref attribute points to a link that includes the icon image and a dependency is added to the resource section of the basic LTI resource entry in the manifest as shown below.
링크의 아이콘을 URL 대신 카트리지 내에 포함할 수 있으며, 이를 위해 설명자(descriptor)의 cartridge_icon 항목을 사용할 수 있다. identifierref 속성은 아이콘 이미지를 포함하는 링크를 가리키며, 매니페스트의 기본 LTI 리소스 항목의 resource 섹션에 종속 항목(dependency)이 추가된다. 아래는 그 예시이다.
<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>D. Using Learning Information Services with LTI
D. LTI와 학습 정보 서비스(LIS)의 사용
Organizations may have an IMS Learning Information Services (LIS) instance that can provide limited functionality within an LTI context. Typically, platform instances can use LIS service properties to
조직은 LTI 컨텍스트 내에서 제한된 기능을 제공할 수 있는 IMS 학습 정보 서비스(LIS) 인스턴스를 보유할 수 있다. 일반적으로, 플랫폼 인스턴스는 LIS 서비스 속성을 사용하여 다음 작업을 수행할 수 있다.
Convey information to tools about the LIS sourcedid values for users and contexts (course offerings and sections).
사용자 및 컨텍스트(강좌 제공 및 섹션)에 대한 LIS sourcedid 값을 도구에 전달.
Provide an endpoint tools can use to provide Basic Outcomes [LTI-BO-11] back to the LIS instance (this may be useful if the platform does not provide access to the more fully featured LTI Assignment and Grade Service [LTI-AGS-20]).
LIS 인스턴스에 기본 결과(Basic Outcomes) [LTI-BO-11]를 다시 제공하기 위한 엔드포인트 제공. (이는 플랫폼이 더 고급 기능을 제공하는 LTI 과제 및 성적 서비스(LTI Assignment and Grade Service, LTI-AGS-20)에 대한 액세스를 제공하지 않는 경우에 유용할 수 있다.)
The LIS services could actually be provided by a third party, Student Information System (SIS), or perhaps the LTI platform is the service provider that tools can use.
LIS 서비스는 실제로 제3자, 학적 정보 시스템(Student Information System, SIS), 또는 도구가 사용할 수 있는 서비스 제공자로서의 LTI 플랫폼에 의해 제공될 수 있다.
Historically, these LIS properties have been provided in basic LTI launch request messages. While they are all optional properties to include, platforms should, by best practice, include these properties when they have access to them to help ensure interoperability and traceability across IMS-standards-enabled systems.
기존에는 이러한 LIS 속성이 기본 LTI 실행 요청 메시지에 포함되어 제공되었다. 이 속성들은 모두 선택적이지만, 플랫폼은 모범 사례에 따라, 이러한 속성에 접근할 수 있는 경우 이를 포함해야 한다. 이는 IMS 표준이 활성화된 시스템 간의 상호운용성 및 추적 가능성(traceability)을 보장하는 데 도움이 된다.
services.lis.course_offering_sourcedid, services.lis.course_section_sourcedid (OPTIONAL). The LIS course (offering and section) identifiers applicable to the context of this basic LTI launch request message.
services.lis.course_offering_sourcedid, services.lis.course_section_sourcedid (OPTIONAL). 이 속성은 기본 LTI 실행 요청 메시지의 컨텍스트에 적용되는 LIS 강좌(제공 및 섹션) 식별자를 나타낸다.
The field's content and meaning are defined by LIS v2.0 [LIS-20].
이 필드의 내용과 의미는 LIS v2.0 [LIS-20]에서 정의된다.
services.lis.outcome_service_url (OPTIONAL). URL endpoint for the LTI Basic Outcomes Service [LTI-BO-11]. By best practice, this URL should not change from one resource link launch request message to the next; platforms should provide a single, unchanging endpoint URL for each registered tool. This URL endpoint may support various operations/actions; by best practice, the provider of an LTI Basic Outcome Service should respond with a response of unimplemented for actions it does not support.
services.lis.outcome_service_url (OPTIONAL). LTI 기본 결과 서비스(LTI Basic Outcomes Service) [LTI-BO-11]를 위한 URL 엔드포인트. 모범 사례에 따르면, 이 URL은 리소스 링크 실행 요청 메시지 간에 변경되지 않아야 한다. 플랫폼은 각 등록된 도구에 대해 단일하고 변하지 않는 엔드포인트 URL을 제공해야 한다. 이 URL 엔드포인트는 다양한 작업/작동을 지원할 수 있다. 모범 사례에 따라, LTI 기본 결과 서비스 제공자는 지원하지 않는 작업에 대해 미구현(unimplemented) 응답을 반환해야 한다.
This field MUST appear if the platform supports the LTI Basic Outcomes Service for receiving outcomes from any resource link launch request messages sent to a particular tool.
이 필드는 플랫폼이 특정 도구로 전송된 리소스 링크 실행 요청 메시지에서 결과를 수신하기 위해 LTI 기본 결과 서비스(LTI Basic Outcomes Service)를 지원하는 경우 반드시(MUST) 포함되어야 한다.
By best practice, an LTI Basic Outcome Service will only accept outcomes for launches from a user whose roles in the context contains the Learner context role (http://purl.imsglobal.org/vocab/lis/v2/membership#Learner), and thus will only provide a services.lis.result_sourcedid value in those resource link launch request messages. However, the platform should still send the services.lis.outcome_service_url for all launching users in that context, regardless of whether or not it provides a result_sourcedid value.
모범 사례에 따르면, LTI 기본 결과 서비스는 컨텍스트에서 Learner 컨텍스트 역할(http://purl.imsglobal.org/vocab/lis/v2/membership#Learner)을 포함하는 역할을 가진 사용자의 실행에 대해서만 결과를 수락하며, 따라서 해당 리소스 링크 실행 요청 메시지에서만 services.lis.result_sourcedid 값을 제공한다. 그러나 플랫폼은 result_sourcedid 값을 제공하는지 여부와 관계없이 해당 컨텍스트에서 실행하는 모든 사용자에 대해 services.lis.outcome_service_url을 여전히 전송해야 한다.
services.lis.person_sourcedid (OPTIONAL). The LIS identifier for the user account that initiated the resource link launch request. The exact format of the sourced ID may vary with the LIS integration; it is simply a unique identifier for the launching user.
services.lis.person_sourcedid (OPTIONAL). 리소스 링크 실행 요청을 시작한 사용자 계정에 대한 LIS 식별자를 나타낸다. LIS 통합 방식에 따라 sourced ID의 정확한 형식은 다를 수 있으며, 이는 실행 사용자에 대한 고유 식별자일 뿐이다.
The field's content and meaning are defined by LIS v2.0 [LIS-20].
이 필드의 내용과 의미는 LIS v2.0 [LIS-20]에서 정의된다.
services.lis.person_name_full, services.lis.person_name_given, services.lis.person_name_family (OPTIONAL). Some of the LIS-known names for the user account that initiated the resource link launch request. The content and meaning of these fields are defined by LIS v2.0 [LIS-20].
services.lis.person_name_full, services.lis.person_name_given, services.lis.person_name_family (OPTIONAL). 리소스 링크 실행 요청을 시작한 사용자 계정에 대해 LIS에서 알려진 이름 중 일부를 나타낸다. 이 필드의 내용과 의미는 LIS v2.0 [LIS-20]에서 정의된다.
services.lis.person_contact_email_primary (OPTIONAL). The LIS-known primary email contactinfo for the user account that initiated the resource link launch request. The content and meaning of this field is defined by LIS v2.0 [LIS-20].
services.lis.person_contact_email_primary (OPTIONAL). 리소스 링크 실행 요청을 시작한 사용자 계정에 대해 LIS에서 알려진 기본 이메일 연락처 정보를 나타낸다. 이 필드의 내용과 의미는 LIS v2.0 [LIS-20]에서 정의된다.
services.lis.result_sourcedid (OPTIONAL). An opaque identifier that indicates the LIS Result Identifier (if any) associated with the resource link launch request (identifying a unique row and column within the service provider's gradebook).
services.lis.result_sourcedid (OPTIONAL). 리소스 링크 실행 요청과 연결된 LIS 결과 식별자(LIS Result Identifier)(해당되는 경우)를 나타내는 불투명한 식별자이다. 이는 서비스 제공자의 성적표(gradebook) 내의 고유한 행(row)과 열(column)을 식별한다.
This field's value MUST be unique for every combination of context.id, resource_link.id, and user.id. The value may change for a particular resource_link.id + user.id from one resource link launch request to the next, so the tool should retain only the most recent value received for this field (for each context.id + resource_link.id + user.id).
이 필드의 값은 반드시(MUST) context.id, resource_link.id, user.id의 조합마다 고유해야 한다. 특정 resource_link.id + user.id에 대해 리소스 링크 실행 요청이 변경될 때마다 값이 변경될 수 있으므로, 도구는 이 필드에 대해 각 context.id + resource_link.id + user.id 조합에 대해 가장 최근에 받은 값만 유지해야 한다.
E. Full example resource link request
E. 전체 리소스 링크 요청 예시
The LTI resource link launch request message JSON object follows the form in this example. The smaller examples in § 5. Resource link launch request message are excerpts from this more complete example message object representation. Note that the vast majority of the properties are optional and may not appear in most resource link launch request messages.
LTI 리소스 링크 실행 요청 메시지의 JSON 객체는 아래 예시와 같은 형식을 따른다. § 5. 리소스 링크 실행 요청 메시지(Resource Link Launch Request Message)의 소규모 예시는 이 보다 완전한 예시 메시지 객체 표현에서 발췌된 것이다. 대부분의 속성은 선택적이며, 대부분의 리소스 링크 실행 요청 메시지에는 나타나지 않을 수 있음을 유의해야 한다.
{
"iss": "https://platform.example.edu",
"sub": "a6d5c443-1f51-4783-ba1a-7686ffe3b54a",
"aud": ["962fa4d8-bcbf-49a0-94b2-2de05ad274af"],
"exp": 1510185728,
"iat": 1510185228,
"azp": "962fa4d8-bcbf-49a0-94b2-2de05ad274af",
"nonce": "fc5fdc6d-5dd6-47f4-b2c9-5d1216e9b771",
"name": "Ms Jane Marie Doe",
"given_name": "Jane",
"family_name": "Doe",
"middle_name": "Marie",
"picture": "https://platform.example.edu/jane.jpg",
"email": "jane@platform.example.edu",
"locale": "en-US",
"https://purl.imsglobal.org/spec/lti/claim/deployment_id":
"07940580-b309-415e-a37c-914d387c1150",
"https://purl.imsglobal.org/spec/lti/claim/message_type": "LtiResourceLinkRequest",
"https://purl.imsglobal.org/spec/lti/claim/version": "1.3.0",
"https://purl.imsglobal.org/spec/lti/claim/roles": [
"http://purl.imsglobal.org/vocab/lis/v2/institution/person#Student",
"http://purl.imsglobal.org/vocab/lis/v2/membership#Learner",
"http://purl.imsglobal.org/vocab/lis/v2/membership#Mentor"
],
"https://purl.imsglobal.org/spec/lti/claim/role_scope_mentor": [
"fad5fb29-a91c-770-3c110-1e687120efd9",
"5d7373de-c76c-e2b-01214-69e487e2bd33",
"d779cfd4-bc7b-019-9bf1a-04bf1915d4d0"
],
"https://purl.imsglobal.org/spec/lti/claim/context": {
"id": "c1d887f0-a1a3-4bca-ae25-c375edcc131a",
"label": "ECON 1010",
"title": "Economics as a Social Science",
"type": ["http://purl.imsglobal.org/vocab/lis/v2/course#CourseOffering"]
},
"https://purl.imsglobal.org/spec/lti/claim/resource_link": {
"id": "200d101f-2c14-434a-a0f3-57c2a42369fd",
"description": "Assignment to introduce who you are",
"title": "Introduction Assignment"
},
"https://purl.imsglobal.org/spec/lti/claim/tool_platform": {
"guid": "ex/48bbb541-ce55-456e-8b7d-ebc59a38d435",
"contact_email": "support@platform.example.edu",
"description": "An Example Tool Platform",
"name": "Example Tool Platform",
"url": "https://platform.example.edu",
"product_family_code": "ExamplePlatformVendor-Product",
"version": "1.0"
},
"https://purl.imsglobal.org/spec/lti/claim/target_link_uri":
"https://tool.example.com/lti/48320/ruix8782rs",
"https://purl.imsglobal.org/spec/lti/claim/launch_presentation": {
"document_target": "iframe",
"height": 320,
"width": 240,
"return_url": "https://platform.example.edu/terms/201601/courses/7/sections/1/resources/2"
},
"https://purl.imsglobal.org/spec/lti/claim/custom": {
"xstart": "2017-04-21T01:00:00Z",
"request_url": "https://tool.com/link/123"
},
"https://purl.imsglobal.org/spec/lti/claim/lis": {
"person_sourcedid": "example.edu:71ee7e42-f6d2-414a-80db-b69ac2defd4",
"course_offering_sourcedid": "example.edu:SI182-F16",
"course_section_sourcedid": "example.edu:SI182-001-F16"
},
"http://www.ExamplePlatformVendor.com/session": {
"id": "89023sj890dju080"
}
}The platform turns this JSON object into a JWT to include in the resource link launch request message body. After encoding as a JWT, the platform sends the message as a form post using the id_token parameter (the JWT data in the following example is not complete for conciseness).
플랫폼은 이 JSON 객체를 JWT로 변환하여 리소스 링크 실행 요청 메시지 본문에 포함한다. JWT로 인코딩된 후, 플랫폼은 이 메시지를 id_token 매개변수를 사용하여 폼 포스트(form post)로 전송한다. (아래 예시의 JWT 데이터는 간결성을 위해 전체 데이터가 포함되어 있지 않다.)
POST https://example.tool.com/videos/f7701643-d79a-468a-ba8e-998f98b71638
Content-Type: application/x-www-form-urlencoded
id_token=eyJhbGciOiJIAzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL3BsYXRmb3JtLmV4YW1wbGUub3JnIiwic3ViIjoiYTZkNWM0NDMtMWY1MS00NzgzLWJhMWEtNzY4NmZmZTNiNTRhIiwiYXVkIjpbIjk2MmZhNGQ4LWJjYmYtNDlhMC05NGIyLTJkZTA1YWQyNzRhZiJdLCJleHAiOjE1MTAxODU3MjgsImlhdCI6MTUxMDE4NTIyOCwiYXpwIjoiOTYyZmE0ZDgtYmNiZi0...F. Revision History
F. 개정 이력
This section is non-normative.
이 섹션은 비규범적(non-normative)이다.
F.1 Version History
F.1 버전 이력
| Spec Version No. | Document Version No. | Release Date | Comments |
|---|---|---|---|
| v1.0 Final | 17 May 2010 | The first formal release of the Final specification. This document is released for public adoption. 이 문서는 최종 표준(Final Specification)의 첫 번째 공식 릴리스이다. 이 문서는 공공 채택을 위해 공개되었다. | |
| v1.1 Final | 13 March 2012 | Added the tool registration and grade return use cases. 도구 등록 및 성적 반환 사용 사례가 추가되었다. | |
| v1.3 Final | 16 April 2019 | Adopts the IMS Security Framework specification for authorization/authentication flows, adds new terminology, and includes supports for the LTI Advantage services. 승인/인증 흐름을 위해 IMS 보안 프레임워크 표준을 채택하고, 새로운 용어를 추가하며 LTI Advantage 서비스에 대한 지원을 포함하였다. | |
| v1.3 Final | 14 May 2019 | Adds a clarifying statement related to the use of client_id to § 6.2 Token endpoint claim and services. § 6.2 토큰 엔드포인트 클레임 및 서비스에서 client_id 사용에 대한 명확한 설명이 추가되었다. | |
| v1.3 Final | 30 July 2019 | Adds target_link_uri to the example in example link request. 예시 링크 요청(example link request)에 target_link_uri가 추가되었다. | |
| v1.3 Final | 29 October 2019 | Clarifies the use and descriptions of substitution parameters. 대체 매개변수(substitution parameters)의 사용 및 설명이 명확해졌다. | |
| v1.3 Final | 21 September 2020 | Updates and corrects some inter-document links to point to the proper sections. 문서 간 링크를 올바른 섹션으로 업데이트하고 수정하였다. | |
| v1.3 Final | 1 | 1 July 2021 | Clarifies and updates parts of the specification, including: - new details about JWKS exchange options; - adds releaseDateTime for line item submissions; - adds optional TestUser role. 다음을 포함하여 표준의 일부를 명확히 하고 업데이트하였다. - JWKS 교환 옵션에 대한 새로운 세부사항 추가; - 라인 아이템 제출(line item submissions)을 위한 releaseDateTime 추가; - 선택적 TestUser 역할 추가. |
| v1.3 Final | 2 | 24 January 2023 | Add deployment_id to an OAuth token request. A tool SHOULD include this on all requests going forward. (docs) Clarify allowable values for custom properties. (docs) Add locale to user information Add new substitution variables for date management. (docs) Minor grammar corrections. OAuth 토큰 요청에 deployment_id를 추가. 도구는 앞으로 모든 요청에서 이를 포함해야 한다(SHOULD). (문서) 사용자 정의 속성(custom properties)에 허용 가능한 값 명확화. (문서) 사용자 정보에 locale 추가. 날짜 관리(date management)를 위한 새로운 대체 변수 추가. (문서) 사소한 문법 수정. |
| v1.3 Final | 3 | 7 Feb 2023 | Add User.gradeLevels.oneRoster and User.gradeLevels.. (docs) Add Context.gradeLevels.oneRoster and Context.gradeLevels.. (docs) |
G. References
G. 참고문헌
G.1 Normative references
G.1 규범적 참조
[BCP47]
Tags for Identifying Languages. A. Phillips, Ed.; M. Davis, Ed.. IETF. September 2009. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc5646
[LIS-20]
IMS Global Learning Information Services v2.0. L. Feng; W. Lee; C. Smythe. IMS Global Learning Consortium. June 2011. URL: https://www.imsglobal.org/lis/
[LTI-11]
IMS Global Learning Tools Interoperability (LTI)® Implementation Guide. G. McFall; M. McKell; L. Neumann; C. Severance. IMS Global Learning Consortium. March 13, 2012. URL: https://www.imsglobal.org/specs/ltiv1p1
[LTI-AGS-20]
IMS Global Learning Tools Interoperability (LTI)® Assignment and Grade Services. C. Vervoort; E. Preston; M. McKell; J. Rissler. IMS Global Learning Consortium. April 2019. IMS Final Release. URL: https://www.imsglobal.org/spec/lti-ags/v2p0/
[LTI-BO-11]
IMS Global Learning Tools Interoperability (LTI)® Basic Outcomes. C. Vervoort. IMS Global Learning Consortium. 7 May 2019. URL: https://www.imsglobal.org/spec/lti-bo/v1p1/
[LTI-CERT-13]
IMS Global Learning Tools Interoperability (LTI)® Advantage Conformance Certification Guide. D. Haskins; M. McKell. IMS Global Learning Consortium. April 2019. IMS Final Release. URL: https://www.imsglobal.org/spec/lti/v1p3/cert/
[LTI-CORE-13-ERRATA]
IMS Global Learning Tools Interoperability (LTI)® Core Specification v1.3 Errata. IMS Global Learning Consortium. URL: https://www.imsglobal.org/spec/lti-core/v1p3/errata/
[LTI-DL-20]
IMS Global Learning Tools Interoperability (LTI)® Deep Linking 2.0. C. Vervoort; E. Preston. IMS Global Learning Consortium. April 2019. IMS Final Release. URL: https://www.imsglobal.org/spec/lti-dl/v2p0/
[LTI-IMPL-13]
IMS Global Learning Tools Interoperability (LTI)® Advantage Implementation Guide. C. Vervoort; J. Rissler; M. McKell. IMS Global Learning Consortium. April 2019. IMS Final Release. URL: https://www.imsglobal.org/spec/lti/v1p3/impl/
[OpenID-14]
Reference not found.
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC2396]
Uniform Resource Identifiers (URI): Generic Syntax. T. Berners-Lee; R. Fielding; L. Masinter. IETF. August 1998. Draft Standard. URL: https://www.rfc-editor.org/rfc/rfc2396
[RFC3987]
Internationalized Resource Identifiers (IRIs). M. Duerst; M. Suignard. IETF. January 2005. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc3987
[RFC4122]
A Universally Unique IDentifier (UUID) URN Namespace. P. Leach; M. Mealling; R. Salz. IETF. July 2005. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc4122
[SEC-10]
IMS Global Security Framework v1.0. C. Smythe; C. Vervoort; M. McKell; N. Mills. IMS Global Learning Consortium. April 2019. IMS Final Release. URL: https://www.imsglobal.org/spec/security/v1p0/
H. List of Contributors
H. 기여자 목록
The following individuals contributed to the development of this document:
이 문서 개발에 기여한 사람들은 다음과 같다.
| Name | Organization | Role |
|---|---|---|
| Paul Gray | Learning Objects | |
| Viktor Haag | D2L | |
| Dereck Haskins | IMS Global | |
| Martin Lenord | Turnitin | |
| Karl Lloyd | Instructure | |
| Mark McKell | IMS Global | |
| Nathan Mills | Instructure | |
| Bracken Mosbacker | Lumen Learning | |
| Marc Phillips | Instructure | |
| Eric Preston | Blackboard | Editor |
| James Rissler | IMS Global | Editor |
| Charles Severance | University of Michigan | |
| Lior Shorshi | McGraw-Hill Education | |
| Colin Smythe | IMS Global | |
| Claude Vervoort | Cengage | Editor |
| James Tse | ||
| Jim Walkoski | D2L |
한국어 번역
| Name | Organization | Role |
|---|---|---|
| 조용상 | 1EdTech Korea 의장 | 한림대 객원교수| 데이터드리븐, 위키드스톰, 에딘트 수석 아키텍처 | 번역 |
| 이정준 | 위키드스톰 | 번역 |
| 고동완 | 데이터드리븐 | 검토 |
| 김기범 | 데이터드리븐 | 검토 |
| 김동근 | 데이터드리븐 | 검토 |
| 원동일 | 에딘트 | 검토 |
| 이지훈 | 에딘트 | 검토 |
