Dynacase-openid

Introduction

Dynacase-openid est un module d'authentification Dynacase-platform. Il permet de se connecter à Dynacase-platform en utilisant un système OpenID.

Configuration

Pré-requis

L'utilisation du module d'authentification freedom-openid nécessite l'installation de php-curl.

Si vous ne l'avez pas, un message d'erreur vous en informera à l'installation du module:

[...]
Error: process 'Check php function curl_exec' returned with error: Checking if the PHP function 'curl_exec' exists
(R)etry, (c)continue or (a)bort ? [R/c/a]

Dans ce cas, voici la marche à suivre :

$ sudo aptitude install php5-curl

Authentification

Dynacase-openid étant un module d'authentification de Dynacase-platform, il faut indiquer à Dynacase-platform que l'on veut l'utiliser. Pour cela il faut modifier le fichier `dbaccess.php' comme ceci:

$ vi context/default/dbaccess.php
[...]

$freedom_authtype = 'openid';

$freedom_authtypeparams = array('openid' => array('cookie' => 'freedom_auth',
                                                  'username' => 'auth_user',
                                                  'password' => 'auth_pass',
                                                  'htmlauthurl'=> 'guest.php?sole=A&app=AUTHENT&action=LOGINFORM',
                                                  'authurl' => 'guest.php?sole=A&app=OPENID&action=LOGIN_OPENID',
                                                  'providers' => array(),
                                                  ),
                               );
                                                             

Les paramètres associés à openid sont:

