Shibbolet

Shibbolet

di Filippo Carnevali -
Numero di risposte: 14

Ciao a tutti,

sto valutando l'utilizzo di Shibbolet per integrare la mia piattaforma con un sistema di autenticazione più ampio ma di questo ambito sono un po' nuovo.

Ho già ricevuto i parametri dai sistemi informativi remoti che gestiscono il db delle credenziali e presto spero di poter installare shibbolet sulla macchina locale. 

La mia domanda è: come gestisce Moodle gli utenti che si iscrivono? Li iscrive come ospiti o studenti?

Se trova un utente già esistente come si comporta? Unisce i due record? Crea un doppione?

Qualcuno ha esperienza con questo tipo di autenticazione e mi può dare qualche dritta?

Media dei voti:  -
In riposta a Filippo Carnevali

Re: Shibbolet

di Andrea Bicciolo -
Immagine Core developers Immagine Plugin developers Immagine Translators

Ciao Filippo,

se stiamo parlando di autenticazione, il ruolo che  normalmente viene assegnato all'atto dell'autenticazione è "Utente autenticato": http://docs.moodle.org/26/en/Authenticated_user_role

Se un profilo utente esiste già in Moodle è possibile raccordarlo alla nuova modalità di autenticazione ma affinché Moodle possa individuare l'utente esistente, prima di attivare la nuova autenticazione  si renderà necessario aggiornare il profilo dell'utente in Moodle impostando lo stesso username che fornisce l'IdP e cambiando la modalità di autenticazione facendola corrispondere a quella che dovrà essere utilizzata, nel tuo caso Shibboleth. 

Prima di effettuare attività di questo genere su un ambiente di produzione può essere buona norma effettuare le prove opportune su un ambiente di test.

In riposta a Andrea Bicciolo

Re: Shibbolet

di Filippo Carnevali -

Grazie, 

procederò con qualche prova per capire come gestire le autenticazioni.

Una delle altre questioni che devo affrontare è come attribuire i "campi personalizzati" a questi utenti che arrivano da Shibbolet. Mi pare che Moodle non offra un automatismo di questo tipo. 

In riposta a Filippo Carnevali

Re: Shibbolet

di Angelo Calò -

Ciao Filippo,

noi a Padova utilizziamo Shibboleth e per l'attribuzione dei campi personalizzati del profilo è possibile passare al plugin un file di configurazione scritto in php...


Per farlo devi inserire nella pagina

tuositomoodle/admin/auth_config.php?auth=shibboleth

alla voce "API per la modifica dei dati:"

il percorso al file.

Spero di essere stato utile.

In riposta a Angelo Calò

Re: Shibbolet

di Filippo Carnevali -
Questo è molto interessante! Grazie!
Se hai tempo mi daresti qualche dettagli in più su funzionamento-formattazione-tipologia del file da linkare?
SI tratterebbe di una cosa preziosissima per la mole di lavoro che ci risparmierebbe qui in Università a Ferrara!
In riposta a Filippo Carnevali

Re: Shibbolet

di Matteo Scaramuccia -

Ciao Filippo,
hai per caso già letto il README del plug-in, https://github.com/moodle/moodle/blob/master/auth/shibboleth/README.txt o https://iam.alaska.edu/shib/wiki/MoodleShib?
Molto dipende dalla tua installazione/configurazione e da una certa capacità di tradurre il mapping in PHP, secondo la modalità descritta nella documentazione.

HTH,
Matteo

In riposta a Matteo Scaramuccia

Re: Shibbolet

di Filippo Carnevali -

Ciao Matteo!

Si mi son letto il readme varie volte ma, forse per una mia limitata conoscenza del php, non sono riuscito a ricondurre le spiegazioni a quella voce di impostazione. (o forse mi sono solo perso un pezzo, comunque me lo rileggo).

Grazie sorridente

