Archive

Archive for August, 2008

krsync: Authentification Kerberos pour rsync

August 31st, 2008 No comments

Vous trouvez la gestion de l’authentification rsync un peu faible ? Si oui, vous n’êtes pas le seul, c’est pour cela que Fabrice Bacchella a écris un patch pour rsync permettant d’utiliser l’authentification kerberos. Ce patch et sa documentation sont disponibles sur ma miniforge (et oui j’en profite pour me faire un peu de pub au passage !)

Categories: Security, SSO, Sysadmin Tags: ,

IDM, EJBCA, SPML, et Groovy, ca y est !

August 26th, 2008 No comments

J’en rêvais, alors je l’ai fais ! Mon idée était de disposer d’un ensemble d’outils pour générer facilement des requêtes SPML, j’ai donc créer une petite bibliothèque Java, et écris quelques scripts groovy associés, en pratique cela donne :

import net.asyd.iam.spml.AddRequest
 
AddRequest request = new AddRequest()
 
request.init("http://localhost:8080/SPMLServer/openspml2")
request.createPsoId("easyspmlDemo")
request.addAttribute("emailAddress", "bbonfils@gmail.com")
request.proceed()
request.dumpResponse()

Comme vous pouvez le constater, cela deviens très simple. De plus, dans ma lancé, je me suis dis pourquoi ne pas créer une servlet recevant des requêtes SPML pour les traduires dans des WebServices EJBCA. C’est maintenant chose faite. Bien que je n’implémente actuellement que la méthode addRequest, cela me permet de provisionner des entités depuis un producteur SPML, comme par exemple Sun Identity Manager. La “traduction” entre SPML et la couche EJBCA se fais au travers d’un script groovy (et oui, encore du groovy, groovy c’est le bien !), de la manière suivante :

import java.util.HashMap
import net.asyd.iam.FinalAddEntity
import org.ejbca.core.protocol.ws.UserDataVOWS
 
public class FinalAddEntitySample implements FinalAddEntity {
 
    def id
    def attributes
    def buffer
    def ejbcaEntity
 
    public void init(String id, HashMap attributes, UserDataVOWS ejbcaEntity) {
        this.id = id
        this.attributes = attributes
        this.ejbcaEntity = ejbcaEntity
    }
 
    public void preprocess() {
        buffer = ",UID=" + id + ",OU=staff,O=asyd dot net,C=FR"
    }
 
    public String getSubjectDN() {
        return "CN=" + id + buffer
    }
 
    public boolean proceed() {
        ejbcaEntity.setUsername(id)
        ejbcaEntity.setEmail(attributes.get("emailAddress"))
        ejbcaEntity.setSubjectDN(getSubjectDN())
 
        ejbcaEntity.setCaName("DemoCA")
        ejbcaEntity.setCertificateProfileName("ENDUSER")
        ejbcaEntity.setEndEntityProfileName("EE_SPML_USER")
        ejbcaEntity.setTokenType("P12")
        ejbcaEntity.setSendNotification(true)
 
        return true
    }
}

Plus d’information disponible sur devel.asyd.net :

Actuellement le code est plutôt un POC que production ready, mais avec un peu de chance cela ne saurait tarder, et après tout ca permet déjà de faire des choses sympas !

Categories: IAM, PKI Tags: ,

OpenSSO : support de cours disponible

August 19th, 2008 No comments

J’avoue, sur ce coup-là Sun me surprend. Je viens de découvrir en effet qu’ils commencent à mettre à disposition leurs matériels de training concernant OpenSSO. Actuellement, seul le cours sur le déploiement est disponible, mais c’est déjà une très bonne chose !

Au programme :

  • Déploiement multi  instances
  • Failover des sessions
  • Installation d’un agent Web
  • Installation d’un agent J2EE

Un document de 128 pages ! Cela se passe ici.

Categories: SSO, Sysadmin Tags:

Présentation (rapide) de SPML

August 11th, 2008 1 comment

Et oui, encore un sigle (barbare ?) en *ML. Pour commencer, sa définition : Simple Provisioning Markup Language, plus concrètement il s’agit d’un standard OASIS basé sur XML décrivant des opérations d’approvisionnement (provisionning) comme son nom l’indique. En pratique, il est surtout très utilisé pour la gestion des identités, entre différents produits plus ou moins pas ouvert. Même si ce standard n’est (malheureusement) pas trop utilisé, ou du moins ses utilisations restent discrètes, il reste un des rares (seul à ma connaissance) standards pouvant traduire le cycle de vie d’une identité (création, modification, suppression, et également recherche), et avec une grande souplesse. Pour commencer, attardons nous sur les différentes opérations décrites par le schéma SPML :

  • addRequest (création d’une entité)
  • lookupRequest (recherche d’une entité à partir de son identifiant unique)
  • modifyRequest (modification d’une entité)
  • deleteRequest (suppression d’une entité)
  • searchRequest (recherche d’une entité à partir d’un attribut)

Remarquer que je parle bien d’entité, en effet, SPML ne décris pas de manière forte le contenu des opérations, on peut donc l’utiliser par exemple pour des identités, mais tout autre chose.

L’ensemble des opérations peuvent être appelées aussi bien dans un mode synchrone qu’en mode asynchrone (chaque requête doit être alors identifiée de manière unique par le client). Bref, assez de blablah, voici un exemple très simple (le plus simple en fait) de requête SPML :

<lookupRequest requestID='125'>
<psoID ID='asyd' />
</lookupRequest>

Je crois que cela se passe de commentaire, je fais une recherche en utilisant l’identifiant unique (ici de mon compte asyd, sur un Sun Identity Manager). Si IDM est bien configuré pour accepter les requêtes SPML (je ferais un petit post dans un avenir proche à ce sujet), le retour aura la forme suivante :

pour des raisons de lisibilité (merci wordpress) la réponse se trouve en pièce jointe

Comme on le voit, les attributs réels de l’utilisateur sont fournis en contenu du tag data, et les connaisseurs aurons reconnus l’utilisation de l’espace de nommage DSML, qui – pour faire court – est une représentation XML d’une entrée LDAP. Bref, pour ceux qui n’auraient pas suivis (en même temps ce n’est pas évident), le schéma SPML ne s’occupe pas de la représentation de l’attribut SPML data, comme le montre le schéma core.

En fait, seul l’attribut psoID (où PSO signifie Provisioning Service Objects) est défini par le schéma SPML, le reste n’étant lié qu’à la définition des opérations. Il permet de déterminer de manière unique une entité (dans notre cas une identité, donc l’accountId au niveau d’IDM).

Pour résumer : SPML est un standard OASIS (sous forme d’un schéma XML) d’approvisionnement, surtout utilisé pour la gestion d’identité, afin de faire communiquer entre elle différentes couches logiciels (brique métier de gestion d’identité, une PKI, etc.). Tout ceci en décrivant des opérations, mais en laissant à chacun le soin de représenter ses données. Cela à l’avantage d’être très souple, mais il reste donc la problématique du contenu (charge utile) à traiter, sauf si on l’utilise un autre standard, comme le DSML, dans le cas d’une gestion d’identité.

Voilà, à plus tard pour des nouvelles aventures dans le monde merveilleux (ou pas) de SPML.

Categories: IAM Tags: