Identificar-nos a Moodle amb l’usuari de Google apps

esEspañol (Spanish)

Així, per exemple, si volem utilitzar l’aplicació Prezi i no volem tenir un altre usuari i una altra contrasenya, podem identificar-nos amb l’usuari que tinguem a Facebook. A través del protocol, serem redirigits al web de Facebook i, si en donem permís, Facebook comprovarà que les dades són correctes i ens tornarà al web de Prezi ja identificats.

Això mateix ho podem utilitzar per evitar que un alumne tingui un usuari al Google apps for education i un altre al Moodle. Podem configurar el Moodle per tal que, utilitzant el protocol Oauth 2, utilitzi usuaris de Google apps for education.
És important tenir en compte que habilitar aquesta opció no deshabilita les altres identificacions. Per tant, els usuaris que no es modifiquin seguiran entrant amb usuari i contrasenya sense cap problema.
Per aconseguir aquesta funcionalitat, haurem d’instal·lar al servidor Moodle un connector anomenat Oauth2 Authenticacion. Aquest connector també permet utilitzar usuaris de Facebook o de WindowsLive, però aquí ens centrarem amb els usuaris de Google apps for education.
Les instruccions dels desenvolupadors són molt senzilles, però quan s’implementa no resulten tan senzilles per les persones poc expertes. Així que citaré els passos que ens recomanen i comentaré els afegits que cal fer:
1.- Descarregar el connector de l’adreça https://moodle.org/plugins/view.php?plugin=auth_googleoauth2
Aquest connector serveix per les versions 2.1 i superior (inclosa la darrera, la 2.5)

2.- Afegir el connector a la carpeta /auth/googleoauth2/ del servidor
Ho podeu fer per FTP o a través d’alguna aplicació del vostre hosting.

3.- Dins del menú d’Administració del Moodle, habilitar el connector Google Oauth 2 (Administració del lloc > Connectors > Atenticació > Gestió de l’autenticació)
4.- Als paràmetres del connector Oauth 2 (Administració del lloc > Connectors > Atenticació > Google Oauth 2), introduir el Google client ID i  Google secret.
Aquí surt la primera dificultat pels inexperts en la matèria. Per aconseguir aquestes dades, ens caldrà anar a l’adreça següent: https://code.google.com/apis/console. En aquesta adreça, si tenim el Google apps for education, hi trobarem les dades que en caen (en la captura he esborrat part de les dades per seguretat).
Els desenvolupadors no ens ho avisen, però ja que estem en aquesta pàgina de l’API de Google, aprofitem i canviem un parell de coses més. Amb el botó Edit branding information, posem la Home page URL del vostre Moodle. I amb l’enllaç Edit settings, poseu la Redirect URLs. Ha de ser l’adreça del vostre Moodle, afegint-li auth/googleoauth2/google_redirect.php
Ara ja tenim configurat el Moodle i el Google per tal que entre ells es puguin passar identificacions.
5- Canviar la plantilla HTML d’entrada, afegint un codi.
Ens falta modificar la pàgina del Moodle on es demana l’usuai i la contrasenya. Aquesta pàgina (si el vostre tema no n’utilitza una d’específica), està a login/index_form.html
Editem aquest fitxer i al final de tot, afegim el codi següent (en negreta hi ha l’adreça de la imatge que vulgueu posar per tal que els usuaris hagin de clicar).


<?php
//get previous auth provider
$allauthproviders = optional_param('allauthproviders', false, PARAM_BOOL);
$cookiename = 'MOODLEGOOGLEOAUTH2_'.$CFG->sessioncookie;
if (empty($_COOKIE[$cookiename])) {
$authprovider = '';
} else {
$authprovider = $_COOKIE[$cookiename];
}
?>
<center>
<?php
echo get_string('signinwithanaccount','auth_googleoauth2');
?>
<div style="width:'1%'">
<?php
$displayprovider = ((empty($authprovider) || $authprovider == 'google' || $allauthproviders) && get_config('auth/googleoauth2', 'googleclientid'));
$providerdisplaystyle = $displayprovider?'display:inline-block;':'display:none;';
?>
<div class="singinprovider" style="<?php echo $providerdisplaystyle; ?>">
<a href="https://accounts.google.com/o/oauth2/auth?client_id=<?php echo get_config('auth/googleoauth2', 'googleclientid'); ?>&redirect_uri=<?php echo $CFG->wwwroot; ?>/auth/googleoauth2/google_redirect.php&scope=https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email&response_type=code">
<img width="118" height="52" src="adreça_de_la_imatge_del_boto" />
</a>
</div>
</center>

