ShibbolethSPAppPython

Versión 1 (Santiago Elizondo, Jueves, 12 de Julio de 2018 15:46:55 -0300)

1 1
h1. ShibbolethSP - Integración de una aplicación Python
2 1
3 1
Los pasos a continuación asumen que se trabaja en un ambiente con Debian 8 y Apache 2.4 junto con el módulo Shibboleth configurado como se mencionó en "Instalación Shibboleth SP":https://proyectos.seciu.edu.uy/redmine/projects/idp-pub/wiki/SPInstall , incluyendo el mapeo de atributos del IdP de UdelaR.
4 1
5 1
Esta guía se realiza en el host <mihost-ejemplo.edu.uy>, se debe ajustar el nombre al que corresponda.
6 1
7 1
h3. 1. Instalaciones necesarias
8 1
9 1
Se debe instalar Python 2.7 junto con el pip y el módulo mod_wsgi necesario para la comunicación entre la aplicación Python y el Apache.
10 1
11 1
<pre>
12 1
apt-get update
13 1
apt-get install python-pip libapache2-mod-wsgi
14 1
</pre>
15 1
16 1
h3. 2. Configurar protección en Apache
17 1
18 1
Para configurar Apache para que proteja los prefijos /secure se debe agregar la siguiente directiva al VirtualHost correspondiente:
19 1
20 1
<pre> <code class="xml">
21 1
<Location /secure>
22 1
	AuthType shibboleth
23 1
	ShibRequestSetting requireSession 1
24 1
	require shib-session
25 1
</Location>
26 1
</code> </pre>
27 1
28 1
h3. 3. Crear una aplicación Python WSGI básica
29 1
30 1
En /var/www/wsgi-scripts crear el archivo test.wsgi con el siguiente contenido:
31 1
32 1
<pre>
33 1
def application(environ, start_response):
34 1
    status = '200 OK'
35 1
    output = b'Hola ' + str(environ['udelarPersonNombre1']) + ', tu correo es: ' + str(environ['mail'])
36 1
37 1
    response_headers = [('Content-type', 'text/plain'),
38 1
	                ('Content-Length', str(len(output)))]
39 1
    start_response(status, response_headers)
40 1
41 1
    return [output]
42 1
</pre>
43 1
44 1
h3. 4. Alias para la aplicación
45 1
46 1
En el VirtualHost de Apache se debe mapear el alias para la aplicación WSGI indicando la siguiente directiva:
47 1
48 1
<pre> <code class="xml">
49 1
WSGIScriptAlias /secure/test /var/www/wsgi-scripts/test.wsgi
50 1
</code> </pre>
51 1
52 1
??############## AL PARECER ESTO NO ES NECESARIO ###############??
53 1
Además se debe permitir el acceso al archivo WSGI de la aplicación mediante la siguiente directiva:
54 1
<pre> <code class="xml">
55 1
<Directory /var/www/wsgi-scripts>
56 1
	<Files test.wsgi>
57 1
		Require all granted
58 1
	</Files>
59 1
</Directory>
60 1
</code> </pre>
61 1
??################## FIN NO ES NECESARIO ###################??
62 1
63 1
Luego de realizados los cambios se debe reiniciar el Apache mediante
64 1
<pre>
65 1
service apache2 restart
66 1
</pre>
67 1
68 1
Hasta este punto el módulo WSGI estará corriendo de forma embebida en el proceso de Apache.
69 1
70 1
h3. 5. Cambiando a modo Daemon
71 1
72 1
Es recomendable utilizar el modo Daemon del módulo mod_wsgi en lugar del embebido, para esto se deben agregar las siguientes directivas en el VirtualHost:
73 1
74 1
<pre> <code class="xml">
75 1
WSGIDaemonProcess test python-home=/usr/bin/python python-path=/var/www/wsgi-scripts
76 1
WSGIProcessGroup test
77 1
</code> </pre>
78 1
79 1
La primer directiva toma un nombre arbitrario para el proceso. Luego se debe indicar el Python home donde Apache encontrará todos los componentes necesarios para que corra la aplicación. En caso de utilizar un ambiente virtual se debe indicar el directorio base del mismo. Por último, se debe indicar el directorio base de nuestro proyecto Python.
80 1
81 1
La segunda directiva especifica el grupo del proceso, esta debe apuntar al mismo nombre que fue seleccionado en WSGIDaemonProcess.
82 1
83 1
Nuevamente, se debe reiniciar el Apache mediante: 
84 1
<pre>
85 1
service apache2 restart
86 1
</pre>
87 1
88 1
h3. 6. Visualización
89 1
90 1
Finalmente, se debe acceder a <mihost-ejemplo.edu.uy>/secure/test para visualizar la respuesta de la aplicación en el navegador. 
91 1
92 1
h3. Referencias
93 1
94 1
http://modwsgi.readthedocs.io/en/develop/user-guides/quick-configuration-guide.html
95 1
https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-debian-8