microsoft / SPID-and-Digital-Identity-Enabler

This repo contains the SPIDProxy code and several ADFS/Azure B2C related scripts and assets. SPIDProxy allows to communicate with SPID, CIE and eIDAS. The repo also contains a web app enabling CNS authentication through ADFS and AAD B2C.
MIT License
27 stars 12 forks source link

Retriving Service Provider metadata url Metadata issue #50

Closed Reykrot closed 1 year ago

Reykrot commented 1 year ago

I am opening this issue for a problem regarding the retrieval of some URLs. I followed several official and unofficial documentations in an attempt to find the B2C metadata URL as a service provider, but I only found metadata for identity provider.

According to this documentation: https://learn.microsoft.com/en-us/azure/active-directory-b2c/saml-service-provider?tabs=windows&pivots=b2c-custom-policy, the metadata URL should be exposed in the manifest through this value: "samlMetadataUrl":"https://mytestapp.azurewebsites.net/Metadata". I tried several times without being able to reach the correct URL. Other documentations indicated that the correct metadata can be found on this page:

https://tenant-name.b2clogin.com/tenant-name.onmicrosoft.com/policy-name/samlp/metadata

But even this link seems to lead nowhere. We only found one working URL that actually contains SAML metadata, which corresponds to the following:

https://tenant-name.b2clogin.com/tenant-name.onmicrosoft.com/policy-name/samlp/metadata?idptp=technical-profile-name

However, this URL is not usable for authentication in the SPID validator demo because it lacks many values such as the organization, and therefore is not validated correctly. Additionally, this URL by analogy should contain the IdP metadata and be defined as "Azure AD B2C IdP SAML metadata" and therefore is not correct to be used as a service provider.

Where can I find the correct URL to retrieve the metadata to send to AgID?


Apro questa issue per un problema riguardo al reperimento di alcune url, ho seguito diverse documentazioni ufficiali e non nel tentativo di trovare la url dei matadati di B2C come service provider, tuttavia ho trovato solamente i metadati per identity provider.

seguendo questa documentazione: https://learn.microsoft.com/en-us/azure/active-directory-b2c/saml-service-provider?tabs=windows&pivots=b2c-custom-policy La url dei metadati dovrebbe essere esposta nel manifest tramite questo valore: "samlMetadataUrl":"https://mytestapp.azurewebsites.net/Metadata", ho fatto diversi tentativi senza riuscire a raggiungere la url coretta altre documentazioni segnavano come corretti i metadati della pagina

https://tenant-name.b2clogin.com/tenant-name.onmicrosoft.com/policy-name/samlp/metadata

ma effettivamente anche questo link sembra non portare a nulla. Abbiamo trovato solamente una url funzionante che contiene effettivamente dei metadata SAML che corrisponde alla seguente:

https://tenant-name.b2clogin.com/tenant-name.onmicrosoft.com/policy-name/samlp/metadata?idptp=tecnical-profile-name ma questa url non è utilizzabile per l’autenticazione nella demo del validator dello spid perché manca di molti valori quali, ad esempio l’organization e quindi non viene validata correttamente. Inoltre questa url per similitudine dovrebbe contenere i metadati da IdP ed essere quella definita come “Azure AD B2C IdP SAML metadata” ed quindi non è corretta per essere utilizzata come service provider.

dove posso trovare la url corretta per ritirare i metadati da inviare ad Agid?

fume commented 1 year ago

ciao @Reykrot , innanzi tutto chiedo scusa per l'enorme delay nella risposta, ma ammetto di non aver notato questo issue prima di ora.

Il metadata da inviare ad Agid (o da caricare sull'ambiente DemoSPIDGov) non può essere prodotto automaticamente da AAD B2C. Va redatto manualmente seguendo le regole tecniche di AGID pubblicate qui: https://docs.italia.it/italia/spid/spid-regole-tecniche/it/stabile/metadata.html#service-provider

Si può però usare come punto di partenza il metadata reperibile all'indirizzo https://tenant-name.b2clogin.com/tenant-name.onmicrosoft.com/policy-name/samlp/metadata?idptp=tecnical-profile-name dove technical-profile-name può essere uno qualsiasi dei TP di SPID (i.e. Aruba-SAML2). Questo metadata va poi modificato per essere compliant con le regole AGID (mancano sicuramente i tag AttributeConsumingService, Organization, Contact, etc) e vanno aggiunti gli endpoint dello SPIDProxy come AssertionConsumerService e SingleLogoutService. Andrà poi cambiata la key di "signing", specificando quella in uso sullo SPIDProxy, e il file andrà poi firmato.

Reykrot commented 1 year ago

Figurati non preoccuparti del ritardo non ci sono problemi anche perchè io sarei anche riuscito a creare dei metadata compliant ma mi hai appena messo un dubbio, io ho gia nei metadata di B2C AssertionConsumerService e SingleLogoutService come puoi vedere a questo indirizzo https://testb2c01siag.b2clogin.com/testb2c01siag.onmicrosoft.com/B2C_1A_signup_signin_SPID/samlp/metadata?idptp=Aruba-SAML2

quelli presenti in questo metadata non sono corretti o a questi vanno aggiunti anche quelli dello SPIDProxy?

il vero problema è la signature che sebbene la aggiunga poi il validator di Agid non me la valida mi va in errore dicendo che non corrisponde il , ma questo lo risolverò, tuttavia ti chiedo se puoi confermarmi se quei valore che ti ho scritto sopra non sono corretti.

Grazie ancora del supporto

fume commented 1 year ago

Vanno aggiunti ANCHE quelli dello SPIDProxy: AssertionConsumerService con binding POST verso https://urlproxy/proxy/assertionconsumer SingleLogoutService con binding POST verso https://urlproxy/proxy/assertionconsumer SingleLogoutService con binding POST verso https://urlproxy/proxy/logout

Gli ultimi due in realtà sono inutilizzati, generalmente li aggiungiamo per lungimiranza.

Una volta modificato il metadata, va necessariamente rimossa la Signature e riapplicata con xmlsectool.

Reykrot commented 1 year ago

Aggiunti, perfetto ti ringrazio molto del supporto tutto fatto e funzionante.

Se posso chiederti un'ultima domanda: ho visto che tra le varie issue ci sta l'integrazione di eIDAS nelle custom policy e Custom UI, ma ho ricontrollato entrambe e non ho trovato i riferimenti ad una guida per inserirlo ed aggiungerlo, è colpa mia? sono io che non lo trovo?

Ancora grazie mille per il supporto

fume commented 1 year ago

eIDAS è già supportato dalla soluzione e perfettamente funzionante. Sul repo però mancano le configurazioni. Dovremmo aggiungere il tutto a breve.