Il y a quelque temps Pierre Rudloff publiait un billet présentant BrowserID et expliquant comment mettre en place cette technologie.

Je l’ai implémentée dans un de mes projets qui utilise du Java côté serveur (le framework Play!, pour être précis). Comme Pierre ne présentait le code serveur qu’en PHP, je vous partage mon code aujourd’hui. Vous pouvez le réutiliser comme bon vous semble.

Pour ce qui est du code côté client, suivez les explications dans le billet de Pierre. Côté serveur, vous récupérez donc une assertion que vous allez envoyer à browserid.org/verify ainsi qu’une audience. Celui-ci vous renverra ensuite un objet JSon contenant un champ status et un champ email. Si status vaut “okay”, alors la connexion pour l’email donné est acceptée et vous pouvez créer la session.

WSRequest req = WS.url("https://browserid.org/verify");
req.setParameter("assertion", assertion);
req.setParameter("audience", "localhost"); //Indiquez ici votre serveur
req.setHeader("Content-type", "application/x-www-form-urlencoded");
HttpResponse res = req.post();
//Bien sûr, ce n'est pas comme ça qu'on parse du JSon normalement..
String[] response = res.getJson().toString().split("\"");
String status = response[3];
String email = response[7];

if (status.equals("okay")) {
System.out.println("Connexion acceptée par BrowserID pour " + email);
//Votre connexion ici, par exemple, la création d'une session
} else {
message = "Connexion refusée pour " + email;
}

Dans cet exemple, j’utilise la classe WSRequest car mon projet utilise le framework Play!. Il existe d’ailleurs un très bon module Play! développé par Olivier Refalo qui permet d’abstraire BrowserID. Je ne l’ai pas utilisé ici car mon but était justement de voir comment tout cela marchait, mais si vous souhaitez en savoir plus, rendez vous sur son github.

Voilà, comme vous pouvez le voir, c’est très simple !