Oracle Cloud – Configuración de SSO federado y autenticación
07/06/2018 -
Para poder delegar la autenticación de usuario en un proveedor externo (IdP) se debe federar el SSO con el proveedor deseado. De esta forma la validación de las credenciales de acceso será realizada por el proveedor externo que, mediante una aserción de seguridad (SAML), confirma su identidad a Oracle Cloud.
Para que el inicio de sesión único federado (SSO) funcione correctamente desde Oracle Cloud deben cumplirse los siguientes requisitos:
- Los usuarios deben existir tanto en Oracle Cloud como en el proveedor de identidad.
- El nombre de usuario (o la dirección de correo electrónico) debe ser el mismo en ambas cuentas.
Configuración del proveedor y habilitar SSO
Para configurar Oracle Cloud como proveedor de servicios iniciamos sesión en Oracle Cloud (Mis Servicios) y vamos a Usuarios, hacemos clic en la pestaña SSO Configuration y luego en Configure SSO.
En la ventana que se abre importamos la configuración del proveedor de identidad (un fichero xml que nos proporciona el IdP), y configuramos los siguientes valores:
- Protocolo SSO: HTTP POST
- User Identifier: User ID
- Contained in: NameID
Guardamos y en la sección siguiente podemos obtener lo necesario para configurar el proveedor de identidad y exportar los metadatos en xml con el botón Export Metadata.
Una vez actualizada la configuración del IdP con los metadatos de Oracle Cloud podemos probar la configuración de SSO para verificar que todo funciona bien antes de activar el SSO. Para hacerlo, pulsamos el botón Test y después Iniciar SSO.
Si todo ha ido bien podemos ir a la sección Enable SSO de la página y hacer clic en el botón Enable SSO.
Cuando SSO está habilitado la página de acceso incluye un inicio de sesión con el enlace de ID de nuestra compañía.
Referencia: https://docs.oracle.com/en/cloud/paas/process-cloud/user/configuring-federated-sso-and-authentication.html
SSO empresarial en MCS
Para poder acceder a las APIs implementadas en MCS mediante SSO es necesario configurar los backends para que hagan uso de SSO mediante el uso de Tokens SAML.
En este modelo, la aplicación obtiene un token emitido por MCS tras autenticar el usuario en el IdP. Este token se emplea como autorización en cada llamada subsiguiente a las APIs en MCS.
Usuarios Virtuales
Para evitar tener que mantener los usuarios replicados en Oracle Cloud usaremos el concepto de usuarios virtuales, obteniendo toda la información del usuario como los roles del token.
Lo primero que tenemos que hacer es configurar el backend para que admita autenticación básica y habilitar el uso de SSO. Para hacerlo vamos a la configuración del backend y habilitamos HTTP básico y en la sección Consumidor OAuth marcamos el check Activar SSO.
Registrar Emisor de Tokens en MCS
Para que la aplicación pueda usar tokens emitidos por el IdP para autenticarse es necesario registrar el emisor de tokens en MCS siguiendo estos pasos:
- Ir a Administración en el menú lateral.
- Seleccionar un entorno y hacer clic en Claves y Certificados.
- Hacer clic en la pestaña Certificados de tokens y de servicios web.
- Hacer clic en Agregar y facilitar el nombre y certificado proporcionado por el IdP y que es usado por este para firmar las afirmaciones.
- Hacer clic en Guardar.
- Esperar a que el certificado de token se propague en el sistema. Esto no debería requerir más de 10 minutos.
- Hacer clic en la pestaña Emisores de tokens.
- Hacer clic en Nuevo emisor.
- Ingresar el nombre del emisor del token en el campo Nombre debajo de Detalles del emisor.
- Junto al panel Nombres de sujeto del certificado, hacer clic en Agregar (+).
- En el cuadro de diálogo Seleccionar nombre de asunto del certificado, seleccionar al menos un nombre y hacer clic en Guardar.
- Seleccionar el nombre proporcionado y hacer clic en Reglas.
- Seleccionar Permitir usuario virtual.
- Opcionalmente, crear una regla de asignación para establecer los roles en base a atributo del token.
- Hacer clic en Guardar y cerrar.
Para validar el funcionamiento accedemos a la url del Punto final de token de SSO que podemos obtener en la configuración del backend, y le añadimos el parámetro clientID cuyo valor es el ID de cliente para el Consumidor OAuth.
La url sería como esta: <Punto final de token de SSO>?clientID=<ID de cliente>
En esta URL se nos solicitarán las credenciales y nos proporcionará un token de autenticación OAuth que podremos emplear para llamar a las APIs.