Dokumentacja AlgoJudge0.2

Logowania zewnętrzne i platformy LTI

Komu ta instalacja ufa, że poświadczy tożsamość, i ile wart jest token od takiego dostawcy.

Dwa obszary, jedno uprawnienie — provider:manage — bo gdy rejestrujesz platformę LTI, powstaje wiersz dostawcy: to ta sama decyzja o tym, komu ta instalacja ufa, że poświadczy, kim ktoś jest.

Po system:administrator jest to najniebezpieczniejszy klucz w panelu i nie ma go w dostarczanej roli manager.

Logowania zewnętrzne

Których dostawców tożsamości ta instalacja przyjmuje i ile wart jest tu token od każdego z nich.

Rejestracja

Pole
Nazwato, co pisze przycisk logowania
Slugpojawia się w adresie logowania. Zmiana psuje adres powrotny
Issuerstąd discovery znajduje endpointy i klucze. HTTPS, poza pętlą zwrotną
Client id, client secretsekret jest przechowywany i nigdy nie odczytywany z powrotem
Ścieżka claimunazwy po kropkach, groups albo realm_access.roles
Gdzie ludzie zarządzają swoimi danymikonta należącego do dostawcy nie da się edytować tutaj, więc ekran odsyła ich tam
Gdzie ludzie usuwają konto u dostawcyoferowane obok przycisku usuwającego konto tutaj. Puste — link nie jest pokazywany

Ekran wypisuje adres przekierowania do wpisania u dostawcy, z przyciskiem kopiowania. Wypisuje samą ścieżkę — dostawca chce jej za adresem tej instalacji. Pomyłka wyjdzie dopiero na końcu czyjegoś pierwszego logowania, i to komunikatem od dostawcy, a nie stąd.

Puste pole sekretu niczego nie kasuje. Znaczy zostaw przechowany bez zmian, a opis mówi, w którym z dwóch stanów jesteś.

Zarejestrowany dostawca jest drogą wejścia, a ekrany ją rysują. Załóż konto pojawia się wszędzie tam, gdzie taka droga jest — bo ta instalacja przyjmuje rejestracje lokalne albo bo jej ekran rejestracji wskazuje dostawcę — więc instalacja bez własnych rejestracji nadal oferuje tę drogę, którą ma. Każdy z tych dwóch ekranów można też wysłać prosto do dostawcy, zamiast go rysować. Jedno i drugie jest ustawieniem instalacji, a nie dostawcy: Instancja.

Mapowanie

Reguła mapowania to wartość ze ścieżki claimu i role, które ona nadaje — role instalacji, bo mapowanie należy do instalacji, i dowolnie wiele naraz.

Rolę wybierasz z listy, a nie wpisujesz jej nazwy, i reguła zapamiętuje samą rolę, a nie jej ówczesną nazwę. Zmiana nazwy roli niczego tu więc nie psuje; psuje to zmiana nazwy grupy u dostawcy, bo nazwę grupy reguła porównuje jako napis — i to tej zmiany trzeba pilnować. To cały język: ścieżka po kropkach i wartość, nigdy wyrażenie — wyrażenie w konfiguracji dostawcy jest kodem wykonywanym na zawartości tokenu.

Gdy nic nie pasuje — wybierasz między odmową logowania a nadaniem zestawu domyślnego. Zestaw to dowolna liczba ról, wybranych z tej samej listy co w regule i zapamiętanych tak samo — po identyfikatorze. Dotyczy zarówno pierwszego logowania, jak i kogoś, kto wypadł z grupy.

Dwie reguły są egzekwowane i nie da się ich wyłączyć

system:administrator nigdy nie może zostać nadany przez claim, a nikt nie zmapuje uprawnienia, którego sam nie ma. Pierwszej Server pilnuje w obie strony — droga na odwrót, gdzie regułę pisze się najpierw, a uprawnienie dopisuje do roli potem, też jest odrzucana, a token, który je niesie, i tak zostaje z niego obrany przy logowaniu. Drugiej pilnuje w chwili zapisu reguły.

