En esta sección se proporciona información sobre Oracle OpenSSO Fedlet:
Oracle OpenSSO Fedlet es una implementación de proveedor de servicios de peso ligero (SP) que puede desplegarse en una aplicación de proveedor de servicios de Java o .NET, lo que permite a la aplicación comunicarse con un proveedor de servicios (IDP) como, por ejemplo, Oracle OpenSSO 8.0 Update 2 mediante el protocolo SAMLv2. Fedlet presenta dos versiones en función de la plataforma utilizada:
El Fedlet de Java se publicó por primera vez en OpenSSO 8.0. Para obtener información, consulte el Capítulo 5, Using the OpenSSO Enterprise Fedlet to Enable Identity Federation de Sun OpenSSO Enterprise 8.0 Deployment Planning Guide.
El Fedlet de .NET se lanzó en OpenSSO 8.0 Update 1. Para obtener información, consulte el Capítulo 10, Using the ASP.NET Fedlet with OpenSSO Enterprise 8.0 Update 1 de Sun OpenSSO Enterprise 8.0 Update 1 Release Notes.
En Oracle OpenSSO 8.0 Update 2, el Fedlet está disponible de la siguiente forma:
Una vez descomprimido el archivo ZIP de OpenSSO 8.0 Update 2, tanto el Fedlet de Java como el de .NET están disponibles en el siguiente archivo:
zip-root/opensso/fedlet/fedlet-unconfigured.zip, donde zip-root es la ubicación en la que se ha descomprimido el archivo ZIP Oracle OpenSSO 8.0.
Una vez instalado Oracle OpenSSO 8.0 Update 2, puede crear el Fedlet de Java en la consola de administración de OpenSSO 8.0 mediante el flujo de trabajo de creación de Fedlet que se encuentra debajo de Tareas comunes.
El Fedlet presenta los siguientes requisitos:
Un contenedor web compatible de Oracle OpenSSO 8.0 Update 2 si tiene intención de implementar el archivo fedlet.war o una aplicación de proveedor de servicios de Java integrada en el Fedlet. Consulte la sección Requisitos de hardware y software para OpenSSO 8.0 Update 2.
Servicios de Internet Information Server (IIS) 7.0 de Microsoft y posterior si tiene intención de implementar el Fedlet de .NET.
JDK 1.6.x y posterior.
En esta sección se describe cómo configurar inicialmente el Fedlet con una aplicación de proveedor de servicios:
Una vez finalizada la configuración inicial del Fedlet, continúe con cualquier tarea de configuración adicional que desee realizar. Debe tener en cuenta las siguientes consideraciones:
Si modifica el archivo sp.xml del Fedlet, debe volver a importarlo en el proveedor de identidades.
Si realiza otros cambios de configuración del Fedlet en el proveedor de servicios, proporcione esta información al administrador del proveedor de identidades para que puedan aplicarse en este proveedor.
En el proveedor de identidades, genere los metadatos XML para este proveedor y guárdelos en un archivo denominado idp.xml.
En Oracle OpenSSO 8.0 Update 2, utilice exportmetadata.jsp. Por ejemplo:
http://opensso-idp.example.com:8080/opensso/saml2/jsp/exportmetadata.jsp
En el proveedor de servicios, descomprima el archivo ZIP del Fedlet (si es necesario).
Cree el directorio principal del Fedlet, es decir, el directorio en el que el Fedlet leerá sus metadatos, el círculo de confianza y los archivos de propiedades de configuración.
La ubicación predeterminada es el subdirectorio del Fedlet en el directorio principal del usuario que ejecuta el contenedor web del Fedlet (indicado por la propiedad user.home de JVM). Por ejemplo, si este directorio principal es /home/webservd, el directorio principal del Fedlet será el siguiente:
/home/webservd/fedlet
Para cambiar el directorio principal predeterminado del Fedlet, establezca el valor de la propiedad de tiempo de ejecución com.sun.identity.fedlet.home de JVM en la ubicación que desee. Por ejemplo:
-Dcom.sun.identity.fedlet.home=/export/fedlet/conf
A continuación, el Fedlet lee sus metadatos, el círculo de confianza y los archivos de configuración del directorio /export/fedlet/conf.
Copie los siguientes archivos del directoriojava/conf del Fedlet de Java en el directorio principal del Fedlet:
sp.xml-template
sp-extended.xml-template
idp-extended.xml-template
fedlet.cot-template
En el directorio principal del Fedlet, cambie los nombres de los archivos copiados y elimine -template en cada uno de ellos.
En los archivos del directorio principal del Fedlet que ha copiado y cuyo nombre ha cambiado, sustituya las etiquetas, tal y como se muestra en la siguiente tabla:
Etiqueta |
Sustituir por |
---|---|
FEDLET_COT |
El nombre del círculo de confianza (COT) del que son miembros el proveedor de identidades remoto y la aplicación del proveedor de servicios del Fedlet de Java. |
FEDLET_ENTITY_ID |
El Id. (nombre) de la aplicación del proveedor de servicios del Fedlet de Java. Por ejemplo: fedletsp |
FEDLET_PROTOCOL |
El protocolo del contenedor web de la aplicación del proveedor de servicios del Fedlet de Java como, por ejemplo, fedlet.war. Por ejemplo: https |
FEDLET_HOST |
El nombre de host del contenedor web de la aplicación del proveedor de servicios del Fedlet de Java como, por ejemplo, fedlet.war. Por ejemplo: fedlet-host.example.com |
FEDLET_PORT |
El número de puerto del contenedor web de la aplicación del proveedor de servicios del Fedlet de Java como, por ejemplo, fedlet.war. Por ejemplo: 80 |
FEDLET_DEPLOY_URI |
La URL de la aplicación del proveedor de servicios del Fedlet de Java. Por ejemplo: http://fedletsp.example.com/myFedletApp |
IDP_ENTITY_ID |
El Id. (nombre) del proveedor de identidades remoto. Por ejemplo: openssoidp |
Nota: si el Id. de entidad del proveedor de servicios o identidades del Fedlet contiene un símbolo de porcentaje (%) o una coma (,), debe establecer una secuencia de escape para el carácter antes de sustituirlo en el archivo fedlet.cot. Por ejemplo, cambie "%"por "%25" y "," por "%2C". |
Copie el archivo FedletConfiguration.properties del directorio java/conf del Fedlet de Java en el directorio principal del Fedlet.
Copie el archivo XML de metadatos estándar del proveedor de identidades (indicado en el paso 1) en el directorio principal del Fedlet. A este archivo se le debe asignar el nombre idp.xml.
Importe el archivo de metadatos XML del Fedlet de Java (sp.xml) en el proveedor de identidades.
En Oracle OpenSSO 8.0 Update 2, utilice el flujo de trabajo de registro del proveedor de servicios remoto que se encuentra debajo de Tareas comunes en la consola de administración de OpenSSO 8.0 para importar los metadatos del proveedor de servicios del Fedlet de Java y agregar este proveedor a un círculo de confianza.
En función de los requisitos, continúe con las tareas de configuración adicionales del Fedlet de Java.
En el proveedor de identidades, genere los metadatos XML para este proveedor y guárdelos en un archivo denominado idp.xml.
En Oracle OpenSSO 8.0 Update 2, utilice exportmetadata.jsp. Por ejemplo:
http://opensso-idp.example.com:8080/opensso/saml2/jsp/exportmetadata.jsp
En el proveedor de servicios, descomprima el archivo ZIP del Fedlet (si es necesario).
Copie los siguientes archivos de la carpeta asp.net/conf del Fedlet de .NET en la carpeta App_Data de la aplicación.
sp.xml-template
sp-extended.xml-template
idp-extended.xml-template
fedlet.cot-template
En la carpeta App_Data, cambie el nombre de los archivos y elimine -template en cada uno de ellos.
En los archivos de la carpeta App_Data que ha copiado y cuyo nombre ha cambiado, sustituya las etiquetas, tal y como se muestra en la siguiente tabla:
Etiqueta |
Sustituir por |
---|---|
FEDLET_COT |
El nombre del círculo de confianza (COT) del que son miembros el proveedor de identidades remoto y la aplicación del proveedor de servicios del Fedlet de .NET. |
FEDLET_ENTITY_ID |
El Id. (nombre) de la aplicación del proveedor de servicios del Fedlet de .NET. Por ejemplo: fedletsp |
FEDLET_DEPLOY_URI |
La URL de la aplicación del proveedor de servicios del Fedlet de .NET. Por ejemplo: http://fedletsp.example.com/myFedletApp |
IDP_ENTITY_ID |
El Id. (nombre) del proveedor de identidades remoto. Por ejemplo: openssoidp |
Copie el archivo XML de metadatos estándar del proveedor de identidades (indicado en el paso 1) en la carpeta App_Data de la aplicación. A este archivo se le debe asignar el nombre idp.xml.
Copie los archivos Fedlet.dll y Fedlet.dll.config de la carpeta asp.net/bin del Fedlet de .NET en la carpeta bin de la aplicación.
Importe el archivo de metadatos XML del Fedlet de .NET (sp.xml) en el proveedor de identidades.
En Oracle OpenSSO 8.0 Update 2, utilice el flujo de trabajo de registro del proveedor de servicios remoto que se encuentra debajo de Tareas comunes en la consola de administración de OpenSSO 8.0 para importar los metadatos del proveedor de servicios del Fedlet de .NET y agregar este proveedor a un círculo de confianza.
En función de los requisitos, continúe con las tareas de configuración adicionales del Fedlet de .NET.
Oracle OpenSSO 8.0 Update 2 incluye las siguientes nuevas funciones para el Fedlet:
Cifrado y descifrado de contraseñas del Fedlet de Java (CR 6930477)
Compatibilidad del Fedlet de Java con las firmas y el cifrado
Compatibilidad del Fedlet de Java con la consulta de atributos (CR 6930476)
Cifrado y descifrado de solicitudes y respuestas por parte del Fedlet de .NET (CR 6939005)
Firma de solicitudes y respuestas por parte del Fedlet de .NET (CR 6928530)
Cierre de sesión único del Fedlet de .NET (CR 6928528 y CR 6930472)
Inicio de sesión único del proveedor de servicios del Fedlet de .NET iniciado (CR 6928525)
Oracle OpenSSO Fedlet incluye información sobre la versión. Después de extraer los archivos del paquete (archivo ZIP) del Fedlet, consulte los siguientes archivos para determinar la versión del Fedlet:
Fedlet de Java: java/conf/FederationConfig.properties
Fedlet de .NET: asp.net/bin/Fedlet.dll.config
El Fedlet de Java proporciona el archivo fedletEncode.jsp de fedlet.war para cifrar las contraseñas storepass y keypass. De manera predeterminada se genera una clave de cifrado diferente para cada Fedlet. Para cambiar esta clave de cifrado, establezca la propiedad am.encryption.pwd en el archivo FederationConfig.properties del Fedlet.
El Fedlet de Java admite la verificación de firmas XML y el descifrado de elementos assertion y NameID cifrados y sus correspondientes atributos.
Cree un archivo de almacén de claves denominado keystore.jks mediante la utilidad keytool.
Agregue las claves privadas (y los certificados públicos si corresponde) utilizadas para las firmas y el cifrado en el archivo keystore.jks.
Cree un archivo .storepass.
Agregue la contraseña al archivo .storepass. Para cifrar la contraseña, utilice fedletEncode.jsp.
Cree un archivo .keypass.
Agregue la contraseña al archivo .keypass. Para cifrar la contraseña, utilice fedletEncode.jsp.
Si utiliza contraseñas de texto no cifrado, incluya entre comentarios la siguiente línea del archivo FederationConfig.properties:
com.sun.identity.saml.xmlsig.passwordDecoder= com.sun.identity.fedlet.FedletEncodeDecode
Establezca la ruta completa para los siguientes atributos del archivo FederationConfig.properties , donde path hace referencia a la ruta completa al archivo respectivo:
com.sun.identity.saml.xmlsig.keystore=path/keystore.jks com.sun.identity.saml.xmlsig.storepass=path/.storepass com.sun.identity.saml.xmlsig.keypass=path/.keypass
Utilice keytool para exportar el certificado de firma. Por ejemplo:
keytool -export -keystore keystore.jks -rfc -alias test
La herramienta le solicita que especifique la contraseña utilizada para acceder a keystore.jks y, a continuación, genera el certificado.
Si necesita un certificado de cifrado, utilice keytool para exportarlo, como se muestra en el paso anterior (o utilice el mismo certificado para las firmas y el cifrado).
Cree un bloque XML de KeyDescriptor y agregue el certificado de cifrado a este. Por ejemplo, tenga en cuenta la etiqueta use="signing" del elemento KeyDescriptor:
<KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate> MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+ RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC /FfwWigmrW0Y0Q== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </KeyDescriptor>
Cree otro bloque XML de KeyDescriptor y agregue el certificado de cifrado a este. Por ejemplo, tenga en cuenta la etiqueta use="encryption" del elemento KeyDescriptor:
<KeyDescriptor use="encryption"> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509Data> <X509Certificate> MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+ RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC /FfwWigmrW0Y0Q== </X509Certificate> </X509Data> </KeyInfo> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"> <KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize> </EncryptionMethod> </KeyDescriptor>
En el archivo sp.xml del Fedlet de Java, agregue los bloques XML con los certificados de firma y cifrado en el elemento SPSSODescriptor . Para obtener un elemento SPSSODescriptor de muestra, consulte el Ejemplo 4–1.
El atributo AuthnRequestsSigned se establece en true (verdadero), lo que configura el Fedlet de Java para que firme todas las solicitudes de autenticación.
En el archivo sp-extended.xml del Fedlet de Java, establezca los valores de los siguientes elementos:
signingCertAlias contiene el alias del certificado de firma XML del almacén de claves.
encryptionCertAlias contiene el alias del certificado de cifrado XML del almacén de claves.
Para forzar el cifrado de determinados elementos por parte del proveedor de servicios del Fedlet de Java, establezca los siguientes atributos del archivo sp-extended.xml en true (verdadero):
wantAssertionEncrypted
wantNameIDEncrypted
wantAttributeEncrypted
Para forzar la firma de determinados elementos por parte del proveedor de servicios del Fedlet de Java, así como de los elementos que el proveedor desea que se firmen, establezca los siguientes atributos en true (verdadero):
wantAuthnRequestsSigned del archivo idp.xml le indica al Fedlet los elementos que debe firmar.
AuthnRequestsSigned y WantAssertionsSigned del archivo sp.xml le indica al proveedor de identidades los elementos que el Fedlet tiene intención de firmar.
wantArtifactResponseSigned del archivo sp-extended.xml le indica al Fedlet los elementos que debe firmar.
wantPOSTResponseSigned del archivo sp-extended.xml
wantLogoutRequestSigned del archivo sp-extended.xml
wantLogoutResponseSigned del archivo sp-extended.xml
Si el proveedor de identidades requiere que se firmen determinados mensajes, establezca los atributos respectivos en true (true) en el archivo idp-extended.xml . Por ejemplo, wantLogoutRequestSigned y wantLogoutResponseSigned.
Si establece atributos en el archivo sp-extended.xml, proporcione esta información al administrador del proveedor de identidades para que puedan realizarse los cambios de configuración necesarios en este.
Reinicie el contenedor web del Fedlet de Java.
Importe el archivo sp.xml del Fedlet de Java en el proveedor de identidades.
<EntityDescriptor entityID="fedlet" xmlns="urn:oasis:names:tc:SAML:2.0:metadata"> <SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <b><KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate> MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+ RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC /FfwWigmrW0Y0Q== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </KeyDescriptor></b> <b><KeyDescriptor use="encryption"> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509Data> <X509Certificate> MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+ RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC /FfwWigmrW0Y0Q== </X509Certificate> </X509Data> </KeyInfo> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"> <KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize> </EncryptionMethod> </KeyDescriptor></b> <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat ><AssertionConsumerService index="1" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://server.sun.com:7070/fedlet/fedletapplication"/> </SPSSODescriptor> </EntityDescriptor>
El Fedlet de Java admite la consulta de atributos SAMLv2, lo que permite realizar una consulta en un proveedor de identidades como, por ejemplo, Oracle OpenSSO 8.0 Update 2 para buscar valores de atributos de identidad específicos. Puede configurar el Fedlet para que firme y cifre la consulta. La firma es necesaria para emitir la consulta del Fedlet, aunque el cifrado es opcional.
Habilite la firma XML para firmar la consulta de atributos, como se describe en Compatibilidad del Fedlet de Java con las firmas y el cifrado.
Agregue el certificado generado en el paso anterior al elemento RoleDescriptor del archivo sp.xml del Fedlet. En el siguiente ejemplo, hay dos etiquetas KeyDescriptor en las que se debe pegar el certificado. Una es para la firma y la otra para el cifrado. Si no va a habilitar el cifrado, la etiqueta KeyDescriptor use="encryption" no es necesaria.
<RoleDescriptor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:query="urn:oasis:names:tc:SAML:metadata:ext:query" xsi:type="query:AttributeQueryDescriptorType" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate> --certificate-- </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </KeyDescriptor> <KeyDescriptor use="encryption"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate> --certificate-- </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"> <xenc:KeySize xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">128</xenc:KeySize> </EncryptionMethod> </KeyDescriptor> </RoleDescriptor>
En el archivo sp-extended.xml del Fedlet de Java, especifique un valor para el atributo signingCertAlias y para el atributo encryptionCertAlias si se ha configurado.
Si tiene intención de configurar el proveedor de identidades para cifrar la aserción, cifre también el elemento NameID. De este modo, el valor del atributo wantNameIDEncrypted debe establecerse en true (verdadero). Agregue el código XMl al elemento AttributeQueryConfig. Por ejemplo:
<Attribute name="signingCertAlias"> <Value>test</Value> </Attribute> <Attribute name="encryptionCertAlias"> <Value>test</Value> </Attribute> <Attribute name="wantNameIDEncrypted"> <Value>true</Value> </Attribute>
En este ejemplo, test es el alias de la clave de ejemplo.
Importe el archivo de metadatos del Fedlet de Java (sp.xml) en el proveedor de identidades.
Además, realice los siguientes pasos de configuración en el proveedor de identidades para admitir la consulta de atributos del Fedlet.
El Fedlet de .NET puede cifrar las solicitudes XML salientes y descifrar las respuestas entrantes de los elementos de Id. de nombre, atributo y aserción.
Importe el certificado X.509 en la carpeta Personal de la cuenta de equipo local mediante el complemento de certificados de Microsoft Management Console. Para utilizar este complemento, consulte el siguiente artículo de Microsoft:
Especifique un nombre descriptivo para este certificado. Para ello, acceda al cuadro de diálogo Propiedades e introduzca un valor. (Guarde este valor para el paso 4).
Consulte los permisos adecuados para permitir el acceso de lectura al certificado para la cuenta de usuario utilizada por los Servicios de Internet Information Server (IIS), como se describe en el artículo de Microsoft. Por ejemplo:
En el archivo de metadatos ampliado del Fedlet de .NET (sp-extended.xml ), especifique el nombre descriptivo indicado en el paso 2 como valor del atributo encryptionCertAlias. Por ejemplo:
<Attribute name="encryptionCertAlias"> <Value>MyFedlet</Value>
En el archivo de metadatos del proveedor de servicios del Fedlet de .NET (sp.xml ), agregue KeyDescriptor en la clave de cifrado.
Utilice el complemento de certificados de la instancia de Microsoft Management Console utilizada anteriormente para exportar la clave pública del certificado con codificación Base64 para incluirla en el bloque XML de KeyDescriptor. Esta instancia de KeyDescriptor debe ser el primer elemento principal en SPSSODescriptor. Por ejemplo:
<KeyDescriptor use="encryption"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate> MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+ RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC /FfwWigmrW0Y0Q== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"> <KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize> </EncryptionMethod> </KeyDescriptor>
Reinicie el conjunto de aplicaciones asociado a la aplicación de .NET.
Para probar esta configuración, utilice la aplicación de muestra. Además, establezca los siguientes atributos para cifrar las solicitudes y descifrar las respuestas con el proveedor de identidades y los cambios adecuados efectuados en los metadatos configurados:
Aserción: establezca el atributo wantAssertionEncrypted del archivo de metadatos sp-extended.xml en true (verdadero) para que el Fedlet de .NET descifre el elemento EncryptedAssertion en las respuestas entrantes del proveedor de identidades.
Atributo: establezca el atributo wantAttributeEncrypted del archivo de metadatos sp-extended.xml en true (verdadero) para que el Fedlet de .NET descifre el elemento EncryptedAttribute en las respuestas entrantes del proveedor de identidades.
Id. de nombre: establezca el atributo wantNameIDEncrypted del archivo de metadatos idp-extended.xml en true (verdadero) para que el Fedlet de .NET cifre el elemento NameID en las solicitudes salientes. Establezca este mismo atributo en sp-extended.xml para que el Fedlet de .NET descifre el elemento EncryptedID en las respuestas entrantes del proveedor de identidades.
El Fedlet de .NET admite la firma de solicitudes XML entrantes como, por ejemplo, las solicitudes Authn y de cierre de sesión.
Importe el certificado X.509 en la carpeta Personal de la cuenta de equipo local mediante el complemento de certificados de Microsoft Management Console. Para utilizar este complemento, consulte el siguiente artículo de Microsoft:
Especifique un nombre descriptivo para este certificado. Para ello, acceda al cuadro de diálogo Propiedades e introduzca un valor. (Guarde este valor para el paso 4).
Consulte los permisos adecuados para permitir el acceso de lectura al certificado para la cuenta de usuario utilizada por los Servicios de Internet Information Server (IIS), como se describe en el artículo de Microsoft. Por ejemplo:
En el archivo de metadatos ampliado del Fedlet de .NET (sp-extended.xml ), especifique el nombre descriptivo indicado en el paso 2 como valor del atributo signingCertAlias. Por ejemplo:
<Attribute name="signingCertAlias"> <Value>MyFedlet</Value>
En el archivo de metadatos del proveedor de servicios del Fedlet de .NET (sp.xml ), agregue KeyDescriptor en la clave de firma.
Utilice el complemento de certificados de la instancia de Microsoft Management Console utilizada anteriormente para exportar la clave pública del certificado con codificación Base64 para incluirla en el bloque XML de KeyDescriptor. Esta instancia de KeyDescriptor debe ser el primer elemento principal en SPSSODescriptor. Por ejemplo:
<KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate> MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+ RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC /FfwWigmrW0Y0Q== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </KeyDescriptor>
Reinicie el conjunto de aplicaciones asociado a la aplicación de .NET.
El Fedlet de .NET admite el cierre de sesión único de los proveedores de identidades y servicios iniciados. Para implementar el cierre de sesión único, la aplicación de muestra del Fedlet de .NET incluye los archivos logout.aspx y spinitiatedslo.aspx en la carpeta asp.net/SampleApp. Para comprobar el funcionamiento de la función de cierre de sesión único del Fedlet, implemente la aplicación de muestra del Fedlet de .NET.
Si no ha configurado el Fedlet de .NET, siga los pasos indicados en el archivo Readme (Léame).
Copie los archivos logout.aspx y spinitiatedslo.aspx en el contenido público de la aplicación de .NET.
Realice los siguientes cambios en los archivos de configuración de la aplicación:
En el archivo sp.xml, asegúrese de que la ruta al archivo logout.aspx señale a la ubicación correcta del archivo de la aplicación.
En el archivo idp.xml (o durante la configuración del proveedor de identidades), asegúrese de que la ruta al archivo spinitiatedslo.aspx señale a la ubicación correcta del archivo de la aplicación.
Si desea que se firmen la solicitud y la respuesta de cierre de sesión, establezca los siguientes atributos en true (verdadero) en los archivos sp-extended.xml y idp-extended.xml:
wantLogoutRequestSigned
wantLogoutResponseSigned
Importe el archivo de metadatos del proveedor de servicios del Fedlet (sp.xml) en el proveedor de identidades.
Además, informe al administrador del proveedor de identidades de que ha configurado el cierre de sesión único para el proveedor de servicios del Fedlet a fin de que puedan realizarse los cambios adicionales necesarios en la configuración del proveedor de identidades.
El Fedlet de .NET admite el inicio de sesión único (SSO) para el proveedor de servicios SAMLv2 iniciado. Además, se necesita disponer de compatibilidad con artefactos para permitir que el Fedlet de .NET reciba un artefacto y, a continuación, lo resuelva mediante SOAP con el servicio de resolución de artefactos del proveedor de identidades emisor.
La aplicación de muestra del Fedlet de .NET muestra cómo configurar el inicio de sesión único. Una vez que la aplicación cuente con los artefactos necesarios instalados, se requiere un URI específico para recibir un elemento HTTP POST que contenga la respuesta SAMLv2 tras una autenticación con éxito por parte del proveedor de identidades. En el siguiente código de ejemplo, se indica cómo se puede recuperar esta información en una aplicación de .NET:
AuthnResponse authnResponse = null; try { ServiceProviderUtility spu = new ServiceProviderUtility(Context); authnResponse = spu.GetAuthnResponse(Context); } catch (Saml2Exception se) { // invalid AuthnResponse received } catch (ServiceProviderUtilityException spue) { // issues with deployment (reading metadata) }
Si la aplicación recibe la respuesta SAMLv2, el objeto authnResponse se llenará con la información de aserción. La aplicación de muestra indica cómo recuperar la información de atributos y asunto desde este objeto.
El Fedlet de .NET admite varios proveedores de identidades y su servicio de detección.
En algunas implementaciones, es recomendable configurar el Fedlet de .NET con varios proveedores de identidades como, por ejemplo, Oracle OpenSSO 8.0 Update 2. Realice la siguiente tarea para cada proveedor de identidades adicional que desee agregar.
Obtenga el archivo de metadatos XML del proveedor de identidades adicional.
Asigne al archivo de metadatos del proveedor de identidades adicional el nombre idp n.xml, donde n es el proveedor de identidades que va a agregar. Por ejemplo, asigne el nombre idp2.xml al segundo archivo del proveedor de identidades, idp3.xml al tercero y así sucesivamente. En este procedimiento se utiliza idp2.xml como nombre del archivo.
Copie el archivo idp2.xml del paso 2 en la carpeta App_Data de la aplicación.
Agregue este nuevo proveedor de identidades al círculo de confianza del Fedlet de .NET.
Para agregar el nuevo proveedor de identidades a un círculo de confianza existente:
En el archivo fedlet.cot de la carpeta App_Data de la aplicación, anexe el Id. de entidad del nuevo IDP (indicado por el atributo entityID del archivo de metadatos idp2.xml) al valor del atributo sun-fm-trusted-providers utilizando una coma (,) como separador.
Para agregar el nuevo proveedor de identidades a un nuevo círculo de confianza:
Cree un archivo nuevo denominado fedlet2.cot en la carpeta App_Data de la aplicación. Utilice el archivo fedlet.cot existente como plantilla. Sin embargo, cambie el valor del atributo cot-name por el nombre del nuevo círculo de confianza (por ejemplo, cot2). Incluya el Id. de entidad del nuevo proveedor de identidades y el del Fedlet como valor del atributo sun-fm-trusted-providers separándolos con una coma (,).
En el archivo sp-extended.xml, agregue el nombre del nuevo círculo de confianza al valor del atributo cotlist. Por ejemplo, para un círculo de confianza denominado cot2:
<Attribute name="cotlist"> <Value>saml2cot</Value> <Value>cot2</Value> </Attribute>
En la carpeta App_Data de la aplicación, cree un nuevo archivo idp2-extended.xml como metadatos ampliados del nuevo proveedor de identidades. Utilice el archivo idp-extended.xml existente como plantilla. Sin embargo, cambie el elemento entityID por el Id. de entidad del nuevo proveedor de identidades. Cambie el valor del atributo cotlist por el nombre del círculo de confianza si se ha creado un nuevo círculo para el proveedor de identidades. Asegúrese de que el proveedor de identidades adicional constituya una identidad remota.
Reinicie el conjunto de aplicaciones asociado a la aplicación del Fedlet de .NET.
El archivo XML de metadatos del Fedlet (sp.xml) debe importarse en el proveedor de identidades adicional y agregarse al mismo círculo de confianza que el de la entidad del proveedor de identidades. Importe el archivo sp.xml en el proveedor de identidades o indique el archivo que debe importarse al administrador del proveedor de identidades.
En este caso, el Fedlet de .NET se configura con varios proveedores de identidades en un círculo de confianza y desea configurar el Fedlet para que utilice el servicio de detección a fin de determinar el proveedor de identidades preferido.
Debe configurarse el servicio de detección para los proveedores de identidades que se están utilizando con el Fedlet de .NET. Para obtener información sobre cómo configurar el servicio de detección del proveedor de identidades en Oracle OpenSSO 8.0 Update 2, consulte la siguiente colección de documentación: http://docs.sun.com/coll/1767.1.
En el archivo fedlet.cot del Fedlet de .NET, establezca la propiedad sun-fm-saml2-readerservice-url en la URL del servicio de lector SAMLv2. Por ejemplo:
sun-fm-saml2-readerservice-url=http://discovery.common.com/opensso/saml2reader
Reinicie el conjunto de aplicaciones asociado a la aplicación del Fedlet de .NET.
Pendiente de desarrollo
La referencia de la API de Java del Fedlet está disponible en la referencia de la API de Java de Oracle OpenSSO 8.0 Update 2 en la siguiente colección de documentación: http://docs.sun.com/coll/1767.1.
El método getPolicyDecisionForFedlet no se admite en la versión OpenSSO 8.0 Update 2.