Moodle a ověření přes OAuth2 u Microsoftu

Moodle a ověření přes OAuth2 u Microsoftu

autor Robert Pecko -
Počet odpovědí: 9

Zdravím všechny,

    dnes jsem provedl aktualizaci Moodle na 3.8.4+ a zjistil jsem, ze ověřovaní uživatelů přes IMAP už není podporováno. Naše škola má účty v Azure AD a tak jsem se pro ověrování rozhodl použít OAuth2. Správce sítě mi vygeneroval v Azure ID klienta a Heslo klienta. Když jsem s ním mluvil, říkal, že postupoval dle návodu https://docs.moodle.org/38/en/OAuth_2_Microsoft_service a já dorazil jen kroky 14, 15, 16.

   Při snaze přhlásit se, se vyskytl nějaký problém a moc netuším co s tím, viz obrázek v příloze. Neřešil někdo stejný / podobný problém?

Děkuji za rady.


Příloha moodle OAuth2 chyba.png
Počet hodnocení: -
V odpovědi na Robert Pecko

Re: Moodle a ověření přes OAuth2 u Microsoftu

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři

a zjistil jsem, ze ověřovaní uživatelů přes IMAP už není podporováno

Plugin pro ověřování přes IMAP je stále k dispozici na adrese https://github.com/moodlehq/moodle-auth_imap a věřím, že by měl nadále fungovat i v posledních verzích.

V odpovědi na David Mudrák

Re: Moodle a ověření přes OAuth2 u Microsoftu

autor Robert Pecko -
Přeji pěkný den a děkuji za odpověd. Máte pravdu plugin IMAP je k dispozici. Situaci však trochu komplikuje náš přechod z vlastního mailového serveru na poštu k Microsoftu v rámci Office 365. A OAuth2 se prostě nabízí. Microsoft také chystá nějaké změny se SMTP (https://petri.com/microsoft-plans-disable-smtp-auth-exchange-online) a nevím jak to bude s IMAPem. Mohlo by to být tedy jen chvilkové řešení. Ale to mu úplně nerozumím, třeba se to IMAPu ani nedotkne.
S nastavení pluginu IMAP problém není, zkoušel jsem ho na testovací instalaci. Jen účty žáků a učitelů jsou bez kontextu (např. novakpetr) a po migraci mailů k MS je třeba pro přihlášení do Moodlu zadat kontext (např. novakpetr@skola.cz). To, pokud jsem to dobře pochopil, znamená u všech uživatelů (záznamů v tabulce přes 2000) dopsat kontext skola.cz. S některými záznamy si ani nevím rady např.: blaha@skola.cz.1464693644 (to číslo s tečkou, nevím proč), někteří tam kontext mají, další jsou úplně mimo např. mrluwis@ymail.com.1379926381 a ještě s číslem úsměv.
I když při přechodu na OAuth se připsání kontextu u všech uživatelů asi nevyhnu. Nebo se pletu?
Děkuji za odpověď.
V odpovědi na Robert Pecko

Re: Moodle a ověření přes OAuth2 u Microsoftu

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři

Ti uživatelé, kteří tam mají to číslo, budou všechno odstraněné uživatelské účty. Hodnota pole "deleted" bude u všech hádám "1". Při odstraňování uživatelů zůstává záznam s daným "id" v databázi. Hodnota pole "email" se ale přepíše MD5 hashem původního uživatelského jména a do pole "username" se vloží původní email následovaný UNIXovým časovým razítkem (timestamp, počet sekund od půlnoci 1. ledna 1970).

V odpovědi na David Mudrák

Re: Moodle a ověření přes OAuth2 u Microsoftu

autor Robert Pecko -
Dobrý den,
moc děkuji za reakci a objasnění. Tím se mi počet uživatelů, které jsou aktivní snižuje na cca 1400. Ještě bych se rád zeptal, zda vidíte nějaký problém v připsání kontextu do uživatelského jména (pole username) v tabulce mdl_user např. v phpmyadmin. Dojde tedy např. ke změně novakpetr -> novakpetr@skola.cz. Nebudou nejaké problémy? Nerozsype se mi databáze? V moodlu totiž nejde ručně editovat pole Uživatelské jméno, abych mohl přejmenování provést v administračním prostředí moodlu.
V odpovědi na Robert Pecko

Re: Moodle a ověření přes OAuth2 u Microsoftu

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři

Vždycky by bylo lepší mít nejprve možnost to zkusit na testovacím serveru. Ale vím, že to není vždycky úplně jednoduché - zejména když přijde na integraci s externími systémy.

Nízkoúrovňová změna pole "username" přímo v databázi by neměla být problém. Nejprve si samozřejmě ještě jednou ověřte na nějakém vybraném účtu, že to opravdu funguje a že se uživatel bude moci přihlásit. A samozřejmě jako vždy - před každou takovou změnou se hodí mít zálohu databáze.

V odpovědi na Robert Pecko

Re: Moodle a ověření přes OAuth2 u Microsoftu

autor Marie Hartlová -
Možná se ptáte na něco jiného... v nastavení pluginu office 365 je možnost přidat ke každému přihlášeni zadaný text tj. uživatel napíše novakpetr a OAuth2 si to přeloží např. na novakpetr@skola.cz.

Ještě se zeptám - máte nastavenou možnost vkládání souborů z onedrive? Mě se letos povedlo zprovoznit přihlašování office účtem akorát, když jsem přihlášená, nemohu vložit soubor z onedrivu. Když jsem byla přihlášena moodle účtem, vkládání z onedrivu šlo bez problémů...
V odpovědi na Marie Hartlová

Re: Moodle a ověření přes OAuth2 u Microsoftu

autor Robert Pecko -
Děkuji za snahu pomoci.
Nainstaloval jsem plugin Office 365. Bylo třeba nainstalovat ještě plugin Open ID. Pokud jsem to dobře pochopil, Open ID slouží k ověření (přihlášení) a plugin Office 365 se postará o integraci služeb od Microsoftu.
1) Chápu to tedy správně, že se jedná o další způsob ověření vůči Azure Active Directory?
2) Používám ID aplikace a secret key, který správce vygeneroval v Azuru pro modul OAuth2. Mohu ho použít zde? Nebo musí být vygenerován nový.