## Update, avevo fatto un errore sciocco dettato dalla fretta, mi ero letto la prima parte e poi fatto una ricerca rapida cercando "API" o "data modification api" senza risultati. La parte a cui fare riferimento immagino sia "How to customize the way the Shibboleth user data is used in Moodle". Ora vedo se pur non essendo "skilled" in php riesco a capire come organizzarmi (e a chi chiedere) sorridente Grazie ancora.


In riposta a Filippo Carnevali

Re: Shibbolet

di Matteo Scaramuccia -

Lascio qui il riferimento, per la Community in Italiano, di quanto si sta discutendo in quella in Inglese circa il medesimo argomento: https://moodle.org/mod/forum/discuss.php?d=260612.

HTH,
Matteo

In riposta a Matteo Scaramuccia

Re: Shibbolet

di Pierpaolo Gallo -

Salve a tutti,

riprendo questa vecchia discusisone perchè oggi per la prima volta mi imbatto nell'autenticazione tramite shibboleth e ho dei problemi.

Il problema principale che riscontro al momento è questo

error


Ambiente:

OS Debian 3.2.65-1+deb7u2 x86_64
Apache 2.2.22
PHP 5.4.39-0
Moodle 2.8.5+ (Build: 20150313)


Qualcuno ha già riscontrato quest'errore? nasce da una sbagliata configurazione di shibboleth a livesso di server o del modulo su moodle?

Grazie mille e auguri per la prossima Pasqua

In riposta a Pierpaolo Gallo

Re: Shibbolet

di Matteo Scaramuccia -

Ciao Pierpaolo,
supponendo che il modulo per Apache sia stato ben compilato, sembra che il problema sia nella configurazione del file shibboleth[2].xml. Non ho esperienza diretta con questo modulo e cercando in rete trovo che una delle problematiche potrebbe essere la mancanza dell'entityID in //SessionInitiator. Altra cosa che noto è che, sempre dalla rete, la URL dell'endpoint di default dovrebbe terminare in /Shibboleth.sso/Login. Hai già provato anche a verificare cosa ti dica la pagina /Shibboleth.sso/Status?

Puoi condividere il file, inline al post (magari con un bel tag <pre />), ovviamente anonimizzandolo laddove necessario (es.: hostname)?

Altra voce da controllare è se SELinux sia disabilitato, mi sembra che lo sia di default in Debian ma non sono un debianista ;).

HTH,
Matteo

In riposta a Matteo Scaramuccia

Re: Shibbolet

di Pierpaolo Gallo -

Questo è il mio file shibboleth2.xml

spero possa essere d'aiuto

grazie come sempre a tutti


<SPConfig xmlns="urn:mace:shibboleth:2.0:native:sp:config"
xmlns:conf="urn:mace:shibboleth:2.0:native:sp:config"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
clockSkew="180">

<!--
By default, in-memory StorageService, ReplayCache, ArtifactMap, and SessionCache
are used. See example-shibboleth2.xml for samples of explicitly configuring them.
-->

<!--
To customize behavior for specific resources on Apache, and to link vhosts or
resources to ApplicationOverride settings below, use web server options/commands.
See https://spaces.internet2.edu/display/SHIB2/NativeSPConfigurationElements for help.

For examples with the RequestMap XML syntax instead, see the example-shibboleth2.xml
file, and the https://spaces.internet2.edu/display/SHIB2/NativeSPRequestMapHowTo topic.
-->

<!-- The ApplicationDefaults element is where most of Shibboleth's SAML bits are defined. -->
<ApplicationDefaults entityID="https://XXXXXXX.XX"
REMOTE_USER="eppn persistent-id targeted-id">

