Dokumentacja AlgoJudge0.1
Dla prowadzącego

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 dostarczanym szablonie 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 szablon uprawnień, który ona nadaje. 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. 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 szablonu 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, co tnie w obie strony: gdy zmienisz szablon, dosięgniesz tych osób przy ich następnym logowaniu, a gdy poprawisz ich nadanie ręcznie, nie dosięgniesz ich 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
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.

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