italia / spid-sp-shibboleth

Middleware SPID basato su Shibboleth
Creative Commons Zero v1.0 Universal
13 stars 5 forks source link

errore di Login handlen non configurato #13

Closed nunzionapolitano closed 3 years ago

nunzionapolitano commented 3 years ago

Provando ad usare il file shibboleth2.xml su una nuova installazione, ottengo il seuente errore:

shibsp::ConfigurationException at (https://supporto.uniparthenope.it/Shibboleth.sso/Login%3FSAMLDS%3D1%26target%3Dss%253Amem%253A10e932f8cd61dfd14c6a6abcaa8b8300b34937990b798f26d74fdde16ffff1a1) Shibboleth handler invoked at an unconfigured location.

Mentre se sotiuisco la configurazione

<SessionInitiator type="Chaining"  id="Login" Location="/Login" isDefault="true">
    <SessionInitiator type="SAMLDS" URL="https://supporto.uniparthenope.it/disco"/>
    <SessionInitiator type="SAML2"
          outgoingBinding="urn:oasis:names:tc:SAML:profiles:SSO:request-init"
         ...... 

Con :

    <SessionInitiator type="SAML2"
        id="Login" Location="/Login" 
        isDefault="true"
         entityID="https://spidtst.uniparthenope.it:8080"
        outgoingBinding="urn:oasis:names:tc:SAML:profiles:SSO:request-init"
        .......

funziona regolarmente

L'unica modifica che ho effettuato ( a prte sostituire sp_fqn) è stata: <SessionInitiator type="SAMLDS" URL="https://{sp_fqdn}/disco.html"/> con <SessionInitiator type="SAMLDS" URL="https://{sp_fqdn}/disco/index.html"/> in accordo alla struttura del progetto "php-example-project"

C'è qualcosa che sbaglio?

Grazie

peppelinux commented 3 years ago

Ciao Nunzio, il tipo di errore che descrivi credo dipenda da come Apache sia stato configurato, dai uno sguardo alla ml di shibboleth ci sono diversi casi come il tuo.

Hai l'esempio di configurazione di Apache. Questo progetto è testato su debian10

francescm commented 3 years ago

secondo quel che capisco da: https://wiki.shibboleth.net/confluence/display/SP3/SAMLDS+SessionInitiator è necessario un SAMLDS SessionInitiator solo quando abbiamo qualcosa tipo lo embedded discovery service . Nell'esempio di discovery in questo progetto invece tutti i parametri per la connessione (entityID, target) ecc sono esplicitati quindi siamo in un caso diverso. Io rimuoverei il

<SessionInitiator type="SAMLDS" .../>

tout-court.

peppelinux commented 3 years ago

Non credo di aver capito, in questo progetto abbiamo introdotto la discovery page con lo spid button, ho proposto un type="Chaining" per evitare di fare singole specificazioni per ogni IdP SPID, qual'è l'alternativa che stai proponendo?

francescm commented 3 years ago

La discovery page per come è fatta adesso funziona senza SAMLDS SessionInitiator. In pratica è lo javascript che fa l'override dello IdP a cui ci vorremmo connettere grazie al parametro "entityID" direttamente nei parametri della GET. https://wiki.shibboleth.net/confluence/display/SP3/ContentSettings

peppelinux commented 3 years ago

Ottimo, converrebbe fare un commit per chiarire questo, che ne pensi?

robertogallea commented 3 years ago

Segnalo un'altra possibilità, che potrebbe non richiedere l'utilizzo di javascript, è l'uso di un SessionInitiator di tipo Form https://wiki.shibboleth.net/confluence/display/SP3/Form+SessionInitiator, attraverso il quale, è possibile usare un template html per settare l'entityID dell'IDP da utilizzare (e non solo). Un esempio di base è fornito a seguire:

<!-- shibboleth2.xml -->
...
<SessionInitiator 
    type="Form"
    template="/etc/shibboleth/discoveryTemplate.html" acsIndex="1"/>
</SessionInitiator>
...
<!-- discoveryTemplate.html -->
...
<form method="GET" action="<shibmlp action/>">
            <shibmlpif target>
                <input type="hidden" name="target" value="<shibmlp target/>"/>
            </shibmlpif>

            <shibmlpif acsIndex>
                <input type="hidden" name="acsIndex" value="<shibmlp acsIndex/>"/>
            </shibmlpif>

            <shibmlpif isPassive>
                <input type="hidden" name="isPassive" value="<shibmlp isPassive/>"/>
            </shibmlpif>

            <shibmlpif forceAuthn>
                <input type="hidden" name="forceAuthn" value="<shibmlp forceAuthn/>"/>
            </shibmlpif>

            <shibmlpif authnContextClassRef>
                <input type="hidden" name="authnContextClassRef" value="<shibmlp authnContextClassRef/>"/>
            </shibmlpif>

            <shibmlpif authnContextDeclRef>
                <input type="hidden" name="authnContextDeclRef" value="<shibmlp authnContextDeclRef/>"/>
            </shibmlpif>

            <shibmlpif authnContextComparison>
                <input type="hidden" name="authnContextComparison" value="<shibmlp authnContextComparison/>"/>
            </shibmlpif>

                        <input type="radio" name="entityID"
                           value="https://idp1">IDP 1
                        <br/>
                        <input type="radio" name="entityID"
                           value="https://idp2">IDP 2
                        <br/><br/>

                        <input type="submit" value="Procedi all'autenticazione"/>
</form>
...

Cosa ne pensate?

francescm commented 3 years ago

ganzo!

peppelinux commented 3 years ago

@robertogallea è così bello e utile che dovrebbe stare nel readme come riferimento ad un esempio nel progetto

peppelinux commented 3 years ago

@robertogallea possiamo fare una roadmap per questa feature? Te la senti di includerla nel progetto come documentazione o esempio alternativo?

peppelinux commented 3 years ago

@francescm ti andrebbe ti testarlo quando hai due min? https://github.com/italia/spid-sp-shibboleth/commit/be2a9d2512a6a0473ecf710124c1d1f73cdfd78c

peppelinux commented 3 years ago

ciao @nunzionapolitano, ritieni che a seguito degli ultimi commit questa issue possa ritenersi chiusa? Attendo un tuo riscontro

nunzionapolitano commented 3 years ago

Si, credo che questa issue possa ritenersi chiuda con successo. Grazie a tutti per il supporto offerto.