OIOSAML: el consumidor de aserciones no funciona

0

Escribí un sistema simple con un escenario de inicio de sesión único en la web basado en SP basado en OIOSAML . Para probar el sistema, lo implementé en el host remoto. Sin embargo, AssertionConsumerServiceURL , donde especifiqué la URL, en la que Shibboleth idP (idP basado en Shibboleth) debe devolver la respuesta no se llama.

SAMLAssertionConsumer - solo un simple servlet de Java. Para empezar, solo necesito asegurarme de que venga la respuesta.

AuthnRequest generado:

<?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>

si hago una solicitud a mi servlet SAMLAssertionConsumer direct:

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

Entonces funciona. Me gustaría saber cómo configurar correctamente el servicio del consumidor de afirmación. Esa es la parte de los metadatos de SP, donde especifico el consumidor de aserción.

<?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>

Estaría muy agradecido por la información. Gracias a todos.

    
pregunta 12.07.2014 - 09:12
fuente

1 respuesta

0

El problema era diferente. Se utilizó el almacén de claves incorrecto. Ahora todo está bien.

Inicialmente, asumí que el atributo entityID debe referirse a un nombre de dominio, que se especifica en los atributos Location . Sin embargo, no lo es. Simplemente debe ser único y es mejor usar el nombre de dominio para eso.

UnderstandingShibboleth, EntityNaming:

  

Los proveedores de servicios e identidad de Shibboleth se utilizan en SAML   despliegues, y como tales, se les asigna un nombre único conocido como   "ID de entidad".

Metadatos para el lenguaje de marcado de aserción de seguridad OASIS (SAML) V2.0, 2.3.2 Elemento:

  

entityID [Requerido] -

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

UnderstandingShibboleth, EntityNaming:

  

Se recomienda encarecidamente NO utilizar el nombre de host físico de un servidor   ejecutando Shibboleth como entityID . A medida que pasa el tiempo, las cosas se mueven.   y es posible que la implementación no siempre se encuentre en el mismo cuadro.

     

Además, puede haber múltiples implementaciones lógicas de Shibboleth   en un único servidor físico, cada uno requiere su propio y único    entityID , por lo que usar el nombre del servidor no se puede escalar más allá de una sola   uno.

En la caja de arena se pueden usar direcciones físicas.

    
respondido por el user18004 12.07.2014 - 10:54
fuente

Lea otras preguntas en las etiquetas