summaryrefslogtreecommitdiffstats
path: root/documentation/exploitation-idp-authentic.md
blob: 387b0ddb9ce37e34e25786c063bd772d0d927167 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
% Gestion d'identités PSL -- Exploitation IdP Authentic
% Entr'ouvert SCOP -- http://www.entrouvert.com


Arrêt et démarrage
==================

Authentic est démarré lors du boot de la machine et arrêté lors d'un
_shutdown_.  En dehors de ces moments, les commandes suivantes sont
disponibles:

* `service authentic2 status` : état du service
* `service authentic2 stop` : arrêt du service
* `service authentic2 start` : démarrage du service
* `service authentic2 restart` : arrêt puis redémarrage du service


Configuration
=============

Intégration à la fédération
---------------------------

Le choix de la fédération dans laquelle enregistrer l'IdP est fait dans le
fichier `/etc/authentic2/supann.conf` (se référer au manuel d'installation pour
plus d'information).

**Une mise à jour des meta-données de la fédération est effectuée chaque heure,
à XXh30**, voir `/etc/cron.d/authentic2-supann`.

Cela signifie que l'ensemble de la configuration de tous les services
(fournisseurs SAML) est faite dans les fichiers XML diffusés par la fédération
(meta-données et filtre d'attributs). Si une modification locale de
configuration est effectuée dans Authentic, elle sera écrasée par la mise à
jour suivante.

Mise à jour forcée des données de la fédération
-----------------------------------------------

Lors de l'installation d'une nouvelle ressource dans la fédération, il peut
être utile de mettre à jour aussitôt les méta-données au niveau de l'IdP sans
attendre une heure. Pour cela, utiliser la commande suivante :

~~~
# su -s /bin/sh -c /usr/lib/authentic2-supann/update-renater-meta.sh authentic
~~~

Explication : cette commande lance le script
`/usr/lib/authentic2-supann/update-renater-meta.sh` en tant qu'utilisateur
`authentic`. Il s'agit de la commande qui est lancée chaque heure par *cron*,
comme indiqué dans `/etc/cron.d/authentic2-supann`.


Charte graphique
================

Gabarits HTML, généralités
--------------------------

Pour définir la charte graphique du site, il faut créer des _templates_,
c'est-à-dire des gabaris ou modèles de pages qui seront utilisés par Authentic
pour construire les pages HTML.

Ces fichiers sont gérés par le moteur de rendu de Django. Pour savoir les
utiliser, il faut connaitre leur langage de programmation, documenté ici :
[https://docs.djangoproject.com/fr/1.7/topics/templates/](https://docs.djangoproject.com/fr/1.7/topics/templates/)

Les gabarits par défaut sont installés dans le répertoire
`/usr/share/pyshared/authentic2/templates/`. Ils ne doivent pas être modifiés,
mais peuvent être replacés/surchargés.

Pour surcharger/remplacer un des gabarits par défaut, il faut créer un fichier
avec le même nom, et dans le même sous-répertoire, à l'intérieur de
`/var/lib/authentic2/templates/`.

Par exemple s'il faut surcharger
`/usr/share/pyshared/authentic2/templates/authentic2/base.html` alors il faut
créer un fichier `/var/lib/authentic2/templates/authentic2/base.html`.

Gabarit général : base.html
---------------------------

Un **gabarit de base** défini le style général du site, il est la base de
toutes les autres pages. Il est écrit sur
`/usr/share/pyshared/authentic2/templates/authentic2/base.html`.

**Pour modifier le style général du site**, il suffit de partir de ce fichier
`base.html`, donc d'abord en faire une copie de travail :

~~~
# cp /usr/share/pyshared/authentic2/templates/authentic2/base.html \
                /var/lib/authentic2/templates/authentic2/base.html
# chmod 644 /var/lib/authentic2/templates/authentic2/base.html
~~~

Puis travailler sur le fichier obtenu
`/var/lib/authentic2/templates/authentic2/base.html`

Les modifications opérées sur le gabarit sont immédiatement visibles sur le
site. Cependant il se peut que différents systèmes de _cache_ interviennent,
auquel cas il peut être plus rapide de redémarrer Authentic (`service
authentic2 restart`).

Fichiers statiques (images, css, js)
------------------------------------

Les garabits HTML peuvent faire appel à des fichiers statiques, avec deux
syntaxes possibles :

~~~
    <link rel="stylesheet" href="{{STATIC_URL }}psl/css/style.css" />
~~~

ou la syntaxe plus actuelle :

~~~
    {% load staticfiles %}  <!-- au tout début du fichier HTML -->
    ...
    <img src="{% static "psl/img/logo.png" %}">
~~~

Le fichier correspondant doit être présent dans le répertoire `/var/lib/authentic2/static/`,
c'est à dire avec les deux exemples ci-dessus :

* `/var/lib/authentic2/static/psl/css/style.css`
* `/var/lib/authentic2/static/psl/img/logo.png`

Une fois les fichiers copiés dans ces répertoires, il faut utiliser l'outil
de déploiement des fichiers statiques de Django pour qu'il les place dans
un répertoire géré par le serveur Web (Apache ici). Pour cela, il suffit
de relancer l'IdP, son démarrage intègre le déploiement des _statics_:

> `# service authentic2 restart`


Pour en savoir plus, lire la documentation de référence sur la gestion des
fichiers statiques par un logiciel Django :
[https://docs.djangoproject.com/en/1.7/howto/static-files/](https://docs.djangoproject.com/en/1.7/howto/static-files/)


Interfaces de gestion
=====================

Interface d'administration
--------------------------

L'intégration à la fédération Renater «fixe» la configuration de l'IdP. Il peut
cependant être parfois utile d'aller vérifier que la configuration est
correcte. Pour cela, se rendre sur:

> `https://idp.exemple.fr/admin/`

et se connecter avec un compte administrateur, par exemple l'identifiant
`admin` et le mot de passe choisi lors du `newdb` sur le serveur LDAP.

Attention : cette interface est une vue quasi directe de la configuration des
services et utilisateurs. Il ne faut pas modifier ces configurations.
L'interface d'administration est activée uniquement à des fins de vérification
et/ou déboguage.

Attention : l'intégration à la fédération remets la configuration de chaque
service à zéro, chaque heure -- par exemple les réglements d'attributs.

Interface simplifiée
--------------------

Une interface de gestion simplifiée est également disponible à l'adresse :

> `https://idp.exemple.fr/manage/`

Ici encore cette interface n'est présente qu'à des fins de vérification. Elle
est prévue pour une instance d'Authentic qui gère elle-même ses utilisateurs et
ses services, ce qui n'est pas le cas ici : les utilisateurs sont gérés dans
l'annuaire LDAP, le services sont configurés via les données de la fédération.

Données à sauvegarder
=====================

Configuration :

* `/etc` complet
* sinon, au moins `/etc/authentic2/`
* sinon, au moins la bi-clé `/etc/authentic2/key.pem` et `/etc/authentic2/cert.pem`
* `/var/lib/authentic2` complet, surtout si les gabarits ont été adaptés
  (sous-répertoire `templates` et `static`)

Données (base PostgreSQL) :

Il est inutile de dupliquer la base de données, elle n'est utilisée par
Authentic que pour enregistrer les configurations des services providers,
celles-ci étant obtenues via la fédération.


Mise à jour du logiciel
=======================

La mise à jour du système doit être effectuée aussi fréquement que possible,
typiquement une fois par jour (mises à jour de sécurité Debian). Entr'ouvert
informera aussi le projet en cas de mise à jour urgente de sécurité à
effectuer sur les composants mis en jeu par la solution.

La procédure de mise à jour est la suivante, en **deux étapes**.

Mise à jour de la liste des logiciels disponibles sur les dépôts de la solution
(Debian et Entr'ouvert):

> `# apt-get update`

Mise à jour des paquets qui ont une version plus récente que celle installée :

> `# apt-get upgrade`

Il est possible que des versions futures de la solution nécessitent
l'installation de nouveaux paquets, dans ce cas Entr'ouvert mettra à jour les
dépendances de ses paquets et il faudra utiliser la commande suivante :

> `# apt-get dist-upgrade`.


Débogage
========

Journaux (logs)
---------------

Authentic est, techniquement, un processus géré par `gunicorn`, celui-ci
enregistre ses logs dans:

* `/var/log/authentic2/gunicorn-access.log`: accès au service
* `/var/log/authentic2/gunicorn-error.log`: autres messages qui, malgré le nom
  du fichier, ne sont pas que les erreurs mais aussi des informations sur le
  démarrage et l'arrêt, par exemple.

Apache enregistre également les logs d'accès au service via HTTPS, dans
deux fichiers :

* `/var/log/apache2/authentic2-supann_access.log` : logs d'accès
* `/var/log/apache2/authentic2-supann_error.log` : logs d'erreurs

Echanges SAML
-------------

Authentic est un IdP qui utilise le protocole SAML 2.0 pour ses échanges sur la
fédération Renater. La majeure partie du débogage se passe en général via
l'écoute des échanges SAML 2.0 dans un navigateur client. Nous conseillons
l'utilisation du navigateur Firefox avec l'extension SAML tracer :
[https://addons.mozilla.org/fr/firefox/addon/saml-tracer/](https://addons.mozilla.org/fr/firefox/addon/saml-tracer/).

Mode DEBUG
----------

Si le déboguage doit se faire dans le logiciel lui-même, il est possible d'activer
le mode `DEBUG` dans `/etc/authentic2/supann.conf` :

~~~
# extrait de /etc/authentic2/supann.conf:
export DEBUG=1
~~~

puis relancer le service :

> `# service authentic2 restart`

De nombreuses informations de débogage sont alors présentes dans
`/var/log/syslog`, qui peuvent s'avérer importantes en cas de problème lourd.
Elles peuvent être demandées en cas d'appel au support de la solution.

Par ailleurs, en cas d'erreur (HTTP 400 ou 500), des messages d'erreur système
complets et détaillés (_traceback_) sont affichés sur le navigateur.

Attention : **ne jamais fonctionner en production avec le mode DEBUG**. En
effet, dans ce mode, le service peut afficher des traces d'erreurs qui
divulguent des informations sensibles sur le navigateur des utilisateurs.

-----

Historique du document
======================

> 20150611 tnoel -- restructuration, adaptations à Authentic 2.1.20+

> 20150217 tnoel -- première version