La pàgina per identificar-se quedarà, segons el tema i la imatge que trieu, d’una forma semblant a:
Clicant el botó, l’alumne (o professor) utilitzarà el seu usuari de Google apps for education. Si l’usuari no existeix al Moodle, automàticament el crearà.
Si ja existeix, haureu de fer un darrer pas per modificar-li el perfil indicant que voleu que utilitzi el Google Oauth 2
6- Modificar el perfil dels usuaris ja creats i triar identificació Google Oath2.
Els usuaris creats prèviament, si no els feu cap canvi seguiran entrant amb usuari i contrasenya. Si voleu que canviïn i entrin amb el Google apps for education, haureu d’entrar al seu perfil de Moodle i assegurar-vos de dues coses:
  • Que en el camp adreça electrònica tingui l’adreça correcte del seu usuari de Google apps for education.
  • Que en el mètode d’indentificació, tingui triat Google Oauth2.
 

esEspañol (Spanish)

27 Responses to “Identificar-nos a Moodle amb l’usuari de Google apps”

  1. Jonathan felfle ha dit:

    buenas tardes.

    necesito la ayuda de ustedes, realice el mismo procedimiento que indica la pagina pero al final cuando le doy aceptar me sale un error, no se si me esta molestando http://www.plataformavirtualcis.cartagenainterschool/moodle/auth/googleoauth2/google_redirect.php gracias

    • Jaume Feliu ha dit:

      Hola Jonathan,
      tengo poca información, pero fíjate que a la dirección que te da error le falta el .com
      Debería ser http://www.plataformavirtualcis.cartagenainterschool.com/moodle/auth/googleoauth2/google_redirect.php i seguramente no te daría el error.

      Comprueba que en tu fichero config.php de moodle, en la línia $CFG->wwwroot = ‘http://www.plataformavirtualcis.cartagenainterschool.com/moodle’; tengas puesto el .com
      A ver si es solo esto y queda solucionado.

    • Alfredo ha dit:

      Hola, estoy intentando instalarlo. Lo he subido por FTP, dentro de /auth/googleoauth2/

      El problema es que no lo veo en la lista para gestionar las extensiones de identificación.

      ¿Que me falta o qué hago mal? Gracias.

  2. Raül ha dit:

    Bones Jaume,

    en primer lloc agrair-te la feina realitzada, està molt ben documentada. En segon lloc, demanar-te ajuda en relació a un error, que no aconsegueix treure.

    Un cop realitzat la connexió amb Google apps, introdueixo el meu mail i passwd i em retorna el següent error:

    Falta el paràmetre obligatori (state)

    I no em deixa validar, llavors em retorna altre copa a la pantalla d’inici.

    Gràcies per tot

    • Jaume Feliu ha dit:

      Hola Raül,

      amb la descripció que em dones i la informació que tinc no sabria orientar-te de quin és el problema 🙁
      Quan jo ho vaig muntar fa un parell d’anys, vaig estar barallant-m’hi força, sobretot per fer les accions que els desenvolupadors del connector no explicaven. Però un cop descobert tot, em va funcionar perfectament.
      També és cert que amb aquests quasi dos anys, han tret versions noves del connector. Jo he anat actualitzant-los i no he hagut de realitzar cap acció més.
      Intenta revisar la informació dels desenvolupadors, a veure si trobes algun pas més que s’hagi de fer.

      • Rubén ha dit:

        He pogut comprobar que encara baixant-me la darrera versió del conector ting el mateix error que en Raül.

        Em surt el missatge:

        “A required parameter (state) was missing”

        pero no hi ha manera d’esbrinar perquè.

        Agrairia si ens poguessis donar un cop de ma o si algu ho ha pogut solventar que ens faciliti alguna alternativa.

        Moltes gracies per tot.

        • Jaume Feliu ha dit:

          Hola Rubén,
          m’he estat revisant el procés (ho vaig muntar fa un temps i com que funciona bé no ho he tocat més), i he vist que els de Google han canviat una mica la seva part, el punt 4 que explicava en l’article.
          Si aneu a https://code.google.com/apis/console, primer cal configurar APIS&Auth / Credentials (per aconseguir el Client ID i Client Secret ) i després cal configurar APIS&Auth / Consent screen amb l’adreça del vostre servidor Moodle.
          Heu fet aquestes dues comnfiguracions?

        • Rubén ha dit:

          si es el correcte

          • Efraim ha dit:

            Quan tingueu una resposta, si us plau, publiqueu-la. Gracies.

          • Jaume Feliu ha dit:

            En Rubén em va comentar per privat la següent solució. No sé si el que explica té efectes colaterals:

            “A entrar al Moodle em donava l’error que t’he comentat, el que he fet ha estat entrar a l’arxiu
            auth/googleoauth2/google_redirect.php
            i comentar les línies següents:

            if ($_SESSION[‘STATETOKEN’] !== required_param(‘state’, PARAM_TEXT)) {
            throw new moodle_exception(‘Invalid state parameter’);
            }

            després d’això m’ha deixat accedir facilment.”

  3. Efraim ha dit:

    Crec veure on està el problema. He creat un nou usuari entrant amb oauth2 i en el perfil de l’usuari nou creat, la població (suposo que en anglès ha de ser el camp ‘state’) està en blanc.

    No trobo de moment on s’ha de definir la població en el compte d’Apps for Education.

    • Jaume Feliu ha dit:

      Tots els meus usuaris que s’han creat automàticament a partir del Google apps tenen la població en blanc i no hi ha cap problema.
      Potser només et falla la creació de l’usuari.
      Prova a crear tu manualment un usuari al Moodle, indicant com a mètode d’autenticació oauth2, posant com a nom d’usuari l’adreça de correu electrònic del Google apps (i com a adreça també la mateixa adreça de correu electrònic).
      Com que l’usuari ja estarà creat, el Moodle no l’intentarà crear i igual s’identifica correctament.

  4. Rubén ha dit:

    Hola de nuevo,

    Como hago para deshabilitar el registro de los usuarios no registrados en moodle previamente.

    Ejemplo si accedo con email@gmail.com en el moodle me crea el usuario y yo no quiero que lo haga,unicamente que autentifique los existentes sin dejar que se registren nuevos.

    Gracias de Antemano

    • Jaume Feliu ha dit:

      En el menú de Adminstración del sitio / Extensiones / Identificación / Gestionar Identificación aparece la opción
      “Evitar la creación de cuentas al identificarse”, que por defecto no está marcada.
      Si la marcas, justamente evitarás que se creen usuario solos, qse tendrán que crear manualmente en Moodle.

  5. Sisco ha dit:

    Hola Jaume al noste institut tenim un problema que probablement ens pots ajudar a resoldre.
    A veure si m’explico bé.
    Des de fa dos cursos al nostre institut tenim google apps per educació que utilitzem per donar una adreça de correu pròpia (institutlasegarra.cat) a tots els alumnes i pares del centre.
    Amb aquesta adreça s’identifiquen per accedir a la intranet del centre i a més tenen totes les aplicacions google al seu abast.

    Per fer el manteniment de les adreçes i grups de google, vaig fer una petita app amb php utilitzant les llibreries zend-framework.
    Fins ara perquè google deixes donar d’alta / baixa /modificar adreces només calia identificar-se amb l’adreça de correu i contrasenya de l’administrador de google apps.
    Des del 20/abril ja no és possible. És obligatori identificar-te amb Aouth2.0
    I aquí està el meu problema, que no me’n surto.
    Em sembla que tinc dos opcions:
    a) Esbrinar com puc seguir utilitzant les llibreries de Zend. Però no veig per enlloc com fer-ho. Ho he preguntat al servei d’atenció de google apps i em diuen que ells no veuen que Zend s’hagi actualitzat.

    b) Deixar de banda les llibreries i utilitzar el php que dona google. Aquí encara vaig més perdut.
    Em sembla que faig bé lo de crear un projecte nou + escollir API que necessito (Admin SDK)
    Però després no sé com fer-ho per utilitzar les eines PHP amb les que podria susbstituir les llibreries de Zend.

    Em pots ajudar?
    Gràcies.

    • Jaume Feliu ha dit:

      Em sap greu Sisco, però no et puc ajudar. No he utilitzat mai les llibreries Zend i l’Aouth2.0 tampoc. Només he fet servir el conplement que explico i l’he configurat, però no en tinc experiència. Així que en saps més tu que jo que ja ho has remenat.

  6. Carolina Avila ha dit:

    Hola:

    Tengo dos dominios diferentes con Google Apps y deseo tener solo un Moodle pero que permita autenticar desde los dos dominios. En la configuración solo veo la opción de ingresar solo un Google cliente ID ¿cómo puedo permitir la autenticación con dos clientes de Google sin tener dos instancias de Moodle instaladas?

    Gracias
    Carolina

  7. Sergio ha dit:

    La explicación es clara, te lo agradezco.

    Llevo algunas horas peleando con ello y no hay manera:

    401. That’s an error.

    Error: invalid_client

    The OAuth client was not found.

    ¿Tienes idea del motivo de este error?

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir el correu brossa. Aprendre com la informació del vostre comentari és processada