Open alranel opened 6 years ago
From @ncarandini on December 14, 2017 15:20
Come avete risolto? Quale linguaggio e implementazione avete usato per generare l'Authn request? Io sto lavorando per consentire l'uso di questo progetto in congiunzione con spid-dotnet-sdk. Nel Readme c'è un esempio d'uso di creazione di un certificato self-signed di test.
Per generare il certificato e la chiave privata si può usare il seguente comando:
openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out cert/spid-sp.crt -keyout cert/spid-sp.pem
In https://github.com/italia/spid-testenv-backoffice/pull/24 ho aggiunto un doc su come generare le chiavi (vedi questo file)
Per configurare il service provider inserire le informazioni sulla form di generazione del metadata. Ad esempio, inserire le info su https://idp.spid.gov.it:8080 per salvare il metadata sull'idp di test installato su https://idp.spid.gov.it:9443
come Certificate inserire il contenuto del file spid-sp.crt creato in precedenza
inserire in Single Logout Service Location l'url del servizio di single logout del sp e specificare il tipo di binding
inserire in Assertion Consumer Service Location l'url a cui inviare il messaggio di risposta alla richiesta di autenticazione e specificare il tipo di binding
specificare il set di attributi che il sp potrà richiedere. Name e Description del set sono puramente informativi. Il set di attributi sarà richiesto in base all' AttributeConsumingService index specificato nel metadata (in questo caso 1)
di seguito un esempio di AuthnRequest in binding HTTP-POST generata da simplesamlphp
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_def73df9beb0991b6a5784b007483549e4d67a52c1"
Version="2.0"
IssueInstant="2018-01-10T16:01:49Z"
Destination="https://idp.spid.gov.it:9443/samlsso"
AssertionConsumerServiceURL="http://mio-service-provider.it/service/module.php/saml/sp/saml2-acs.php/service-name"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AttributeConsumingServiceIndex="1" >
<saml:Issuer>https://mio-service-provider.it</saml:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<ds:Reference URI="#_def73df9beb0991b6a5784b007483549e4d67a52c1">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<ds:DigestValue>6hE0kLWNGd97+fqd/jELFYZPQS33rUYiF2b7s9G/TsE=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
UD9qZfIHNlVR7J23sE2Di+fcNe4+jRkD5XKFZD5gq/b1RTdZdkj275ZFoCWP/T2T0TBlKpUrDLj3S6yqErNFKPzF
fPnTYB5n02poCl9RHYWdLtlBjmDSan9Aff/UCWngrKaYb2HghCXsigmpQ2lhWCl8ow0iPyu+ZRuJazRL8OMvfCik
P/UTKgACPX3nchrkhvZ0N8qBFiK4HTmS7Gews2+5VybHMdupETLFQmHMIZk+mheBLzaOPjIZCKFfuq6J3cCC5dK6
0KGDTBGsA9bL86/HmOIsQpD8gJ7xtm0rq7dqSZBntN1PYdu3BL6Q/1xpYZHkhs6eLHAFUffczFx8wg==
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIIDwTCCAqmgAwIBAgIJAKuYN5FQCIxsMA0GCSqGSIb3DQEBBQUAMHcxCzAJBgNVBAYTAklUMQ0wCwYDVQQIDARSb21l
MQ0wCwYDVQQHDARSb21lMRUwEwYDVQQKDAxMaW5mYVNlcnZpY2UxFTATBgNVBAsMDExpbmZhU2VydmljZTEcMBoGA1UE
AwwTc3BpZC1zcC5saW5mYWJveC5pdDAeFw0xODAxMDkxMjI1MTZaFw0yODAxMDkxMjI1MTZaMHcxCzAJBgNVBAYTAklU
MQ0wCwYDVQQIDARSb21lMQ0wCwYDVQQHDARSb21lMRUwEwYDVQQKDAxMaW5mYVNlcnZpY2UxFTATBgNVBAsMDExpbmZh
U2VydmljZTEcMBoGA1UEAwwTc3BpZC1zcC5saW5mYWJveC5pdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
ANMzYrg1uydAZuqzv7OsqSN080yey0asXRyEUyWfPar0wy3QKm0YZ+/huwdKndiwPbl4jYkFqYExJvjrRO0b4XOOL5jw
wHdeLPs55EZm5PXsIpB7eYiiLMiNMxsxF+yj8RYidUFZOeJ50D7pZkt4qXkOYony+CC1otQuLv4m7siC87O4GZDYG4Uv
+w0SRoIQF3YubM3oXoErXSxM4qVHpePrbpkwfamJIcU1O/a9AcVNc1A/YpklCJI96edSi1ePAtwsy8VqBW51BfHrkfJp
qKRX2m0O3qe/gMT0jh1nw/NdPvWgj65rpfvLgzxq6d6puRHfT7CSMpC0fG7l70+5szECAwEAAaNQME4wHQYDVR0OBBYE
FHLAJZ2xaalwLrzCB88Lrsbcj15IMB8GA1UdIwQYMBaAFHLAJZ2xaalwLrzCB88Lrsbcj15IMAwGA1UdEwQFMAMBAf8w
DQYJKoZIhvcNAQEFBQADggEBALH+HmKkeBAxt3PzZ9kK9IW5bHPutN8q9jVAvQuFJUegodq3kIHbSp68ZxAanFiV4NQN
S/s1i3qdFR0ste63VinlCQTj8gP2N7wT6+aWDm7YAYDaZp8KHhmKA/yDlqHEVzcOmcF+8U3PZYrjWS9gkVZhKABZerrl
dMRvw7kLqD8vpJfcm0Uc5sXwLmSPqHsWBiXJ9Da6ba4ekOXeVvky7rLrFaqVxgAVhbrrkWK5tOOoB+dyWB+DkpObQ49E
F0fjZi3bnXR25InOgmk1uA4PTGjNbp43F5ujNeTU0Led82WLk5UB+U8IT9kYdjIc3PvngJlHAsPRFEFl9Ec9TeSIbEk=
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" AllowCreate="true" />
<samlp:RequestedAuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:SpidL1</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
</samlp:AuthnRequest>
stessa AuthnRequest ma in binding HTTP-REDIRECT (codificata nel parametro SAMLRequest)
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_11c74005d8fe75a2eebab3bbcd740cbfef9752b341"
Version="2.0"
IssueInstant="2018-01-10T16:49:47Z"
Destination="https://idp.spid.gov.it:9443/samlsso"
AssertionConsumerServiceURL="http://mio-service-provider.it/service/module.php/saml/sp/saml2-acs.php/service-name"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AttributeConsumingServiceIndex="1">
<saml:Issuer>https://spid-sp.linfabox.it</saml:Issuer>
<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" AllowCreate="true" />
<samlp:RequestedAuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:SpidL1</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
</samlp:AuthnRequest>
SigAlg e Signature sono specificati in parametri separati della query string
Esempio:
GET https://idp.spid.gov.it:9443/samlsso?SAMLRequest=fVNdj9owEPwrkd9...&RelayState=http%3A%2F%2Fmio-service-provider.it&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=V9PpaohVj5T15Qm...
From @musikele on October 8, 2017 12:47
Abbiamo avuto non pochi problemi su come configurare un Service Provider su questo IDP. In particolare siamo impazziti su come generare un certificato che piacesse all'IdP e soprattutto su come generare una
AuthnRequest
che fosse accettata dall'IdP.Gentilmente:
Copied from original issue: italia/spid-testenv-docker#6