OIOSAML: il consumatore dell'asserzione non funziona

0

Ho scritto un semplice sistema con lo scenario Web SSO di avvio SP basato su OIOSAML . Per testare il sistema, l'ho distribuito sull'host remoto. Tuttavia AssertionConsumerServiceURL , dove ho specificato l'URL, su cui Shibboleth idP (idP basato su Shibboleth) dovrebbe restituire la risposta non viene chiamato.

SAMLAssertionConsumer - solo un semplice servlet Java. Per cominciare, ho solo bisogno di assicurarmi che la risposta arrivi.

AuthnRequest generato:

<?xml version="1.0" encoding="UTF-8"?>
<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" 
    AssertionConsumerServiceURL="http://ip-of-remote-system-here:8080/saml/consumer" 
    Destination="http://ip-of-identity-provider-here/idp/profile/SAML2/Redirect/SSO" 
    ForceAuthn="false" 
    ID="_068712cd-......163720312" 
    IsPassive="false" 
    IssueInstant="2014-07-12T06:42:16.673Z" 
    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">http://ip-of-remote-system-here:8080</saml2:Issuer>
</saml2p:AuthnRequest>

se faccio richiesta al mio servlet SAMLAssertionConsumer diretto:

http://ip-of-remote-system-here:8080/saml/consumer

Quindi funziona. Mi piacerebbe sapere come configurare correttamente il servizio al consumatore di asserzione. Questa è la parte dei metadati SP, dove specificherò il consumatore dell'asserzione.

<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:esia="urn:esia:shibboleth:2.0:mdext" entityID="http://ip-of-remote-system-here:8080">
    <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
        <md:KeyDescriptor use="signing">
            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <ds:X509Data>
                    <ds:X509Certificate>
                        MIID...XY7ZiQ==
                    </ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </md:KeyDescriptor>
        <md:KeyDescriptor use="encryption">
            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <ds:X509Data>
                    <ds:X509Certificate>
                        MIID...XY7ZiQ==
                    </ds:X509Certificate>
                </ds:X509Data>
            </ds:KeyInfo>
        </md:KeyDescriptor>

     <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"  Location="http://ip-of-remote-system-here:8080/saml/consumer" ResponseLocation="http://ip-of-remote-system-here:8080/saml/consumer"/>
     <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://ip-of-remote-system-here:8080/saml/consumer" index="0" isDefault="true"/>

    </md:SPSSODescriptor>
    <md:AttributeAuthorityDescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:oasis:names:tc:SAML:2.0:protocol">
       ...
    </md:AttributeAuthorityDescriptor>
    <md:Organization>
       ...
    </md:Organization>
    <md:ContactPerson contactType="technical">
      ...
    </md:ContactPerson>
    <md:Extensions>
      ...
    </md:Extensions>
</md:EntityDescriptor>

Sarei molto grato per l'informazione. Grazie a tutti.

    
posta 12.07.2014 - 09:12
fonte

1 risposta

0

Il problema era diverso. È stato utilizzato il keystore errato. Ora tutto è OK.

Inizialmente, supponevo che l'attributo entityID si riferisse a un nome di dominio, che era specificato negli attributi Location . Tuttavia, non lo è. Deve solo essere unico ed è meglio usare il nome di dominio per questo.

UnderstandingShibboleth, EntityNaming:

Shibboleth identity and service providers are used in SAML deployments, and as such, they are assigned a unique name known as an "entityID".

Metadati per l'OASIS Security Assertion Markup Language (SAML) V2.0, 2.3.2 Elemento:

entityID [Required] -

 Specifies the unique identifier of the SAML entity whose metadata is 
 described by the element's contents.

UnderstandingShibboleth, EntityNaming:

Strongly recommended NOT to use the physical hostname of a server running Shibboleth as the entityID. As time passes, things get moved and that deployment may not always live on the same box.

Additionally there may be multiple logical deployments of Shibboleth on a single physical server, each requiring their own unique entityID, so using the server's name doesn't scale beyond a single one.

Nella sandbox puoi utilizzare indirizzi fisici.

    
risposta data 12.07.2014 - 10:54
fonte

Leggi altre domande sui tag