Nadanie z mapowania jest przepisywane przy każdym logowaniu i wiąże role, które wskazały reguły: claim może pasować do kilku reguł, a wkład jest sumą wszystkich ról, które one nazywają. Zmiana samej roli dosięga jej posiadaczy od razu, tak samo jak wszędzie indziej. Na kolejne logowanie czeka to, które role są związane: zmieniona reguła albo przeniesienie kogoś do innej grupy w katalogu dosięgną go dopiero wtedy. Poprawka jego nadania zrobiona ręcznie nie dosięgnie go wcale — lista Nadań oznacza taki wiersz dostawcą, od którego przyszedł, i nie pozwala go edytować. Zobacz Uprawnienia i nadania.

Kolejka usunięć kont

Obok dostawców jest kolejka kont zgłoszonych do usunięcia — w większości przez kanał zwrotny dostawcy, i dlatego stoi razem z dostawcą, który go otworzył.

  • Oczekuje mieści się w swoich dwudziestu czterech godzinach i możesz to zatrzymać.
  • Ma uprawnienia systemowe to ten wpis, który ktoś musi przeczytać: powiązanie zostało zdjęte, a konta nie opróżniono. Webhook zdolny uciszyć administratora jest wektorem ataku, a nie funkcją.

Dostawca zgłasza usunięcia tylko wtedy, gdy włączysz mu ten kanał i ustawisz jego sekret.

Platformy LTI

Platformy kursowe, które mogą otwierać aktywności swoim studentom. AlgoJudge implementuje LTI 1.3; nie jest certyfikowany przez 1EdTech, i ekran to mówi.

Żadna platforma nie wpuszcza się tu sama do pracy. Albo wpisujesz ją ręcznie, albo rejestruje się na zapowiedź, którą ktoś tutaj utworzył — i tak czy inaczej trafia tu z wyłączonymi uruchomieniami i bez prawa orzekania o tożsamości. Tych dwóch rzeczy platforma nie nadaje sobie sama.

Issuer, client id, identyfikator wdrożenianie da się ich potem zmienić: wisi na nich każde uruchomienie i każde powiązanie tożsamości
Adresy zestawu kluczy publicznych, tokenu dostępowego i autoryzacjinależą do platformy
Co nadają role z uruchomieniapo wierszu na rolę LTI — Learner, Instructor, podrola w rodzaju Instructor#TeachingAssistant — i to, ile jest tu warta: rola instalacji albo zestaw, do którego aktywność zapisuje uczestników lub prowadzących. Platforma zaczyna od tego drugiego, więc aktywność, która wybrała własne role, jest respektowana bez ruszania tych reguł
Przyjmuj uruchomieniaodwracalny przełącznik. Platformy nie usuniesz, dopóki jakikolwiek kurs ma z niej aktywność

Nie ma tu żadnego sekretu, a jego brak nie jest luką: LTI uwierzytelnia narzędzie podpisem, a klucz prywatny narzędzia nigdy nie opuszcza Servera. Co w niej wpisać wypisuje cztery adresy do wklejenia w konfigurację narzędzia zewnętrznego oraz parametry własne, bez których uruchomienie nie potrafi stwierdzić, kto przyszedł.

Orzekanie o tożsamości to ten niebezpieczny przełącznik

Gdy włączysz ta platforma może orzekać, kim ktoś jest, uruchomienie łączy się z kontem AlgoJudge o nazwie użytkownika, którą przysyła platforma — więc przejęty Moodle staje się drogą do tych kont. Domyślnie przełącznik jest wyłączony. Zostaw go tak, chyba że obie strony administrują ci sami ludzie.

Zawęża go slug dostawcy tożsamości: kont, które nie przyszły przez tego dostawcę — lokalnych i administratorskich — nie da się w ten sposób przejąć.

Oczekiwane rejestracje

Platforma może zarejestrować się sama, jeśli ktoś tutaj na nią czeka. Utwórz oczekiwanie z notatką, co to jest, i przekaż adres osobie administrującej platformą — działa raz, przez pół godziny. Możesz je odwołać, zanim ktoś go użyje.

Podpięcia w kursach

Stąd kursy sięgają po aktywności tej instalacji. Jedna aktywność może być podpięta w więcej niż jednym kursie: uruchomienia z pierwszego kursu działają od razu, a od drugiego uruchomienie czeka, aż ktoś zgodzi się na współdzielenie — zgoda oznacza, że aktywność zasila oba dzienniki ocen. Podpięcia nie cofniesz stąd: wysłane już oceny zostają tam, gdzie je wysłano, więc usuwasz je w kursie.

