Opciones para protección de contenido web

Fragmento de: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPProtectContent

There are two ways that you can use the SP to protect content:

  • Actively, by intercepting requests for particular resources and ensuring that a valid, authenticated session exists between the user agent and the SP software before passing along the request
  • Passively, by publishing information about valid, authenticated sessions through CGI, but passing unauthenticated requests through unmolested

In both cases, the information about the session supplied by the SP is provided uniformly so that applications can be programmed to respond dynamically based on the information.

Protección Activa:

Se puede proteger la webapp completa, indicando en el Location de apache la raiz de la aplicación.

Si la aplicación tiene alguna parte que deberia ser publica, se puede agregar en un segundo directorio o aplicación no protegido.
Esto es lo que se hace en el MAP (Módulo de Autogestión de Personal), donde el usuario primero ingesa a una parte publica (portalmap) donde hay vínculos, y algunos de ellos dirigen a la aplicación privada, protegida (map).
En este caso se protege la aplicacion completa (map) con shibboleth.

Las webapps en el ejemplo son:

/webapps/portalmap (público)
/webapps/map (protegido con shibboleth)

Protección Pasiva:

(O cómo utilizar autenticación shibboleth en una aplicación sin proteger toda la web application)

En este caso hay que tener mayor cuidado en la aplicación, de que se realice el control de acceso correctamente, es decir, que el acceso a un recurso privado solo sea posible para usuarios autenticados. Por este motivo, se recomienda la forma anterior si es posible, para tener una protección de toda la aplicación a nivel de infraestructura.

Opción 1: proteger sólo una página de inicio de sesión (de la aplicación)

Se configura apache para proteger dicha página.
Esta es la forma que usa moodle (https://moodle.org/auth/shibboleth/README.txt)

Opción 2: usar el SessionInitiator del SP (la aplicación debe tener un botón de login que redirija a la página de inicio de sesión por defecto que tiene el SP, ubicada en /Shibboleth.sso/Login)

Se puede usar el mecanismo de "lazy session", donde para cierta página o location se indica que es "opcional" tener una sesión iniciada. En caso de que la haya, el SP carga las variables de entorno con los atributos informados por el IdP, para que estén accesibles para la aplicación.

Refs:

https://aai-demo.switch.ch/lazy/
https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPProtectContent
https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPEnableApplication
https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPSessionCreationParameters