Home > IAM, PKI > IDM, EJBCA, SPML, et Groovy, ca y est !

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

August 26th, 2008 Leave a comment Go to 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: ,
  1. No comments yet.
  1. No trackbacks yet.