Kursowi, który nie powinien niczego współdzielić, daj temu kursowi własną kopię — powstaje ona tak samo jak przy kopiowaniu aktywności.

Kto jest w kursie czyta listę uczestników platformy na żądanie — nic tutaj nie odświeża się samo — i pokazuje, ilu z nich ma konto tutaj. Dopasowuje po nazwie użytkownika przysyłanej przez platformę; adres e-mail nigdy do tego nie służy, a platforma, która nie wysyła nazw użytkowników, nie dopasuje nikogo. Gdy zapiszesz ich do aktywności, każdy dostaje powiązanie wstępne, dopóki sam jej nie otworzy, oraz role, które reguły tej platformy wiążą z jego rolą w kursie.

Dopisuje i nigdy nie zabiera. Kto został zdegradowany na platformie, zachowuje to, co ma tutaj, a roli zdjętej ręcznie nie przywróci ani kolejne uruchomienie, ani kolejne odczytanie listy uczestników.

Wybór z poziomu kursu

Platforma może też pozwolić komuś wybrać aktywność po swojej stronie, w trakcie dodawania narzędzia do kursu. Taka osoba dostaje listę aktywności, którymi może zarządzać — decyduje o tym to samo uprawnienie co wszędzie indziej, więc lista nie zaproponuje niczego, czego ta osoba nie otworzyłaby również tutaj.

To platforma decyduje, czy wolno wybrać jedną, czy kilka, a lista się do tego stosuje: jeśli platforma prosiła o jedną, wybranie drugiej zostanie odrzucone, zamiast po cichu pominąć resztę.

Wraca jeden odnośnik na aktywność, z parametrami własnymi, których potrzebuje uruchomienie. Nic o ocenach nie jest przy tym wysyłane — kolumna w dzienniku powstaje przy pierwszym wysłanym wyniku, a nie przy tworzeniu odnośnika.

Co trafia do dziennika ocen

Wyniki wracają same, mniej więcej raz na minutę, a reguła mieści się w jednym zdaniu:

Wynik trafia do dziennika dokładnie wtedy, kiedy zgłaszający uczestnik może go zobaczyć.

Aktywność z wynikami tylko dla prowadzących nie wysyła więc niczego, a zamrożony ranking odracza wszystko do odmrożenia. Prowadzący też wtedy wyniku nie widzi — i jest to koszt, a nie przeoczenie: dziennik ocen nie potrafi pokazać wyniku jednemu czytelnikowi, a zataić go przed drugim, więc w czasie zamrożenia źródłem prawdy jest AlgoJudge, a kurs celowo zostaje w tyle.

O tym, co wyląduje, decydują jeszcze trzy rzeczy:

  • Najlepsza próba to najlepszy ułamek, nie najwyższy surowy wynik — 1 na 1 bije 70 na 100.
  • Zgłoszenie wyłączone z klasyfikacji się nie liczy, a osoba, której jedyne liczone zgłoszenie zostało wyłączone, wraca z zerem, zamiast wypaść z zestawienia. Wiersza, którego nikt nie liczy, nikt też nie poprawi.
  • Wynik grupy trafia do każdego jej członka, który ma tu powiązane konto.

Tam, gdzie przypisanie nie ustala maksimum, kolumna jest procentowa.

Nic nie jest nigdy wycofywane. Wysłane wyniki zostają wysłane — wyłączenie platformy zatrzymuje nowe i nie cofa niczego — a ocena, której nie udało się wysłać, jest ponawiana z rosnącym odstępem, zanim zostanie odpuszczona.

Czym zajmuje się administrator

Sam dostawca tożsamości nie jest częścią tego stosu. Działa obok niego, pod własną nazwą hosta. Wybór dostawcy i jego podłączenie opisuje Tożsamość, a stronę platformy — Podłączenie platformy kursowej, a dla Moodle, ekran po ekranie, Instalacja narzędzia w Moodle.

To, co robi potem prowadzący, opisuje Umieszczanie aktywności w kursie Moodle.

Na tej stronie