italia / spid-testenv2

New test Identity Provider for SPID
GNU Affero General Public License v3.0
35 stars 38 forks source link

Autenticazione SPID con Google Firebase #310

Closed valentinoavon closed 3 years ago

valentinoavon commented 3 years ago

Descrizione del problema

Avrei necessità di configurare l'autenticazione degli utenti tramite SPID in una applicazione basata su Firebase (https://firebase.google.com/). Firebase è un software che permette di gestire tutta la parte server standard di un'applicazione, tra cui anche l'autenticazione degli utenti. Infatti, viene messa a disposizione una API anche per effettuare autenticazioni tramite protocollo SAML.

Ho installato tutto l'ambiente di test SPID (con docker) in modo da provare a collegarmi attraverso firebase e tutto sembra funzionare. Attraverso firebase riesco a collegarmi e a inviare all'identity provider di test la AuthnRequest.

Le regole tecniche di SPID prevedono degli attributi nella AuthnRequest che, se ho capito bene, non sono standard e quindi è sempre necessario creare la richiesta a mano in quanto appunto non standard (Non ne sono sicuro ma nel protocollo SAML 2.0 non ho trovato riscontri). Il problema è che la AuthnRequest mi viene creata automaticamente da firebase, il quale non conosce questi campi custom e quindi queste informazioni mancanti fanno ovviamente rigettare la richiesta da parte dell'identity provider di test il quale mi riferisce:

image

la AuthnRequest che viene generata automaticamente è la seguente:

<?xml version="1.0" encoding="UTF-8"?>
<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceURL="https://eubd-test.firebaseapp.com/__/auth/handler" Destination="https://localhost:8088/sso" ID="_4cce70847a8de1f5f27656ab777ff7d5" IssueInstant="2020-12-24T16:24:00.172Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Version="2.0"> 
   <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">bikeye.spid</saml2:Issuer>
</saml2p:AuthnRequest>

Mi confermate che i campi sono custom e che quindi è necessario creare una richiesta SAML custom? Nel caso non siano custom immagino siano opzionali (altrimenti firebase li metterebbe), quindi mi chiedo se sia giusto bloccare la richiesta nel caso non siano presenti.

Grazie per il vostro lavoro, Valentino

gilbertotcc commented 3 years ago

Credo di avere un problema simile tra spid-testenv2 e KeyCloak. Seguo volentieri la discussione.

peppelinux commented 3 years ago

La AuthnRequest prodotta dal SP in oggetto non è conforme alle linee guida SPID. Per keycloak consiglio le seguenti risorse https://github.com/italia/spid-keycloak-entando https://github.com/lscorcia/keycloak-spid-provider

Per Google Firebase non saprei dare indicazioni ma di certo basta confrontare le caratteristiche e gli attributi presenti nella sua AuthnRequest con quanto specificato dalla documentazione tecnica di SPID