<!--
Controls session lifetimes, address checks, cookie handling, and the protocol handlers.
You MUST supply an effectively unique handlerURL value for each of your applications.
The value defaults to /Shibboleth.sso, and should be a relative path, with the SP computing
a relative value based on the virtual host. Using handlerSSL="true", the default, will force
the protocol to be https. You should also add a cookieProps setting of "; path=/; secure"
in that case. Note that while we default checkAddress to "false", this has a negative
impact on the security of the SP. Stealing cookies/sessions is much easier with this disabled.
-->
<Sessions lifetime="28800" timeout="3600" checkAddress="false" relayState="ss:mem" handlerSSL="false">

<!--
Configures SSO for a default IdP. To allow for >1 IdP, remove
entityID property and adjust discoveryURL to point to discovery service.
(Set discoveryProtocol to "WAYF" for legacy Shibboleth WAYF support.)
You can also override entityID on /Login query string, or in RequestMap/htaccess.
-->
<SSO discoveryProtocol="SAMLDS" discoveryURL="https://XXX.XXXXX.XX/idp/Authn/UserPassword">
SAML2 SAML1
</SSO>


<!-- SAML and local-only logout. -->
<Logout>SAML2 Local</Logout>




<!-- Extension service that generates "approximate" metadata based on SP configuration. -->
<Handler type="MetadataGenerator" Location="/Metadata"
signing="false">
<mdui:UIInfo xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui">
<mdui:DisplayName xml:lang="en">ENG DisplayName SP</mdui:DisplayName>
<mdui:DisplayName xml:lang="it">ITA DisplayName SP</mdui:DisplayName>
<mdui:Description xml:lang="en">ENG Description SP</mdui:Description>
<mdui:Description xml:lang="it">ITA Description SP</mdui:Description>
<mdui:InformationURL xml:lang="en">ENG_PAGE_INFO_URL</mdui:InformationURL>
<mdui:InformationURL xml:lang="it">ITA_PAGE_INFO_URL</mdui:InformationURL>
<mdui:Logo height="16" width="16"
xml:lang="en">ENG_LOGO_URL_HTTPS_16x16</mdui:Logo>
<mdui:Logo height="16" width="16"
xml:lang="it">ITA_LOGO_URL_HTTPS_16x16</mdui:Logo>
<mdui:Logo height="60" width="80"
xml:lang="en">ENG_LOGO_URL_HTTPS_80x60</mdui:Logo>
<mdui:Logo height="60" width="80"
xml:lang="it">ITA_LOGO_URL_HTTPS_80x60</mdui:Logo>
</mdui:UIInfo>
<md:AttributeConsumingService index="1">
<md:ServiceName xml:lang="en">ENG DisplayName SP</md:ServiceName>
<md:ServiceName xml:lang="it">ITA DisplayName SP</md:ServiceName>
<md:ServiceDescription xml:lang="en">ENG Description SP</md:ServiceDescription>
<md:ServiceDescription xml:lang="it">ITA Description SP</md:ServiceDescription>
<!-- example for the desiderd attribute: mail -->
<md:RequestedAttribute FriendlyName="mail"
Name="urn:oid:0.9.2342.19200300.100.1.3"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" />
<!-- example for the required attribute: eduPersonPrincipalName -->
<md:RequestedAttribute FriendlyName="eppn"
Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
isRequired="true" />
</md:AttributeConsumingService>
<md:Organization>
<md:OrganizationName xml:lang="en">ENG Org Name</md:OrganizationName>
<md:OrganizationName xml:lang="it">ITA Org Name</md:OrganizationName>
<md:OrganizationDisplayName xml:lang="en">ENG Org DisplayName</md:OrganizationDisplayName>
<md:OrganizationDisplayName xml:lang="it">ITA Org DisplayName</md:OrganizationDisplayName>
<md:OrganizationURL xml:lang="en">ENG_PAGE_ORG_URL</md:OrganizationURL>
<md:OrganizationURL xml:lang="it">ITA_PAGE_ORG_URL</md:OrganizationURL>
</md:Organization>
<md:ContactPerson contactType="technical">
<md:GivenName>System</md:GivenName>
<md:SurName>Support</md:SurName>
<md:EmailAddress>mailto:system.support@domainOrg.it</md:EmailAddress>
</md:ContactPerson>
</Handler>

