lundi 26 octobre 2015

Authentification Digest et chiffrement des mots de passe, avec Tomcat Realm

Le mois dernier, j'avais écrit un billet sur l'authentification Digest et le chiffrement des mots de passe, avec Spring Security. Aujourd'hui je me pose la même question, mais avec une configuration de Realm sous Tomcat 8.
Comment peux-t-on associer une authentification Digest avec le hachage des mots de passe ? Nous verrons d'ailleurs que la réponse n'est pas la même pour tous les realms de Tomcat.

lundi 12 octobre 2015

Adieu boot2docker, bonjour docker-machine

Eh oui, boot2docker, c'est fini. C'était sympa, tu m'as permis d'utiliser Docker là où ce n'était pas permis. Mais maintenant, tu dois laisser ta place à Docker Machine. Voilà, c'est fini. Ne sois jamais amère, reste toujours sincère. T'as eu c'que t'as voulu, même si t'as pas voulu c'que t'as eu.

mardi 6 octobre 2015

Authentification Digest et chiffrement des mots de passe, avec Spring Security

I don't always authenticate requests...
Récemment, j'ai voulu utiliser du Digest pour l'authentification à un service REST. J'ai préféré cette technique à Basic parce qu'elle est plus sécurisée. Et pour avoir un bon niveau de sécurité, j'ai aussi voulu chiffrer les mots de passe en base de données. Là je me suis trouvé face à un problème : comment comparer un mot de passe digéré et salé dans en header de ma requête HTTP avec un mot de passe digéré et salé dans la base de données ? Et si c'est possible, comment le mettre en place avec Spring Security et Spring Boot ?
Je vais donc reprendre ma configuration Spring Security au départ, avec une authentification Basic, puis passer à l'authentification Digest et voir comment la rendre compatible avec le chiffrement des mots de passe.

mercredi 30 septembre 2015

Découverte de CompletableFuture

La classe CompletableFuture fait partie des nouveautés de Java 8, dans le package java.util.concurrent. Dans un premier temps, je n’y ai pas beaucoup prêté attention, parce que j’avais assez à faire pour prendre en main les lambdas et l’API Stream, et aussi parce que je trouvais sa javadoc assez confuse.
Récemment, je suis tombé sur NoBlogDefFound où Tomasz Nurkiewicz explique plein de choses sur les classes de concurrence de Java SE. Plusieurs articles traitent de CompletableFuture et ça m’a bien éclairé sur le sujet. Je vais essayer de résumer ce que j’en ai compris et ce qui m’a plu.

lundi 29 juin 2015

Comment ouvrir les ports JMX remote à chaud

Pour permettre un accès distant au MBeans d'une JVM Oracle ou OpenJDK, il faut la démarrer avec la propriété com.sun.management.jmxremote.port, plus quelques autres propriétés détaillées sur JTips.
java -Dcom.sun.management.jmxremote.port=1099 fr.sewatech.myapp.MyMain
En rédigeant l'article JTips sur JMX Remote, j'ai découvert qu'on pouvait activer cet accès distant à chaud grâce à l'API Attach. Voyons comment procéder.

jeudi 19 mars 2015

Intégration continue avec Travis CI et Docker Hub

Habituellement, je développe en java et j'utilise un Jenkins pour l'intégration continue. Récemment, j'ai développé un petit projet perso, pur front-end, ce qui est totalement nouveau pour moi ; le projet en question est une mini console d'administration pour WildFly.

Pour être dans l'ère du temps, j'ai préparé une image Docker qui fait tourner un serveur Apache httpd sur lequel est déployée la console. Et pour faciliter l'utilisation et la distribution de cette image, elle est sur le Hub Docker. Voyons la chaîne d'intégration continue in ze cloud et gratuite qui met à jour mon image à chaque fois que mon code est mis à jour sur GitHub.


dimanche 15 mars 2015

Putain, 10 ans !

La société Sewatech était immatriculée le 2 février 2005. Ça fait donc dix ans que je suis indépendant. Et pour tout dire, je n'ai pas vu passer le temps.

