Discourse LTI 플러그인은 LTI 1.3 표준을 통해 Discourse가 다양한 학습 관리 시스템(LMS)과 통합할 수 있게 해줍니다.
설치 가이드
이 플러그인은 Discourse 코어에 번들로 포함됩니다. 별도로 설치할 필요가 없습니다.
이 플러그인은 여러 학습 관리 시스템에서 지원하는 LTI 1.3 인증 표준을 구현합니다. Discourse는 LTI 표준 내에서 “Tool(도구)” 역할을 수행합니다. 설정이 완료되면, 사용자는 학습 관리 시스템에서 버튼/링크를 클릭하여 즉시 Discourse에 로그인할 수 있습니다.
정확한 설정 방법은 사용 중인 학습 관리 시스템에 따라 달라집니다. 하지만 일반적으로 다음과 같습니다:
학습 관리 시스템에서 새로운 “Tool(도구)” 항목을 생성합니다.
LTI 버전: 1.3
Launch URL: 사이트의 아무 URL이나 지정 가능합니다. 사용자는 로그인 후 여기로 이동합니다.
Tool Public Key: 비워 둡니다. Discourse는 LMS로 데이터를 전송하지 않습니다.
LMS에서 ‘Authorization endpoint(인가 엔드포인트)’, “Tool Client ID(도구 클라이언트 ID)”, “Platform Issuer ID(플랫폼 발급자 ID)” 및 "Platform Public Key(플랫폼 공개 키)"를 찾아 Discourse의 관련 사이트 설정에 추가합니다. Discourse에서 설정은 사이트 설정 UI에서 lti를 검색하여 찾을 수 있습니다.
학습 관리 시스템이 사용자 이메일이 검증되었음을 보장하는 경우, lti email verified 사이트 설정을 활성화하세요. 경고: LMS가 이메일을 검증하지 않는 경우, lti email verified를 활성화하는 것은 보안 위험을 초래할 수 있습니다.
lti enabled 사이트 설정을 켜세요.
이 설명이 사용 중인 LMS에 적용되지 않는다면, 아래 주제에 게시해 주시면 최선을 다해 설명을 업데이트하겠습니다.
사이트가 invite_required인 경우 어떻게 하나요?
사용자가 처음 로그인할 때 Discourse 초대 수락 플로우를 거치도록 하려면, LTI "Custom Properties(사용자 정의 속성)"를 사용하여 Discourse 초대 링크를 지정할 수 있습니다. 신규 사용자는 초대 링크로, 기존 사용자는 일반 Launch URL로 이동합니다. 예를 들어:
속성 이름
속성 값
discourse_invite_link
https://discourse.example.com/invites/abcdefg
FAQ
이 플러그인은 동시에 여러 LMS 시스템과의 통합을 지원하나요?
현재 이 플러그인은 한 사이트당 하나의 LMS만 연결할 수 있도록 지원합니다. LTI client IDs 사이트 설정은 여러 값을 허용하지만, 이는 일부 LMS 시스템이 **코스(강의)**별로 클라이언트 ID를 하나씩 설정하기 때문입니다.
I am one of our admins and also a software engineer. I think the issue I am having has to do with cookies and the “state” between discourse and Canvas not matching.
This is the error I am getting in Discourse logs
(lti) Authentication failure! state_mismatch: StandardError, State parameter did not match the session
For the public key, you can navigate to https://<your_canvas_url>/api/lti/security/jwks and copy the second key. Then you can go to JWK to PEM Converter Online – Free | 8gwifi.org and paste it in there and convert. Then copy the text between-----BEGIN/END PUBLIC KEY----- and paste that into the Lti platform public key in the Discourse LTI settings. Then save.
Here’s the caveat. Those JWKs that Canvas generate are rotated, seemingly monthly. Once that second key changes, the LTI will break and you’ll need to go replace it with the new one following Step 3.
Discourse LTI plugin will have to support a Public JWK URL for it to stay current.
This plugin is now bundled with Discourse core as part of Bundling more popular plugins with Discourse core. If you are self-hosting and use the plugin, you need to remove it from your app.yml before your next upgrade.