Jean-Marie Thia
WebSSO entre Internet Information Server et JA-SIG Central Authentication Service
Un module http pour déléguer l'authentification dans une application asp.net à un serveur d'authentification centralisé JA-SIG Central Authentication Service (CAS)
Par Jean-Marie Thia publié le 04/11/2007 à 23:08
 
Un utilisateur ouvre une session dans le domaine Active Directory. Une fois connecté, il accède aux différents partages réseaux auxquels il a droit sur des serveurs différents sans se réauthentifier. Il peut même accéder à des sites web IIS ou des applications web asp.net qui utilisent l'authentification intégrée windows. C'est que l'on appelle le Single Sign On (SSO) ou authentification unique en français. L'utilisateur s'est authentifié une seule fois et son identité est transmise automatiquement aux différents serveurs et aux différentes applications sans que celui-ci ne s'en rende compte.
C'est extrêmement simple pour l'utilisateur, peut être magique pour un administrateur système. Dans le monde Microsoft le magicien s'appelle Active Directory (AD), pour les autres Kerberos. D'ailleurs AD peut être considéré comme la réunion de Kerberos et d'un annuaire accessible via le protocole LDAP.
En règle générale, une solution de SSO va un peu plus loin, il permet aussi le transfert de l'authentification à diverses, voire toutes, applications. Pour les applications qui ont leurs propres couples compte, mot de passe, il simule l'authentification en utilisant ce couple spécifique, comme peut le faire un navigateur web lorsqu'il enregistre le mot de passe. Ceci implique la notion de gestion et de sécurisation d'un portefeuille de comptes avec les mots de passe associés. Je ne connais que des solutions commerciales (evidian, illex, CA, etc.) qui permettent cela. En outre elles proposent aussi les briques nécessaires à une gestion des identités ou même mieux une gestion des identités et des accès (IAM : Identity and Access Management).
Si maintenant j'ai plusieurs application web, et tant qu'à faire, sur des machines différentes, et encore une couche, avec des systèmes d'exploitations différents. L'utilisateur devra s'authentifier pour chaque application. Et dans bien des cas chaque application aura sa propre base d'utilisateurs et de mots de passe. Je vous laisse imaginer la gymnastique pour synchroniser les mots de passe et/ou le nombre de « post-it » sur les écrans.
C'est l'objectif du webSSO, que je traduis par authentification unique pour le web. Le principe est d'avoir un système qui permet au voyageur cybernétique de s'authentifier une seule fois et qui transmet ensuite son identité aux différentes applications qu'il utilise uniquement dans un contexte web en utilisant uniquement les protocoles du web : http et https.
Bien entendu cette problématique adresse le monde de l'entreprise qui dispose d'applications web dans un intranet pour limiter la prolifération de comptes et de mots de passe. Pour que cela soit fonctionnel, il faut que les applications utilisent toutes le même identifiant et délèguent l'authentification au serveur d'authentification.
Il existe plusieurs solutions open source comme lemonldap, webauth qui font du webSSO. Mais nous utilisons JA-SIG CAS comme serveur d'authentification web.
Comme son nom l'indique JA-SIG CAS est une application web écrite en java qui permet de faire du webSSO suivant un principe qui est proche de Kerberos en utilisant un cookie de session. Le principe principal du protocole d'authentification est le suivant :
 
Les séquences du protocole d'authentification

Les séquences du protocole d'authentification

 
  1. Un internaute accède à une ressource web.
  2. Le navigateur est redirigé vers le serveur cas
  3. Le serveur envoie le formulaire d'authentification
  4. Réponse de l'internaute.
  5. Le serveur vérifie le couple compte / mot de passe.
  6. Le serveur CAS crée un cookie de session (TGC) et redirige le navigateur vers la ressource web avec un Service Ticket (ST) à utilisation unique
  7. L'application valide le ST en contactant directement le serveur cas qui retourne l'identifiant de la personne.
  8. L'internaute accède à la ressource demandée
Pour une information plus détaillée sur le protocole le mieux est de consulter le site du JA-SIG qui est en anglais. Le site du consortium Esup recèle aussi quelques pages sur le sujet en français. CAS est même cité dans la version française de wikipédia.
Maintenant il suffit de s'authentifier à la première connexion sur l'application web à l'aide du formulaire qui ressemble à l'image suivante :
 
Formulaire d'authentification CAS

