Wiki » Historique » Version 1
Gaston TJEBBES, 01/06/2010 16:04
1 | 1 | Gaston TJEBBES | h1. Cassification d'une application sur Scribe |
---|---|---|---|
2 | 1 | Gaston TJEBBES | |
3 | 1 | Gaston TJEBBES | Scribe est fourni avec un serveur d'authentification SSO compatible CAS. Cette page a pour objectif de guider les utilisateurs (administrateurs) de Scribe à utiliser le mode SSO dans leurs applications web php. Les indications fournies permettent de garantir la compatibilité avec les version 0.5 et 1.0.1 de la librairie php-cas sur laquelle se base le paquet php5-cas. |
4 | 1 | Gaston TJEBBES | |
5 | 1 | Gaston TJEBBES | h2. Cas n°1 : authentification simple |
6 | 1 | Gaston TJEBBES | |
7 | 1 | Gaston TJEBBES | Ici, seule l'authentification de l'utilisateur est nécessaire (l'application ne requière aucune autre information). La cassification de l'accès à une page reste très simple (fonctionnement du Cas classique). On utilisera la configuration centralisée située dans /usr/share/php/configCAS/cas.inc.php. |
8 | 1 | Gaston TJEBBES | |
9 | 1 | Gaston TJEBBES | h3. Initialisation du client |
10 | 1 | Gaston TJEBBES | |
11 | 1 | Gaston TJEBBES | <pre> |
12 | 1 | Gaston TJEBBES | <?php |
13 | 1 | Gaston TJEBBES | require_once('CAS/CAS.php'); |
14 | 1 | Gaston TJEBBES | require_once('configCAS/cas.inc.php'); |
15 | 1 | Gaston TJEBBES | phpCAS::client(__CAS_VERSION, __CAS_SERVER, __CAS_PORT, __CAS_URL, false); |
16 | 1 | Gaston TJEBBES | </pre> |
17 | 1 | Gaston TJEBBES | Les variables __CAS... sont configurées dans le fichier 'cas.inc.php'. La variable à false signifie qu'une session php a déjà été démarrée avant l'appel au client. |
18 | 1 | Gaston TJEBBES | |
19 | 1 | Gaston TJEBBES | h3. Désactivation du contrôle de certificats |
20 | 1 | Gaston TJEBBES | |
21 | 1 | Gaston TJEBBES | En attendant une méthode stable de gestion des certificats, nous utiliserons la méthode setNoCasServerValidation : |
22 | 1 | Gaston TJEBBES | <pre> |
23 | 1 | Gaston TJEBBES | if (method_exists(phpCAS, 'setNoCasServerValidation')){ |
24 | 1 | Gaston TJEBBES | phpCAS::setNoCasServerValidation(); |
25 | 1 | Gaston TJEBBES | } |
26 | 1 | Gaston TJEBBES | </pre> |
27 | 1 | Gaston TJEBBES | |
28 | 1 | Gaston TJEBBES | L'utilisation de la fonction method_exists permet d'assuere la compatibilité avec les différentes version du client phpCas (paquet php5-cas) |
29 | 1 | Gaston TJEBBES | |
30 | 1 | Gaston TJEBBES | h3. Authentification |
31 | 1 | Gaston TJEBBES | |
32 | 1 | Gaston TJEBBES | <pre> |
33 | 1 | Gaston TJEBBES | phpCAS::forceAuthentication(); |
34 | 1 | Gaston TJEBBES | </pre> |
35 | 1 | Gaston TJEBBES | La redirection vers le serveur CAS est effectuée si nécessaire, par la suite le code est éxécuté dans un contexte authentifié. |
36 | 1 | Gaston TJEBBES | |
37 | 1 | Gaston TJEBBES | h3. Déconnexion |
38 | 1 | Gaston TJEBBES | |
39 | 1 | Gaston TJEBBES | <pre> |
40 | 1 | Gaston TJEBBES | if (isset($_REQUEST['logout'])) { |
41 | 1 | Gaston TJEBBES | if (method_exists(phpCAS, 'logoutWithUrl')){ |
42 | 1 | Gaston TJEBBES | phpCAS::logoutWithUrl($_SERVER["SCRIPT_URI"]); |
43 | 1 | Gaston TJEBBES | }else{ |
44 | 1 | Gaston TJEBBES | phpCAS::logout($_SERVER["SCRIPT_URI"]); |
45 | 1 | Gaston TJEBBES | } |
46 | 1 | Gaston TJEBBES | } |
47 | 1 | Gaston TJEBBES | </pre> |
48 | 1 | Gaston TJEBBES | |
49 | 1 | Gaston TJEBBES | La variable de redirection ici : $_SERVER["SCRIPT_URI"] peut être remplacée par la page de logout prévue au départ dans l'application. |
50 | 1 | Gaston TJEBBES | |
51 | 1 | Gaston TJEBBES | h3. Déconnexion centralisée |
52 | 1 | Gaston TJEBBES | |
53 | 1 | Gaston TJEBBES | <pre> |
54 | 1 | Gaston TJEBBES | if (__CAS_LOGOUT){ |
55 | 1 | Gaston TJEBBES | if (method_exists(phpCAS, 'logoutRequests')){ |
56 | 1 | Gaston TJEBBES | phpCAS::logoutRequests(); |
57 | 1 | Gaston TJEBBES | } |
58 | 1 | Gaston TJEBBES | } |
59 | 1 | Gaston TJEBBES | </pre> |
60 | 1 | Gaston TJEBBES | La variable __CAS_LOGOUT est configuré dans le fichier configCAS/cas.inc.php. |
61 | 1 | Gaston TJEBBES | A noter : cette fonction fournit par le client CAS d'origine a un fonctionnement très limité, elle ne fonctionne pas lorsque le nom de la session est forcé par l'application cassifié (appel à session_name(nomdelasession)). |
62 | 1 | Gaston TJEBBES | Dans ce cas, préféré l'utilisation de la librairie eolePhpCAS. |
63 | 1 | Gaston TJEBBES | |
64 | 1 | Gaston TJEBBES | h3. Forcer l'url de votre application auprès du serveur CAS |
65 | 1 | Gaston TJEBBES | |
66 | 1 | Gaston TJEBBES | Dans certains cas, par exemple : |
67 | 1 | Gaston TJEBBES | Accès au travers d'un reverseproxy d'une application http par le protocole https et port 80 fermé sur le reverseproxy. |
68 | 1 | Gaston TJEBBES | |
69 | 1 | Gaston TJEBBES | Il peut être utile de forcer l'url de l'application. |
70 | 1 | Gaston TJEBBES | <pre> |
71 | 1 | Gaston TJEBBES | phpCAS::setFixedServiceURL("https://adressedemonapplication"); |
72 | 1 | Gaston TJEBBES | </pre> |
73 | 1 | Gaston TJEBBES | Il est possible de construire l'url depuis les variables php ($_SERVER par exemple). |
74 | 1 | Gaston TJEBBES | |
75 | 1 | Gaston TJEBBES | |
76 | 1 | Gaston TJEBBES | h3. Récupération du login de l'utilisateur |
77 | 1 | Gaston TJEBBES | |
78 | 1 | Gaston TJEBBES | <pre> |
79 | 1 | Gaston TJEBBES | phpCAS::getUser(); |
80 | 1 | Gaston TJEBBES | </pre> |
81 | 1 | Gaston TJEBBES | |
82 | 1 | Gaston TJEBBES | h3. Le tout dans des fonctions |
83 | 1 | Gaston TJEBBES | |
84 | 1 | Gaston TJEBBES | <pre> |
85 | 1 | Gaston TJEBBES | <?php |
86 | 1 | Gaston TJEBBES | function cas_auth(){ |
87 | 1 | Gaston TJEBBES | require_once('CAS/CAS.php'); |
88 | 1 | Gaston TJEBBES | require_once('configCAS/cas.inc.php'); |
89 | 1 | Gaston TJEBBES | phpCAS::client(__CAS_VERSION, __CAS_SERVER, __CAS_PORT, __CAS_URL, false); |
90 | 1 | Gaston TJEBBES | if (method_exists(phpCAS, 'setNoCasServerValidation')){ |
91 | 1 | Gaston TJEBBES | phpCAS::setNoCasServerValidation(); |
92 | 1 | Gaston TJEBBES | } |
93 | 1 | Gaston TJEBBES | if (__CAS_LOGOUT){ |
94 | 1 | Gaston TJEBBES | if (method_exists(phpCAS, 'logoutRequests')){ |
95 | 1 | Gaston TJEBBES | phpCAS::logoutRequests(); |
96 | 1 | Gaston TJEBBES | } |
97 | 1 | Gaston TJEBBES | } |
98 | 1 | Gaston TJEBBES | phpCAS::forceAuthentication(); |
99 | 1 | Gaston TJEBBES | } |
100 | 1 | Gaston TJEBBES | function cas_logout( |
101 | 1 | Gaston TJEBBES | require_once('CAS/CAS.php'); |
102 | 1 | Gaston TJEBBES | require_once('configCAS/cas.inc.php'); |
103 | 1 | Gaston TJEBBES | phpCAS::client(__CAS_VERSION, __CAS_SERVER, __CAS_PORT, __CAS_URL, false); |
104 | 1 | Gaston TJEBBES | if (method_exists(phpCAS, 'setNoCasServerValidation')){ |
105 | 1 | Gaston TJEBBES | phpCAS::setNoCasServerValidation(); |
106 | 1 | Gaston TJEBBES | } |
107 | 1 | Gaston TJEBBES | if (method_exists(phpCAS, 'logoutWithUrl')){ |
108 | 1 | Gaston TJEBBES | phpCAS::logoutWithUrl($_SERVER["SCRIPT_URI"]); |
109 | 1 | Gaston TJEBBES | }else{ |
110 | 1 | Gaston TJEBBES | phpCAS::logout($_SERVER["SCRIPT_URI"]); |
111 | 1 | Gaston TJEBBES | } |
112 | 1 | Gaston TJEBBES | } |
113 | 1 | Gaston TJEBBES | ?> |
114 | 1 | Gaston TJEBBES | </pre> |