<!-- Status reporting service. -->
<Handler type="Status" Location="/Status" acl="127.0.0.1"/>

<!-- Session diagnostic service. -->
<Handler type="Session" Location="/Session" showAttributeValues="false"/>

<!-- JSON feed of discovery information. -->
<Handler type="DiscoveryFeed" Location="/DiscoFeed"/>
</Sessions>

<!--
Allows overriding of error template information/filenames. You can
also add attributes with values that can be plugged into the templates.
-->
<Errors
supportContact="xxxx@xxxxx.xx"
logoLocation="/usr/share/shibboleth/logo.jpg"
styleSheet="/usr/share/shibboleth/main.css"/>

<!-- Example of remotely supplied batch of signed metadata. -->
<!--
<MetadataProvider type="XML" uri="http://federation.org/federation-metadata.xml"
backingFilePath="federation-metadata.xml" reloadInterval="7200">
<MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>
<MetadataFilter type="Signature" certificate="fedsigner.pem"/>
</MetadataProvider>
-->
<MetadataProvider type="XML"
uri="http://XXXXXX.XX"
backingFilePath="idem-test-metadata-sha256.xml"
reloadInterval="7200">
<MetadataFilter type="Signature" certificate="XXXXXXX.pem"/>
</MetadataProvider>




<!-- Example of locally maintained metadata. -->
<!--
<MetadataProvider type="XML" file="partner-metadata.xml"/>
-->

<!-- Map to extract attributes from SAML assertions. -->
<AttributeExtractor type="XML" validate="true" path="attribute-map.xml"/>

<!-- Use a SAML query if no attributes are supplied during SSO. -->
<AttributeResolver type="Query" subjectMatch="true"/>

<!-- Default filtering policy for recognized attributes, lets other data pass. -->
<AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>

<!-- Simple file-based resolver for using a single keypair. -->
<CredentialResolver type="File" key="sp-key.pem" certificate="sp-cert.pem"/>

<!--
The default settings can be overridden by creating ApplicationOverride elements (see
the https://spaces.internet2.edu/display/SHIB2/NativeSPApplicationOverride topic).
Resource requests are mapped by web server commands, or the RequestMapper, to an
applicationId setting.

Example of a second application (for a second vhost) that has a different entityID.
Resources on the vhost would map to an applicationId of "admin":
-->
<!--
<ApplicationOverride id="admin" entityID="https://admin.example.org/shibboleth"/>
-->
</ApplicationDefaults>

<!-- Policies that determine how to process and authenticate runtime messages. -->
<SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/>

<!-- Low-level configuration about protocols and bindings available for use. -->
<ProtocolProvider type="XML" validate="true" reloadChanges="false" path="protocols.xml"/>

</SPConfig>
In riposta a Pierpaolo Gallo

Re: Shibbolet

di Pierpaolo Gallo -

Nessuno che possa essermi d'aiuto?

In riposta a Pierpaolo Gallo

Re: Shibbolet

di Andrea Bicciolo -
Immagine Core developers Immagine Plugin developers Immagine Translators

In linea generale l'errore che hai riportato indica che il tuo service provider Shibboleth gira ma non è stato configurato, almeno non completamente. Ad esempio, se accedi al tuo service provider con un url del tipo "your.shibsp.tld/secure" e ottieni come risultato quell'errore, allora dovrai rivedere la tua configurazione del Service Provider in modo che possa colloquiare correttamente con l'Identity provider.

Prima di poter configurare l'autenticazione Shibbolet in Moodle, dovrai accertarti che il Service provider funzioni correttamente. Solo dopo aver completato la configurazione del Service provider potrai configurare l'autenticazione Shibbolet in Moodle. Di seguito alcuni link che spero possano esserti di aiuto, naturalmente da mutuare elaborandoli per calarli nel tuo contesto: