Giter VIP home page Giter VIP logo

spid-sp-shibboleth's Introduction

spid-sp-shibboleth

Middleware SPID basato su Shibboleth

Apri nuove issue e raggiungici sul canale Slack per contribuire.

Questo progetto contiene un setup dimostrativo composto dai seguenti:

  • Shibboleth SP
  • Discovery service sotto forma di pagina statica HTML
  • Script per la creazione guidata dei metadata firmati
  • Progetto PHP di esempio
  • Configurazione di Apache2 con mod_shib

big picture

Per la installazione e la configurazione di Apache2 consigliamo di fare riferimento ad uno degli HowTo resi disponibili dalla comunità Idem GARR. Il tutorial IDEM GARR può essere considerato come utile fino alla sezione Configure Shibboleth SP:

Per rispondere ai test di conformità 16, 17 and 18 è necessaria la versione di Shibboleth 3.1 o superiore.

Per la configurazione di Shibboleth SP per SPID si dovranno invece compiere i seguenti passaggi:

  • creare dei certificati conformi all'avviso AgID SPID 29 v3

  • creare e firmare il metadata del servizio, in shibboleth/metadata sono presenti due script per la creazione del metadata, uno in ruby e un altro in python. Questi sono da intendersi solo come esempio, per la creazione e la firma dei metadata SPID esistono altre risorse già disponibili su github italia.

  • usare come esempio la configurazione shibboleth2.xml, sostituendo i recapiti email, i nomi dei file del certificato e della chiave privata, l'hostname del SP ({sp_fqdn} diventerà ad esempio sp.example.org)

  • E' necessario infine, ai fini della demo, abilitare PHP all'interno di Apache2 il virtualhost relativo a {sp_fqdn}, vedi il contenuto di Apache2 e di php-example-project. Visitare tramite web browser l'url https://{sp_fqdn}/disco/ per visualizzare il bottone 'login con SPID'.

  • copiare il metadata all'interno di un path pubblico della risorsa www del tuo {sp_fqdn}

I seguenti passaggi sono inoltre utili per svolgere una demo di test:

  1. eseguire spid-saml-check tramite Docker
  2. scaricare i metadata di spid-saml-check nella directory /etc/shibboleth/metadata/spid-saml-check.xml, come definito in shibboleth2.xml

Contribuire

Aprire una issue per discutere degli scopi e delle modifiche, proporre una Pull Request sul branch dev.

spid-sp-shibboleth's People

Contributors

alranel avatar francescm avatar mamico avatar peppelinux avatar robertogallea avatar umbros avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spid-sp-shibboleth's Issues

Docker file

It would be awesome to have a Dockerfile to a fast deployment as container of this solution

InResponseTo validation

The following AgID tests will fail without any remediation possibile with a standard shibboleth sp distribution

ERROR:spid_sp_test:Test [16] Attributo InResponseTo non specificato. Risultato atteso: KO: : [http status_code: 404] : FAILED
ERROR:spid_sp_test:Test [17] Attributo InResponseTo mancante. Risultato atteso: KO: : [http status_code: 404] : FAILED
ERROR:spid_sp_test:Test [18] Attributo InResponseTo diverso da ID request. Risultato atteso: KO: : [http status_code: 404] : FAILED

Here a relevant thread
https://shibboleth.1660669.n2.nabble.com/Validate-InResponseTo-attribute-td7641623.html

Richiesta sullo stato di salute del progetto

Ciao @umbros

Vorrei chiederti aggiornamenti sulla Roadmap di questo progetto per risoluzione delle issues e delle Pull Request.
Abbiamo ricevuto alcune segnalazioni da parte degli sviluppatori che ci indicano che questo repository conterrebbe risorse
non allineate con lo stato attuale delle Specifiche SPID.

Spero di ottenere un tuo gentile feedback entro la prossima settimana,
Grazie e a presto