Paramètre Description
cookie Le nom du cookie servant a référencer le numéro de la session (utiliser `freedom_auth').
authurl Url de la page d'accueil d'openid (utiliser `guest.php?sole=A&app=OPENID&action=LOGIN_OPENID').
providers Liste des providers affichés dans l'aide à la saisie à la connexion.
username Sert à la connexion en admin (utiliser `auth_user').
password Sert à la connexion en admin (utiliser `auth_pass').
htmlauthurl Sert à la connexion en admin (utiliser `guest.php?sole=A&app=AUTHENT&action=LOGINFORM').

Les paramètres `username', `password' et `htmlauthurl' sont utilisés pour la connexion en “html” avec Dynacase-platform. Ces paramètres doivent être égaux aux paramètres `username', `password' et `authurl' de l'identificateur `html' de Dynacase-platform. Si vous ne connaissez pas les paramètres de l'identificateur `html' mettez juste les paramètres comme décrit ci-dessus.

Le paramètre `providers' contiendra toutes les données nécessaires pour créer l'aide à la saisie de connexion. Si vous désirez l'utiliser vous devez absolument remplir tous les attributs. Sinon, laissez le paramètre `providers' vide.

Voici un exemple du fichier dbaccess.php avec deux déclarations de provider openid (myopenid et google)

$ vi context/default/dbaccess.php
[...]

$freedom_authtype = 'openid';

$freedom_authtypeparams = array('openid' => array('cookie' => 'freedom_auth',
                                                  'username' => 'auth_user',
                                                  'password' => 'auth_pass',
                                                  'htmlauthurl'=> 'guest.php?sole=A&app=AUTHENT&action=LOGINFORM',
                                                  'authurl' => 'guest.php?sole=A&app=OPENID&action=LOGIN_OPENID',
                                                  'providers' => array('myopenid'  => 'longname:"myOpenID", 
                                                                                       shortname: "myOpenID",
                                                                                       url_prefix: "http://", 
                                                                                       url_suffix: ".myopenid.com/", 
                                                                                       icon: "myopenid.ico", 
                                                                                       website: "https://www.myopenid.com/", 
                                                                                       openid1: true,
                                                                                       version: 1',
                                                                       'google'  =>   'longname: "GoogleID", 
                                                                                       shortname: "GoogleID",
                                                                                       url_prefix: "", 
                                                                                       url_suffix: "", 
                                                                                       icon: "", 
                                                                                       website: "https://www.google.com/", 
                                                                                       openid1: false, 
                                                                                       version: 2',),
                                                );
                               );

Les paramètres du provider openid sont:

Paramètre Description
longname Le nom complet du provider
shortname Le nom du provider qui sera afficher dans l'aide à la saisie
url_prefix Partie de l'url qui apparaitra avant le nom d'utilisateur (paramètre obligatoire si openid1 = true.)
url_suffix Partie de l'url qui apparaitra après le nom d'utilisateur (paramètre obligatoire si openid1 = true.)
icon Image associé au provider qui apparaitra sur le bouton et à coté du nom du provider (taille max = 16*16 px).
website Url du provider (paramètre obligatoire si openid1 = false)
openid1 Booléen. Si openid1 = true alors il faudra rentrer un nom d'utilisateur.
version 1 ou 2 : version d'openid utilisé par le provider (La version par défault est la 1)

Vous trouverez ci-après une liste des openid provider. Les providers du premier encadré utilise la version 2 d'openid, ceux du second la version 1. Si il y a inscrit username dans la description c'est que l'attribut openid1 doit être à true. S'ils vous demandent de “cliquer sur le bouton se connecter avec …”, l'attribut openid1 devra être à false.

Pour les icônes, elles devront se situer dans le répertoire Images du module OPENID (normalement situé dans le répertoire OPENID à la racine de votre installation de Dynacase-platform).

Provider Dynacase-platform et création d'utilisateur

Dynacase-openid permet la création d'utilisateur à la volée dans Dynacase-platform à partir de vos informations openid (si elles sont renseignées). Pour cela, il faut déclarer le provider dans le fichier dbaccess.php :

$ vi context/default/dbaccess.php
[...]

$freedom_authprovider = 'openid';

$freedom_providers = array('openid'  => array('allowAutoFreedomUserCreation' => 'yes',
					      'dGroup'  => 'GDEFAULT',
					     ),
                          );

Les paramètres du freedom-provider openid:

Paramètre Description
allowAutoFreedomUserCreation Option permettant la création d'utilisateur à la volée. (utiliser `yes')
dGroup Groupe dans lequel l'utilisateur sera mis à la création (contactez votre administrateur pour plus d'information).

Fonctionnement

Schéma de fonctionnement

  • User Agent = le navigateur Web de l'utilisateur.
  • Web Server = le serveur Web qui héberge un ensemble d'applications (Freedom, appX, appY, etc.) qui utilisent le mécanisme openid pour l'authentification.
  • Yadis Server = Le server validant les providers openid
  • OpenID Server = Le site du provider openid correspondant.
  1. Le navigateur envoi une requête de connexion.
  2. Vérification qu'il existe bien un provider openid pour cette identité.
  3. Redirection vers le site du provider pour connexion.
  4. Redirection du provider vers le client
  5. Vérification des données récupérées, création de l'utilisateur et/ou connexion à Dynacase-platform.

Dépannage

Il peut arriver que votre nom d'utilisateur soit un peu étrange, et que les informations de votre compte sur votre nom et prénom ne soit pas rempli. Cela est du au fait que nous n'avons pas réussi à récupérer les données de votre compte openid. Plusieurs raison possible à cela: un bug dans la redirection, le provider openid qui ne gère pas l'envoi des données ou tout simplement, ces données n'étaient pas renseignées sur votre compte openid.

Pour corriger le nom et prénom, vous pouvez le faire vous même depuis votre compte Dynacase-platform. Pour avoir un login valide, il faut au moins que vous ayez renseigné l'adresse email de votre compte openid (pour les providers utilisant la version 2 de openid).

Pour vous connectez en admin, ou si vous rencontrez des difficultés à la connexion avec openid, vous pouvez toujours changer de mode de connexion en cliquant sur “admin connexion” de l'écran de login. Vous serez alors rediriger sur l'identificateur par défaut de Dynacase-platform(html) et pourrez vous connecter comme d'habitude.

Certains openid providers demandent des règles plus spécifique pour fonctionner correctement (google par exemple). Renseignez vous auprès des sites officiels de ces providers pour connaitre ces règles en question. Les informations à changer se trouveront dans le fichier openid.class.php

Références

Si vous avez des questions sur openid, vous trouverez beaucoup d'information sur le site officiel ou le site d'openid france.

Comparaison de différent provider openid avec pas mal d'information sur eux

Liste de tous les providers openid officiellement recensé

Et pour finir wikipédia qui est rempli d'information sur openid.

modules/freedom-openid.txt · Dernière modification: 27/12/2010 09:37 par nicolas.thing