Formulaire d'authentification CAS

 
Lors du passage à une autre application, l'utilisateur est automatiquement authentifié par les redirections du navigateur. Bien entendu la session CAS est perdue quand le navigateur se ferme.

 Commentaire - WebSSO entre Internet Information Server et JA-SIG Central Authentication Service 

Discussion démarée par lecstephane le 06/11/2007 à 03:15 , 1 commentaire(s).

 Dernières Publications      

Windows Media Center et WCF : développez votre maison intelligente
  Le développement d'applications pour Windows Media Center est facilité avec l'arrivée du SDK 5.3. Même si l'on sent un modèle objet bien lourd derrière, il devient plus facile d'exposer les fonctionnalités de WMC sous la forme de services WCF.
par Frédéric Colin posté le 23/06/2008 à 08:04, lu 295 fois, #0
Notions avancées avec Biztalk Server 2006 R2
  Utilisation des notions d'interchange, corrélation et convoi avec BizTalk Server 2006 R2
par Kader Yildirim posté le 09/06/2008 à 08:04, lu 288 fois, #0
Lucene Persistence Engine pour Evaluant Universal Storage Services
  Suite à l'article de Laurent Kempé, voici un moteur de stockage pour EUSS permettant l'indexation d'entités métier avec Lucene.
par Nicolas Penin posté le 01/06/2008 à 23:38, lu 510 fois, #1
Tags: C#, Linq
XMLA Trivia : Découverte du XMLA
  Le XMLA (XML for Analysis) est un langage normalisé par plusieurs éditeurs BI pour simplifier l'accès aux données aux cubes et aux métadonnées des bases multidimensionnelles.
par Renaud Harduin posté le 25/05/2008 à 11:57, lu 523 fois, #0
Exploiter les données CSV via Linq en toute simplicité
  A partir du requêteur dynamique fourni en exemple avec Visual Studio 2008, nous allons essayer de remplir les propriétés d'un ensemble d'objets à partir des données d'un fichier CSV. Nous enrichirons aussi le parseur de nos propres fonctions.
par Frédéric Mélantois posté le 17/05/2008 à 11:41, lu 1713 fois, #0
Comment manipuler simplement le contenu d'un fichier WordML ?
  Manipulations autour du format WordML
par Fabien Reinle posté le 14/05/2008 à 23:55, lu 781 fois, #0
Polymorphisme et contrats de données WCF
  WCF aborde les types polymorphes du point de vue de la sérialisation. En effet, la connaissance du type réel potentiel est rendue nécessaire dès la description du contrat de données. Une fois n'est pas coutume, j'ai réalisé l'exemple en VB.NET.
par Frédéric Colin posté le 14/05/2008 à 08:40, lu 1881 fois, #2
A la découverte de BizTalk Server 2006 3/3
  Développer un assembleur pour BizTalk Server 2006 R2
par Kader Yildirim posté le 06/05/2008 à 13:20, lu 511 fois, #0

 Dernières Actualités      

Deep Earth – Une belle utilisation de Virtual Earth et de Silverlight Deep Zoom
  Ce projet très intéressant est disponible sur Codeplex et vous pouvez voir une démo sur la page suivante . Bien entendu comme touts les projets sur Codeplex vous avez accès aux sources....
Tags: Silverlight
Sortie de JetBrains ReSharper 4.0 en version finale, l’outil ultime pour Visual Studio
  Après plusieurs mois de Early Access Program (EAP) , JetBrains met enfin à disposition la version finale de son outil ReSharper 4.0 . Cette nouvelle version est disponible pour Visual Studio 2005 &...
Tags: Visual Studio 2008, Visual Studio 2005, Outils
BoutDuTunnel v1.4
  BoutDuTunnel est un petit logiciel de tunneling réseau écrit en C#. Il permet par exemple d’accéder aux services ftp/smtp/pop/telnet/nntp/… sur des réseaux qui n’autorisent...
BI Framework & sample sur CodePlex
  Après plusieurs demandes, je me suis décidé à déposer l'ensemble des sources et du BI Framework MS proposés dans mes articles sur codeplex : http://www.codeplex.com/BILAB Je le mettrais à jour au fil des...
Injection de code et API de profiling .NET
  Si vous êtes intéressés par la sécurité du Framework, par le reverse engineering et la manipulation/injection de code .NET et les packers, alors jetez un coup d’œil...
NDepend pour l'analyse statique de code .NET
  Pour ceux qui ne connaissent pas NDepend , il s’agit d’un outil d’analyse statique de code .NET qui permet de remonter des informations à toute une équipe de développement. NDepend aide à travailler sur...
Tags: Outils