Enforce AuthnContextClass (test #94)

da quel che ho capito da:
https://wiki.shibboleth.net/confluence/display/SP3/Requiring+Multi-Factor+Authentication
non è shibboleth-sp che fa l’enforcing del livello di sicurezza, ma il web server.
shibboleth-sp produce una richiesta che richiede un certo livello di sicurezza (e di solito questo è sufficiente) ma per ripararsi dal caso descritto nel test 94 bisogna anche modificare il virtual host apache2 che verifichi la risposta:

  <Location /cgi-bin>
  # Sibboleth Service Provider
 AuthType shibboleth
 ShibRequestSetting requireSession 1
 require authnContextClassRef https://www.spid.gov.it/SpidL2
 require authnContextClassRef https://www.spid.gov.it/SpidL3
 #require valid-user
 </Location>

Ora abbiamo due problemi:

  1. questa impostazione è per una certa Location per tutta la suite di test. Se ci sono test che producono una risposta con
    <saml:AuthnContextClassRef>https://www.spid.gov.it/SpidL1</saml:AuthnContextClassRef>
    riceveranno un bel 401;
  2. sembra che spid_sp_test abbia una logica invertita per il test 94:
    [94] Elemento AuthContextClassRef impostato su https://www.spid.gov.it/SpidL1. Risultato atteso: fare attenzione al livello richiesto sulla request.: [http status_code: 401]
    probabilmente il test “fare attenzione ...” fa pensare che l’esito debba essere un 200 invece di un 401. (edited)

[SPID Quality Assessment] Elemento NameQualifier

ERROR:spid_sp_test:Test [48] Attributo NameQualifier di NameID dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [49] Attributo NameQualifier di NameID dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED

[SPID Quality Assessment] Elemento Issuer

ERROR:spid_sp_test:Test [28] Elemento Issuer mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [70] Attributo Format di Issuer dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [71] Attributo Format di Issuer dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED

xmlns shibboleth version

Ciao modificando nel mio file shibboleth2.xml da <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"> a <SPConfig xmlns="urn:mace:shibboleth:3.0:native:sp:config" xmlns:conf="urn:mace:shibboleth:3.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">, accedendo con al mio sp con la url del validatore locale ho il seguente errore:

Unable to locate metadata for identity provider (http://localhost:8080)

Validazione AuthnRequest Spid Validator fallita

Buonasera,
seguendo quanto descritto nel README, abbiamo installato e configurato Shibboleth SP per accedere all'IDP SPID Validator ma l'AuthnRequest generata non è conforme con quanto descritto nel tag SessionInitiator.
In particolare non vengono generati correttamente:

  • "Issuer" (attributi "NameQualifier" e "Format" mancanti)
  • "NameIDPolicy" (è presente l'attributo AllowCreate="1")

La versione Shibboleth SP installata è la 3.2.2 (seguendo l'howto riportato su VM CentOS 7.x).
Diversamente da quanto compare nella GIF a corredo, in qui l'AuthnRequest sembra conforme a quanto richiesto da AGID, quella generata dalla nostra installazione risulta differente:
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> https://TEST/sp </saml:Issuer> <samlp:NameIDPolicy AllowCreate="1" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>

La problematica sembra simile a quanto riportato qui: https://shibboleth.1660669.n2.nabble.com/Modify-tag-issuer-in-LogoutRequest-td7629320.html.

Grazie.

Report spid quality assessment

I seguenti errori di validazione, riproducibili sia con spid-saml-check che con spid-sp-test, richiedono un irrobustimento della configurazione di shibboleth

ERROR:spid_sp_test:Test [3] Response firmata, Assertion non firmata. (L'assertion deve essere sempre firmata, la response può essere firmata). Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [16] Attributo InResponseTo non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [17] Attributo InResponseTo mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [18] Attributo InResponseTo diverso da ID request. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [28] Elemento Issuer mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [43] Elemento NameID dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [44] Elemento NameID dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [45] Attributo Format dell'elemento NameID dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [46] Attributo Format dell'elemento NameID dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [47] Attributo Format di NameID dell'Assertion diverso da urn:oasis:names:tc:SAML:2.0:nameidformat:transient. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [48] Attributo NameQualifier di NameID dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [49] Attributo NameQualifier di NameID dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [60] Attributo InResponseTo di SubjectConfirmationData dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [61] Attributo InResponseTo di SubjectConfirmationData dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [62] Attributo InResponseTo di SubjectConfirmationData dell'Assertion diverso da ID request. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [70] Attributo Format di Issuer dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [71] Attributo Format di Issuer dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [73] Elemento Conditions dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [74] Elemento Conditions dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [75] Attributo NotBefore di Condition dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [76] Attributo NotBefore di Condition dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [97] Elemento AuthContextClassRef impostato ad un valore non previsto. Es. specifica precedente. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [98] Elemento AttributeStatement presente, ma sottoelemento Attribute mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
Spid QA: executed 243 tests, 24 failed.

errore di Login handlen non configurato

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

[SPID Quality Assessment] Elemento Conditions

ERROR:spid_sp_test:Test [73] Elemento Conditions dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [74] Elemento Conditions dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [75] Attributo NotBefore di Condition dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [76] Attributo NotBefore di Condition dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED

Shibboleth - WARN Shibboleth.AttributeResolver.Query [1] [default]: no SAML 2 AttributeAuthority role found in metadata

Salve,
ho configurato Shibboleth come SP per l'autenticazione tramite SPID.
Quando tento di autenticarmi all'IDP di test https://idp.spid.gov.it viene restituito il seguente warning:
WARN Shibboleth.AttributeResolver.Query [1] [default]: no SAML 2 AttributeAuthority role found in metadata
Qualcuno può darmi una mano?
Grazie.
Di seguito il file shibboleth2.xml con le configurazioni:

<!--
sessionHook="/Shibboleth.sso/AttrChecker"
metadataAttributePrefix="Meta-"
-->

<Sessions lifetime="1800" timeout="3600" relayState="ss:mem" checkAddress="false" handlerSSL="true" cookieProps="https">
<!--<Sessions lifetime="28800" timeout="3600" relayState="ss:mem" checkAddress="false" handlerSSL="true" cookieProps="https">-->

<!-- Login -->
<SessionInitiator	type="SAML2" 
					Location="/Login"
					isDefault="true"
					entityID="sp.cittametrpolitana.na.it"
					outgoingBinding="urn:oasis:names:tc:SAML:profiles:SSO:request-init"
					isPassive="false"
					signing="true">
	<samlp:AuthnRequest	xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
						xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
						ID="sp.cittametrpolitana.na.it"
						Version="2.0"
						IssueInstant="2017-01-01T00:00:00Z"
						AttributeConsumingServiceIndex="0"
						ForceAuthn="true">
		<saml:Issuer	Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity"
						NameQualifier="https://sp.cittametrpolitana.na.it">
						https://sp.cittametrpolitana.na.it
		</saml:Issuer>
		<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" />
	</samlp:AuthnRequest>
</SessionInitiator>

 <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
        Location="/SAML2/POST" index="0"/>

<!-- Logout -->
<LogoutInitiator type="Chaining" Location="/Logout">
	<LogoutInitiator type="SAML2"
		outgoingBindings="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
		signing="true"/>
	<LogoutInitiator type="Local" signing="true"/>
</LogoutInitiator>
    
<md:SingleLogoutService Location="/SLO/POST"
	Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
<md:SingleLogoutService Location="/SLO/Redirect"
	Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"/>

<!-- Handler -->
<Handler type="Status" Location="/Status" acl="127.0.0.1 10.253.0.66" showAttributeValues="true"/>
<Handler type="Session" Location="/Session" showAttributeValues="true"/>
	
	<!-- Administrative logout. -->
	<LogoutInitiator type="Admin" Location="/Logout/Admin" acl="127.0.0.1 10.253.0.66" />

	<Handler type="MetadataGenerator" Location="/Metadata" signing="false"/>

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

	<!-- Check the returned attributes 
	<Handler type="AttributeChecker" Location="/AttrChecker" template="attrChecker.html" flushSession="true">
		<AND>
			<Rule require="NAME"/>
			<Rule require="PLACEOFBIRTH"/>
			<Rule require="ADDRESS"/>
			<Rule require="COMPANYNAME"/>
			<Rule require="COUNTYOFBIRTH"/>
			<Rule require="DATEOFBIRTH"/>
			<Rule require="DIGITALADDRESS"/>
			<Rule require="EMAIL"/>
			<Rule require="EXPIRATIONDATE"/>
			<Rule require="FAMILYNAME"/>
			<Rule require="FISCALNUMBER"/>
			<Rule require="GENDER"/>
			<Rule require="IDCARD"/>
			<Rule require="IVACODE"/>
			<Rule require="MOBILEPHONE"/>
			<Rule require="REGISTEREDOFFICE"/>
			<Rule require="SPIDCODE"/>
        </AND>
	</Handler>-->
</Sessions>

<AttributeExtractor type="XML" validate="true" reloadChanges="true" path="attribute-map.xml"/>
<AttributeResolver type="Query" subjectMatch="true"/>
<AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>

<!-- Simple file-based resolvers for separate signing/encryption keys. -->
<CredentialResolver type="File" use="signing"    key="sp-signing-key.pem" certificate="sp-signing-cert.pem"/>
<CredentialResolver type="File" use="encryption" key="sp-signing-key.pem" certificate="sp-signing-cert.pem"/>

<!-- SPID Test Environment IdentityServer Metadata -->
<MetadataProvider type="XML" validate="true" path="/opt/shibboleth/metadata/idp.spid.gov.it.xml" id="https://idp.spid.gov.it" />
<MetadataProvider type="XML" validate="true" path="/opt/shibboleth/metadata/arubaid.xml" id="https://loginspid.aruba.it" />
<MetadataProvider type="XML" validate="true" path="/opt/shibboleth/metadata/posteid.xml" id="https://posteid.poste.it"/>

[SPID Quality Assessment] Elemento NameID

ERROR:spid_sp_test:Test [43] Elemento NameID dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [44] Elemento NameID dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [45] Attributo Format dell'elemento NameID dell'Assertion non specificato. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [46] Attributo Format dell'elemento NameID dell'Assertion mancante. Risultato atteso: KO: : [http status_code: 200] : FAILED
ERROR:spid_sp_test:Test [47] Attributo Format di NameID dell'Assertion diverso da urn:oasis:names:tc:SAML:2.0:nameidformat:transient. Risultato atteso: KO: : [http status_code: 200] : FAILED

Attributi mancanti verso spid-testenv2

Buon giorno,
ho installato il docker di spid-testenv2 (scaricando il container tramite le funzioni di docker, non compilandolo in locale) e sto provando a connettere un client apache/shibboleth.
dopo aver configurato il file dei metadati sul docker, ho scaricato i componenti di questo progetto, personalizzato il file di configurazione affinché veda il server IdP e provato ad eseguire il login.
Effettivamente, partendo dal SP, viene caricata la pagina dell'IdP, ma con un laconico
"Dato mancante nella request: 'SigAlg'"
Cosa può mancare nella configurazione del client shibboleth per dare questo errore?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.