Openid connect avec Keycloak

Jouons avec le nouveau composant security de Symfony

Introduction

Dans cet article, nous allons utiliser Keycloak, un IAM implémentant le protocole OpenId pour le SSO. Les fonctionnalités et possibilités de paramétrages de Keycloak sont très nombreuses (utilisation d’autres identity providers populaires comme Twitter, Facebook, Github etc, 2FA…). Dans cet article nous utiliserons des utilisateurs directement enregistrés dans Keycloak. Vous pouvez trouver l’exemple complet présenté dans cet article (qui utilise un container Docker pour Keycloak) sur mon compte Github. A noter que le code est à considérer comme à but pédagogique. Certains cas peuvent ne pas avoir été traités pour un usage en production (et il n’y a pas de couverture de tests).

Read More

Doctrine ORM: astuces et pièges

Doctrine ORM est une librairie PHP qui fournit une abstraction de la couche de persistence des donnéees et permet ainsi au développeur de se focaliser sur une approche orientée object de sa logique métier.
Si l’utilisation de Doctrine apporte (comme pour d’autres ORM) un code plus clair et un gain de temps pour le développeur, la contrepartie est une consommation de mémoire plus importante voire (si l’on n’y prend pas garde) une augmentation du nombre de requêtes. Nous allons aborder dans cet article quelques astuces mais aussi des pièges à éviter.

Read More

Un spool mémoire avec le composant Symfony Mailer

A partir de Symfony 4.3, un nouveau composant a été introduit pour l’envoi d’emails. Il s’agit du composant Mailer. Au moment ou j’écris ces lignes, ce composant n’est encore qu’expérimental (ce qui signifie qu’il peut être modifié voir supprimé à l’occasion d’une release mineure). Il a cependant pour vocation à remplacer le composant SwiftMailer jusque là utilisé par Symfony.
En utilisant ce composant, je me suis aperçu qu’il n’avait pas l’option spool. Cette option permettait avec SwiftMailer de créer une file d’attente de mails et de ne les envoyer qu’une fois la page affichée à l’utilisateur. Bien pratique lorsque l’on a un serveur mail distant ou un peu lent. N’est ce pour autant pas possible avec le nouveau composant Mailer ?

Read More

Installer un serveur mail sur Debian 9 (Stretch)

Il m’arrive de temps à autre de changer de serveur dedié; pour en prendre un qui corresponde plus à mes besoins du moment ou simplement en faveur d’une offre plus intéressante. Ma grande hantise dans ces moments là, c’est la réinstallation du serveur de mail. N’étant pas “sysadmin”, j’y passe à chaque fois beaucoup trop de temps à mon goût, en montant ça à tatons au fil des articles que je trouve ici et là sur le web.
Ce problème me décide aujourd’hui à écrire un article, qui me permettra d’avoir une doc qui corresponde à mes besoins et que je sois sûr de retrouver la prochaine fois que j’en aurais besoin.

Read More

Recycler une tablette Android en cadre photo

L’éternel problème des cadres photos, c’est qu’il faut mettre les photos à jour. Et peu de gens prennent la peine de le faire, que ce soit sur une carte SD ou sur un compte Dropbox ou autre (pour les cadres photos wifi qui cela dit ne sont pas légions).
Nous allons voir ici comment utiliser une tablette Android comme cadre photo et la mettre automatiquement à jour avec des photos stockées sur un Raspberry Pi (ou un autre système allumé en permanence).

Read More

Patcher avec Composer

Récemment, sans rien que nous ayons modifié de particulier, simple-phpunit (qui lance nos tests Symfony) ne fonctionnait plus. Plus embêtant encore, ce problème faisait échouer nos CI. Après une courte investigation, il s’est avéré que simple-phpunit (maintenu par Symfony) reposait sur des branches de PHPUNIT. Certaines anciennes branches ayant été supprimés du repository (probablement car elles vont cesser d’être maintenues), simple-phpunit ne pouvait plus fonctionner.

Quelle solution ?

Read More

Partager des volumes Docker via AFP sur Mac

Suite à la lecture de cet article, je voudrais faire un court retour d’expérience sur une solution alternative de partage de volumes sous macOS (anciennement OS X) que je privilégie depuis un certain temps.

La problématique

Si depuis que j’ai goûté à Docker, je ne peux m’en passer pour mes conteneurs de développement, j’ai vite été confronté à des limitations sur OS X:

  • Les performances médiocres lorsque je partage un dossier entre ma machine hôte et mon conteneur (les projects Symfony sont très lents même sans activer XDebug).
  • Les fonctionnalités limités du volume partagé. Il ne permet par exemple pas d’utiliser les ACL comme préconisé par Symfony pour jongler entre les actions du server web (user www-data) et celles de la console (user courant).

    Read More

Sécuriser ses conteneurs Docker en production

Docker est à l’origine conçu pour créer des conteneurs à la volée et effectuer des developpements/tests dans différents environments. Mais sa simplicité d’utilisation et son écosystème grandissant pousse de plus en plus ses adeptes à vouloir l’utiliser en prod. D’autant que de nouveaux outils (Kubernetes, Swarm…) et des améliorations récentes (user namespaces, variables d’environnement dans les docker-compose…) vont dans ce sens.

Malheureusement les conteneurs Docker sont de base assez peu sécurisés. Nous allons
voir quelques astuces simples pour limiter les possibilités d’attaques lorsque vous déploierez vos conteneurs en production.

Read More

Installer une galerie photo (Piwigo) sur Raspberry PI

Quelle gallerie photo ?

Je cherchais une galerie photo à mettre sur mon Raspberry Pi 3. J’avais précédemment utilisé la galerie propriétaire DSPhoto (Synology) et je cherchais quelque chose s’en rapprochant en terme de fonctionnalités. A savoir:

  • Possibilité d’uploader les photos par lot
  • Existence d’une application ou au moins d’un site web adapté aux mobiles
  • Capacité à présenter les photos en miniatures mais aussi de les télécharger en qualité originale si besoin
  • Gestion d’albums privés et possibilité d’y accéder sans identification via un lien
  • Support de certains formats vidéos

Après quelques recherches, j’ai fini par tomber sur Piwigo (http://fr.piwigo.org/), une galerie open source avec un système de plugin permettant d’étendre les fonctionnalités de base à celles que je recherchais.

Read More