Pff, après OpenSSO, j’ai enfin réussi à avancer sur IDM8 (décidément c’est une bonne période ;p), en effet j’ai réussi à créer et utiliser (surtout utiliser, en fait, sinon c’est moins intéressant) un formulaire de création d’utilisateur dans IDM8. Donc, comme d’habitude, quand on dispose de la procédure qui va bien, et d’un exemple, c’est tout de suite beaucoup plus simple : (la procédure nécessite néanmoins un IDM fonctionnel)
Lors de la configuration d’OpenSSO, un répertoire (par défaut) $HOME/opensso est utilisé pour y stocker une instance d’opends. Néanmoins, la distribution n’est pas complète, pour procéder à la sauvegarde d’une instance, vous devez copier les répertoires bin et lib d’une archive OpenDS classique (tout ceci dans le répertoire $HOME/opensso/opends).Vous pouvez maintenant procéder à un export LDIF en utilisant la commande suivante :
Pff, j’ai finalement réussi à installer l’application de démonstration de FAM8/opensso, et donc l’agent nécessaire à son bon fonctionnement, tout ceci avec le dernier build d’OpenSSO, à savoir le 4.5.
Quelques informations avant de commencer :
environnement de test : opensso servi par glassfish v2ur2 sur Mac OS X, agentsample servi par glassfish v2ur2 sur une debian
dc=opensso,dc=java,dc=net comme suffixe de configuration dans opensso (très important pour utiliser le build de l’application d’exemple, si vous utilisez un autre domaine, vous devrez recompiler l’application)
Rentrons dans le vif du sujet :
installer OpenSSO (attention aux limitations de conteneur, veillez à bien prendre en considération la Release notes)
se rendre sur http://hostname:8080/opensso, attention à bien utiliser un nom DNS, et pas localhost
choisir la configuration personnalisée, attention à bien spécifier le nom de domaine du cookie, dans mon cas .asyd.net, dans sa configuration standard, OpenSSO utilise un passage de cookie, les applications protégées doivent donc être obligatoirement dans le même domaine DNS, avec un domain cookie suffisamment large
encore une fois, vérifiez bien que l’URL d’opensso utilise bien le bon nom dns
sur le serveur hébergeant l’application cliente, télécharger et installer glassfish v2ur2
télécharger l’agent approprié
utiliser la commande ./agentadmin install, une fois installé, se rendre dans le répertoire Agent_001/config, puis copier le fichier FAMAgentConfiguration.properties sur le serveur hébergeant opensso (la commande agentadmin vous demandera l’URL pour accéder à opensso, l’URL à protéger, un login et un mot de passe correspondant à un compte de type agent, celui-ci sera crée plus tard)
déployer les applications agentapp.war (disponible dans le répertoire etc de l’agent) et agentsample.ear (répertoire sampleapp/dist/ de l’agent)
sur le serveur opensso, se rendre dans le répertoire opensso/tools, extraire l’archive famAdminTools.zip puis lancer le script setup, le répertoire attendu correspond à celui fourni lors de l’installation d’opensso, par défaut $HOME/opensso
rajouter une ligne userpassword=<password>, où password correspond au mot de passe fourni lors de l’installation de l’agent. Le mot de passe doit être en clair.
utiliser la commande famadmin pour créer l’agent (/bin/famadm create-agent -b agent1 -t J2EEAgent -u amadmin -f /tmp/password -D config/FAMAgentConfiguration.properties -e ‘/’), le fichier /tmp/password doit contenir le mot de passe du copte amadmin, sur une ligne, et le fichier avec les droits 400
vérifier que l’objet agent est bien crée, se connecter en tant qu’administrateur sur opensso, puis sur Contrôle d’accès, puis sur le domaine opensso, sur Agent, puis finalement J2EE, vous devriez trouver l’agent
Si vous essayer de vous connecter sur http://host2:8080/agentsample/ vous devriez être redirigé vers la page d’opensso, puis vers une page vous notifiant que vous accédez à une ressource protégée, la configuration n’est encore pas finie !
connecter vous en tant qu’administrateur sur l’opensso
créer un groupe manager puis un groupe employee
créer un utilisateur appartenant aux deux groupes sus cités
créer une nouvelle stratégie (p1), puis une nouvelle règle (s1), comme nom de ressource, spécifier la valeur http://<host2>:8080/agentsample/*, puis autoriser le GET et le POST
créer maintenant un nouvel objet, de type Objet d’identité Access Manager
rajouter un filtre sur le groupe employee
reconnecter vous (un redémarrage du serveur glassfish host2 peut être nécessaire) sur l’application agentsample, vous devriez pouvoir accéder maintenant à l’ensemble de l’application
Dès lors, tous les membres du groupe employee peuvent accéder à l’application. Vous pouvez vérifier si un utilisateur appartient au groupe manager en cliquant sur le lien J2EE Security API puis sur Invoke Security Aware Servlet, une ligne vous informera des groupes auxquels votre utilisateur appartient.
Voilà, enfin, j’y suis arrivé, pas très simple quand même 🙂
Sous Windows, lorsque vous exporter un certificat utilisateur (depuis le magasin windows, bien évidemment); il est enregistré dans un fichier p7b. Pour information, un fichier p7b est un fichier CMS, décris par la RFC 2797, c’est à dire un conteneur de donnéees qui peuvent être signées ou chiffrées (dans le cas présent, le certificat est signé). Bref, j’ai eu besoin programmatiquement de pouvoir être en mesure d’extraire le certificat final d’un p7b, sachant que le fichier peut contenir plus d’un certificat (typiquement windows inclus la chaîne de certification), et j’avoue que bouncycastle n’est pas forcément simple d’approche, c’est pourquoi je mets aujourd’hui le code en dispo ! Enjoy
Cette fonctionnalité permet de stocker l’ensemble des opérations effectuées sur les identités gérées par IDM, à des fins d’audit mais également pour du reporting. Pour le configurer dans IDM8 :
créer une base de données (vérifier la présence du driver jdbc)
initialiser le schéma depuis le fichier approprié dans $DEPLOYDIR/exporter/create_warehouse.<driver>
cliquer sur l’onglet Configure, puis sur le sous onglet Warehouse
créer une nouvelle connexion en cliquant sur le bouton “Add Connection”
cliquer sur le bouton Edit en dessous du label “Warehouse Configuration Information”
spécifier com.sun.idm.warehouse.base.Factory comme nom de classe (champ : “Warehouse Interface Code Factory Class Name”), sélectionner (si ce n’est pas le cas) la connexion crée à l’étape précédente
et voilà, cela active au passage la fonctionnalité d’audit forensic query, disponible dans le menu Compliance !
A plus tard pour la poursuite de mes tests avec IDM8 !
Contexte : soit une application de gestion electronique de document (GED, pour ceux qui raffolent des acronymes) – que je nommerais pas – utilisant une applet pour envoyer les fichiers depuis le poste local vers l’application (web, donc). Un utilisateur se plaint depuis peu de ne pas (plus ?) pouvoir envoyer des documents, suite a une “erreur technique”. Apres analyse, (simple ouverture de la console java) on observe une jolie exception concernant java.security, sur un refus de faire un connect,resolve vers l’adresse IP du serveur (en https, je ne sais pas si le http est concerne, je ne pense pas). Quelques recherches google plus tard, un fichier java.policy modifie, et ca fonctionne.. Jusque la ca peut etre encore comprehensible, mais ca le deviens moins quand on m’explique que ca marche depuis la plupart des autres postes. Apres une intense reflexion, et surtout – je l’admets – differents tests, je m’apercois que le probleme n’est reproductible qu’en java 6, update 5 et 6, et que cela fonctionne tres bien en java 6 update 10 (beta). Il me semble fonctionne dans des versions precedant l’update 5.
Bref, si un jour vous avez des problemes avec une applet, concernant des exceptions java.security, penser a upgrader. Si jamais quelqu’un est motive pour trouver des pointeurs precis concernant ce probleme, je suis preneur :0
Bon nombre d’entre vous (comme moi d’ailleurs 🙂 ne savent pas trop comment réaliser des captures vidéos illustrées sous linux. Par illustrée j’entends une vidéo “retouchée” pour y ajouter des captures, etc, ce qu’il n’est pas possible (à ma connaissance) de faire facilement avec un outil du genre recordmydesktop. Néanmoins, en broutinant (ahah merci la langue française) aujourd’hui, je suis tombé sur ce lien, qui est une vidéo concernant heartbeat. Et qu’elle ne fut pas ma surprise de découvrir que cette vidéo a été faite avec un outil libre, à savoir wink, disponible – au moins – dans la debian sid. Je n’ai pas encore eu le temps de tester, mais ca a l’air très prometteur.
En tant qu'(ancien ?) administrateur systeme, j’ai du mal a installer sur un serveur plein de choses inutiles, comme gnome, un serveur X, firefox, etc. Or, il est vrai que sous Solaris/SXCE, il n’est pas forcement facile d’arriver a n’installer que les paquets utiles. Du moins c’etait vrai jusqu’a ce qu’a apparaisse le Solaris Package Companion. Sous ce nom se cache un simple script ksh qui permet de construire une mini base de donnee des paquets disponibles d’un repertoire. Une fois l’operation d’analyse effectuee, le script est en mesure de donner des informations du genre :
lister les packages d’un cluster
la liste des dependances d’un paquet
C’est grace a cette derniere fonctionnalite que j’ai realise un petit script qui prend un argument un nom de package, et qui se charge d’installer les paquets dependants. Simple mais tres efficace ! Je mets le script en copie, mais il n’est la que pour donner une idee, il est tres loin d’etre parfait 🙂
Et voilà, toutes les bonnes choses ont une fin, c’est donc mon (avant) dernier jour de vacances, que je passe à Rennes en compagnie de fax, qui me force à ne manger que des bonnes choses !
Oui, je parle bien de descente, car vraiment, apres une semaine intensive comme celle que j’ai vecu, c’est presque difficile de revenir dans un monde normal 🙂 Tout ca pour dire que l’edition des RMLL 2008 etait ENORME, plus de 4000 personnes presentes (contre un peu plus de 2000 attendues), 27 fut de bieres (merci a Marc pour avoir offert plus de 250 bieres !), 413 repas du libre servis (et ne comptons pas les personnes qui n’ont pas reussi a voir de ticket), bref un vrai succes. Un grand merci a Jean Christophe Elineau, le president de cette annee, ainsi que tout le reste de l’equipe d’orga (notamment kolter, darkou, Jean Jacques, Jean Charles, et tout ceux que j’oublie).
De mon cote, je ne cache pas ma joie d’avoir rencontrer des gens que je ne connaissais que d’irc, notamment waloo (que je salue au passage pour avoir pleinement compris le principe des rmll, c’est a dire les confs la journee et boire le soir :), birdy, Pierre et Frederic d’entrou’vert qui sont tous deux vraiment excellent, Mikael.. J’en oublie plein et je suis desole, mais c’etait vraiment une semaine intensive 🙂
Pour se rendre compte de la semaine, voici quelques galleries de photos :