Depuis le début, j'essaie de mélanger les activités de formation, de développement et de conseil. Pourquoi un tel mélange ? Ben tout simplement parce que les trois activités me plaisent et que j'ai envie d'en abandonner aucune. Il faut avouer que ça n'a pas toujours été facile de faire un mélange équilibré, le contraintes en terme de planning étant peu compatibles :
- La formation est faite de petites séquences (généralement 3 ou 4 jours) planifiés longtemps à l'avance.
- Le conseil est aussi fait de petites séquences, souvent planifiées à court terme.
- Le développement est fait de tâches plus longues.
Si les deux premiers se marient assez bien, c'est le troisième qui a souvent du mal à trouver sa place dans le planning.

Dans ces 10 ans, je vois trois périodes : le démarrage, où il faut trouver des partenaires formation, l'indépendance où j'ai cherché à développer les formations en direct, et la période Rtone.

Dans les premiers mois, j'ai cherché à me faire connaitre comme formateur, auprès des organismes de formation. Il fallait trouver quels sujets pouvaient être correctement vendus, mais pour lesquels ils n'avaient pas encore (ou pas assez) de formateur(s). C'était une petite remise en question, puisque mon effort ne portait plus forcément sur mes sujets de prédilection, mais je devais chercher plus loin. C'est comme ça que j'ai commencé à donner des formations JBoss (c'était sur la version 4), qui est rapidement devenu mon best seller.

Durant les quatre premiers exercices, mon activité passait pour 75 à 100% par de la sous-traitance, pour des organismes de formations ou des SSII, avec une dépendance de plus en plus grande à un ou deux gros organismes. 2009 a été un tournant car c'était une mauvaise année en terme de chiffre d'affaire, mais pour la première fois j'avais réussi à vendre plus de prestations en direct. J'ai maintenu un ratio à 40 % de direct jusqu'en 2011.

La fin de l'année 2011 a été un nouveau tournant, puisque Rtone m'a contacté pour que je travaille pour eux à mi-temps sur une longue durée. Enfin, j'arrivais à concilier cette 3° activité ! Ça n'a pas toujours été facile, et la part de formation a beaucoup chuté, sans compter le temps réservé aux conférences comme Devoxx, Devoxx FR ou Mix-IT, et à rendre visite à quelques JUGs. Je me suis retrouvé à travailler plus pour gagner moins. Ça reste assez difficile puisque la part de dev dépend des projets sur lesquels Rtone peut me faire bosser. En plus de trois ans, je ne suis pas encore certain d'avoir trouvé le bon équilibre. Malgré ces difficultés, c'est certainement la période la plus intéressante depuis que je suis indépendant.

Evidemment, je ne sais pas jusqu'à quand va durer cette phase. Je ne sais pas non plus comment va évoluer mon activité de formation dans les prochaines années.

mercredi 7 janvier 2015

jeudi 1 janvier 2015

Bilan 2014 du blog

Je viens de regarder les statistiques du blog, et je dois avouer que ça m'a un peu déprimé. Surtout quand j'ai regardé la liste des pages les plus consultées.

Comme toujours depuis le démarrage du blog, c'est ce tutoriel vidéo, avec JSF 1.2, Spring 2.5 et Hibernate 3.2 qui est en tête. Et si je l'ai publiée fin 2010, la vidéo a été enregistrée en 2008 pour un magazine, ce qui explique que les versions utilisées soient aussi anciennes. J'ai même dû couper les commentaires pour que les lecteurs arrêtent de demander du support. Est-ce que je dois comprendre que je n'ai rien publié de plus intéressant depuis ? Quel est le profil des gens qui visitent ce blog, pour s'intéresser à de telles vieilleries ? La seule chose qui me rassure, c'est que la fréquentation est en baisse depuis quelques mois.

Quand je regarde les 3 articles qui suivent, ça ne me rassure pas forcément. Il y en a deux qui concernent Google Maps, Du SIG à Google Maps et Générer un document KML pour Google Maps, et un sur mon mail de réponse à de la pub Windev. Ces articles sont plus récents, mais ne concernent pas du tout mon activité habituelle.

Et ce n'est pas l'audience de jtips qui va me rassurer puisque sur ce wiki, c'est une page sur Spring Framework 2.5, donc la rédaction a débuté fin 2007 qui est la plus populaire.

Dois-je conclure que peu de gens sont intéressés par mes sujets de prédilection, comme JBoss / WildFly ou JavaEE. Ou est-ce que les vieilleries sont mieux référencée par Google ?