Servicio de Informática y Comunicaciones - Universidad de SevillaUniversidad de SevillaSIC

HTML5

CSS3

SSO: Protocolo OpenSSO

Integración con SSO

 

  El uso del protocolo OpenSSO está desaconsejado, ya que no se ofrece soporte al mismo

Introducción

La pieza fundamental del protocolo es el token de sesión, almacenado en una cookie definida para .us.es con nombre iPlanetDirectoryPro (por motivos históricos).

El protocolo OpenSSO se apoya en servicios web y en redirecciones web a partes públicas de la interfaz del sistema SSO. A continuación se detallan todos los servicios web y partes públicas de la interfaz necesarias para trabajar con el protocolo OpenSSO, y en último lugar se indica cuál es la secuencia de pasos necesaria para autenticar a un usuario.

Las rutas que encontrará en este documento son relativas a las URLs base de cualquiera de los entornos disponibles en la US (preproducción y producción). Puede encontrar más información sobre los entornos en la sección correspondiente.

Para hacer las peticiones a los servicios web debe pasarlos por un procedimiento de URL encoding. En PHP puede hacerlo usando la función urlencode().

Servicios web

Un servicio web es un programa accesible vía web que acepta unos parámetros de entrada y produce una salida en un formato previamente acordado. Para poder interactuar con los servicios web de identidad de OpenSSO solamente necesitaremos alguna biblioteca que permita hacer consultas HTTP.

Los servicios web disponibles usan una interfaz tipo REST.

Será la propia aplicación la encargada de conversar directamente con los servicios.

Servicio de validación de tokens

Este servicio web permite comprobar si un token de sesión es válido o no.

Ruta relativa identity/isTokenValid
Parámetros GET tokenid: token de sesión
Respuestas posibles
  • boolean=true: token válido
  • boolean=false: token inválido

Servicio de lectura de atributos

Este servicio web le permite hallar los atributos de la identidad asociada al token de sesión dado.

Ruta relativa identity/attributes
Parámetros GET subjectid: token de sesión
Respuesta userdetails.token.id=XXX
userdetails.attribute.name=uid
userdetails.attribute.value=mrsalmon
userdetails.attribute.name=mail
userdetails.attribute.value=mrsalmon@us.es
...

Interfaz para el usuario

Si bien la aplicación hace consultas a los servicios web para conocer el estado de un token o extraer los atributos asociados al mismo, es necesaria la intervención del navegador del usuario en dos momentos del proceso:

  • Para autenticarse (hacer login)
  • Para cerrar la sesión (hacer logout)

La aplicación dirigirá el navegador del usuario a estas dos partes públicas de la interfaz del SSO cuando sea necesario, usando para ello un código HTTP 302 Found y una cabecera Location: apuntando a la URL correspondiente.

Cuando la operación correspondiente se ejecute correctamente (autenticación o cierre de sesión) el sistema SSO se encargará de redirigir de nuevo al usuario a la URL indicada en el parámetro goto.

Autenticación (login)

Ruta relativa UI/Login
Parámetros GET goto: URL a la que devolver al usuario

Autenticación en Internet Explorer

Internet Explorer tiene una política de seguridad respecto a las cookies para dominios de dos letras que impide el correcto funcionamiento del SSO (artículo 310676 de Microsoft).

Afortunadamente el SSO, al redirigir de vuelta a un usuario tras autenticarse, incluye un parámetro GET iPlanetDirectoryPro en la URL, con el valor del token de sesión:

http://url.de.vuelta/ruta?iPlanetDirectoryPro=XXXX

Puede (y debe) aprovechar este token si detecta que el navegador del usuario es Internet Explorer, para permitir al menos la autenticación en la aplicación actual.

Cierre de sesión (logout)

Ruta relativa UI/Logout
Parámetros GET goto: URL a la que devolver al usuario

Secuencia de pasos

Autenticación

  1. Comprobar si el usuario entrega una cookie de sesión iPlanetDirectoryPro. Si no la tiene, redirigirlo a la página de login indicando como página de vuelta la actual u otra distinta. Fin
  2. Validar el token usando el servicio web identity/isTokenValid
    • Si el token es inválido, redirigir al usuario a la página de login indicando como página de vuelta la actual u otra distinta
    • Si el token es válido, solicitar al SSO los atributos de identidad asociados al token, utilizando el servicio web identity/attributes

Cierre de sesión

  1. Redirigir al usuario directamente a la página de logout indicando como página de vuelta la actual u otra distinta. Fin