Anbindung edu-sharing als Tool in einem lms
Auf repo Seite:
iframe integration erlauben
Globale Sytemkonfiguration → Cluster Override
"frame-ancestors" setzen
angular.headers.Content-Security-Policy: { default-src: "* data: blob: 'self' gap://ready" connect-src: "*" img-src: "* data: blob:" style-src: "* 'unsafe-inline'" script-src: "* 'unsafe-inline' 'unsafe-eval' https://app-registry.edu-sharing.com" font-src: "'self' data:" frame-ancestors: "https://ltiplatform.there" }
cookie über iframe mitsenden:
Erweiterte Systemkonfiguration → homeApplication.properties.xml
cookie_attributes
SameSite=None; Secure
lti als auth method erlauben
Erweiterte Systemkonfiguration → homeApplication.properties.xml
allowed_authentication_types
lti
Automatisches Anlegen der Benutzer
Standardmäßig werden lti nutzer mit dem LTIPlattform usernamen + issuer (domain) gescoped in edu-sharing angelegt.
Ist die sso auth mit createUser = false (SSOAuthrorityMapper) konfiguriert muss sichergestellt werden das die Benutzer die über lti kommen bereits im repo existieren.
Hängt die lti platform und edu-sharing an dem selben sso, kann die Einstellung lti_scope_username=false verwendet werden. Damit wird verhindert das die usernamen gescoped werden. (Applikationsbeschreibung der registrierten LTI Plattform (Admin Tools → remote applikationen).
Dev environment lokal
- litplattform (zb moodle) auch über nip.io adresse ansprechen um same site cookie probleme zu verhindern. moodle nutzt eine iframe für die lti integration. problem ist das da die jessionid vom edu-sharing tomcat nicht mitgeschickt wird
- bei der dynamischen registrierung mach das repo einen backendcall zum moodle, dabei wird die nip.io adresse zu moodle mit localhost aufgelöst. um das zu verhindern muss in der repo /etc/hosts die domain auf die docker host ip gesetzt werden
docker exec -u root -it ${repocontainer} /bin/bash nano /etc/hosts 172.17.0.1 moodle.127.0.0.1.nip.io
- beim lti deeplink (übernehmen der resource) macht moodle einen backend call zum repo auf die keyset url. die muss auf die dockerhostip:8080 oder wenn der moodle docker container im gleichen docker netz hängt auf repository-service:8080 gehen.
- Achtung: scheinbar macht der interne curl von moodle da probleme moodle funktion "download_file_content"
Dev environment K8s mit bitnami moodle helm chart
helm upgrade --install testmoodle -f values.yaml oci://registry-1.docker.io/bitnamicharts/moodle
values.yaml:
global: storageClass: "ssd" ingress: enabled: true #"hostname" is needed look at chart docu, "hosts" is unlear hosts: - moodle.services.staging.cloud.schulcampus-rlp.de hostname: moodle.services.staging.cloud.schulcampus-rlp.de tls: true annotations: cert-manager.io/cluster-issuer: letsencrypt # tls: # - secretName: moodle-server-tls # hosts: # - moodle.services.staging.cloud.schulcampus-rlp.de moodlePassword: test1234! mariadb: auth: rootPassword: test1234! password: test1234! #mariadb: # primary: # persistence: # storageClass: "ssd" resources: requests: memory: 1024Mi cpu: 1000m limits: memory: 2048Mi cpu: 2000m
Dynamische Registrierung am beispiel moodle
Edu-Sharing
In den edu-sharing admin tools bei remote systeme → LTI Plattform Registrierung einen "Token hinzufügen"
Moodle
In moodle bei den external tools die Token url einfügen und Add LTI Advantage drücken. Danach das Tool "aktivieren"
Bei den Tool Einstellungen "Tool configuration usage" auf "Show in activity chooser and as preconfigured tool" stellen.