Při přihlášení pomocí OpenID dostávám v Moodle chybu:
Výjimka - Could not get app or system token

Informace o ladění:
Error code: generalexceptionmessage
Zásobník trasování:

line 96 of \local\o365\classes\utils.php: Exception thrown
line 280 of \local\o365\classes\utils.php: call to local_o365\utils::get_app_or_system_token()
line 134 of \auth\oidc\classes\loginflow\base.php: call to local_o365\utils::get_api()
line 205 of \auth\oidc\auth.php: call to auth_oidc\loginflow\base->get_userinfo()
line 4015 of \lib\moodlelib.php: call to auth_plugin_oidc->get_userinfo()
line 465 of \auth\oidc\classes\loginflow\authcode.php: call to create_user_record()
line 269 of \auth\oidc\classes\loginflow\authcode.php: call to auth_oidc\loginflow\authcode->handlelogin()
line 107 of \auth\oidc\classes\loginflow\authcode.php: call to auth_oidc\loginflow\authcode->handleauthresponse()
line 165 of \auth\oidc\auth.php: call to auth_oidc\loginflow\authcode->handleredirect()
line 29 of \auth\oidc\index.php: call to auth_plugin_oidc->handleredirect()

3) Že by stejný problém s tokenem jako při OAuth2?

Při dalších pokusech o přihlášení pomocí stejného uživatelského jména se zobrazí chyba:

The existing token for this user does not contain a valid user ID. Please contact your administrator.

Více informací o této chybě

Informace o ladění:
Error code: exception_tokenemptyuserid
Zásobník trasování:
  • line 421 of \auth\oidc\classes\loginflow\authcode.php: moodle_exception thrown
  • line 269 of \auth\oidc\classes\loginflow\authcode.php: call to auth_oidc\loginflow\authcode->handlelogin()
  • line 107 of \auth\oidc\classes\loginflow\authcode.php: call to auth_oidc\loginflow\authcode->handleauthresponse()
  • line 165 of \auth\oidc\auth.php: call to auth_oidc\loginflow\authcode->handleredirect()
  • line 29 of \auth\oidc\index.php: call to auth_plugin_oidc->handleredirect()

V odpovědi na Robert Pecko

Re: Moodle a ověření přes OAuth2 u Microsoftu

autor Robert Pecko -
Tak problém vyřešen.
V nastavení plugin OAuth2 byl zadán chybně authorization_endpoint a token_endpoint.
Děkuji všem za snahu pomoci a přeji pěkný den.