tag:linuxfr.org,2005:/tags/openidconnect/publicLinuxFr.org : les contenus étiquetés avec « openidconnect »2021-06-01T16:22:53+02:00/favicon.pngtag:linuxfr.org,2005:Diary/397332021-04-24T21:24:30+02:002021-04-24T21:24:30+02:00Système et usage d'identité numériqueLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#toc-contexte-et-probl%C3%A9matique-">Contexte et problématique :</a><ul>
<li><a href="#toc-r%C3%A9sum%C3%A9synth%C3%A8se-">Résumé/synthèse :</a></li>
<li><a href="#toc-ce-que-jaimerais">ce que j'aimerais</a></li>
</ul>
</li>
<li><a href="#toc-et-en-pratique-">Et en pratique ? :</a></li>
</ul>
<h2 id="toc-contexte-et-problématique-">Contexte et problématique :</h2>
<p>Quand j'ai débuté à utiliser interne, j'ai découvert les mails, les forums, etc. Je me suis dont créer une adresse mail (enfin plusieurs), je me suis crée des comptes sur des forums, etc. Puis est arrivé la "révolution" gmail, je me suis dont crée un compte dès que j'ai pu et ai du demander a tous les contacts que je voulais garder de mettre à jour mon adresse. Puis il y a quelques années, je me suis rendu compte que gmail n'était pas parfais, et que sont usage ne correspondais plus a mes priorités. J'ai donc eu envie de changer, j'ai donc cherché un nouveau fournisseur de service e-mail et j'ai du créer une nouvelle adresse e-mail.<br>
Donc je me suis de nouveau retrouvé a devoir demander à mes contacts de se mettre à jour. Mais entre temps les clients mail se sont mit à remplir tous seul les liste de contact, du coup le changement n'était pas toujours correctement enregistré pour les gens.<br>
Je trouve ça super frustrant et finalement "mal fait". En tout cas dans certain cas, pour l'usage en structure (entreprise), ça fonctionne bien. <br>
Je trouve également frustrant de ne pas pouvoir utiliser cette identité pour m'identifier ailleurs que chez mon fournisseur de service (Oui c'est possible dans certain cas, et ça se développe, mais c'est encore hyper limité, pas standard dans les services qui le permette et dans les services qu'on peut utiliser). </p>
<h3 id="toc-résumésynthèse-">Résumé/synthèse :</h3>
<p>Si l'on souhaite pouvoir être contacter par Internet, il faut avoir au moins une "identité" que les autres personne vont pouvoir utiliser, cette l'identité est lié au fournisseur. Et comme beaucoup ne fournisse de service que pour un seul protocole (particulièrement quand le fournisseur utilise son propre protocole de communication).<br>
Ce qui amène notamment les problèmes suivant :<br>
- On ne peut pas changer de fournisseur sans changer changer d'identité.<br>
- Si on veux être accessible avec plusieurs protocole, il faut souvent également multiplier les identités.</p>
<h3 id="toc-ce-que-jaimerais">ce que j'aimerais</h3>
<p>Alors j'y ai réfléchi et je souhaiterais :<br>
* avoir une identité que je pourrais communiquer à des personnes<br>
* l'identité serait identique quelque soit le protocole.<br>
* l'identité pourrais servir a s'inscrire a différent services : <strong>exemple : avoir la même identité email/xmpp/mastodon/peertube, même s'il ne sont pas sur le même serveur, fournis par le même prestataire de service.</strong><br>
* pouvoir utiliser des fournisseurs de service différent par protocole.<br>
* que l'identité soit indépendante des fournisseurs de service (y compris le fournisseur d'identité) et pouvoir choisir les fournisseurs que je veux, et en changer librement sans avoir besoin de changer d'identité.<br>
* pouvoir avoir plusieurs identités pour pouvoir compartimenter mes échangent en ligne.<br>
* pouvoir partager du contenu (documents, albums photos, etc) en utilisant l'identité de mes contacts. Il n'aurait ainsi pas besoin d'avoir un compte sur le service que j'utilise/j'auto-héberge pour avoir accès au contenu que je souhaite partager.</p>
<p>Et quelques idées complémentaires :<br>
* Il pourrait y avoir un (des) annuaires pour pouvoir chercher des contacts.<br>
* La description de l'identité (fiche contact ?) aurait certaine partie publique, et d'autre privé.<br>
* Je pourrais signer/certifier des écrit/document avec une identité (que ça soit une identité réel, ou pseudonyme).</p>
<h2 id="toc-et-en-pratique-">Et en pratique ? :</h2>
<p>Coté "technique", il me me semble pas qu'il n'y à rien de révolutionnaire.<br>
La seule "nouveauté" serais un système d'identité indépendant d'un domaine. On pourrait imaginer reprendre le principe du DNS et l'adapter. Le fonctionnement des numéros de téléphone (portable) à lui aussi certain aspect qui corresponde. Il permet d'avoir un numéro indépendant de prestataire de service (avec quand même un préfixe pour la gestion des pays).</p>
<ul>
<li>Un serveur d'identité ferais le lien entre une identité et les serveurs/fournisseurs de service pour chaque protocole. De la même façon qu'un serveur DNS fait le lien entre un domaine (ou sous domaine) et les serveurs par service.</li>
<li>L'identification inter-service et le partage de contenu pourraient utiliser/être basé sur OpenID et OpenID Connect.
Lorsqu'on souhaite partager du contenu avec quelqu'un, on référencerait son identité qui lui permettrais ensuite d’accéder au contenu.</li>
<li>Une gestion de clé public/privé permettrais de signer des documents officiellement, et une personne tierce pourrais valider la signature en utilisant une clé publique rattaché à l'identité.</li>
<li>On pourrait se créer plusieurs identités et ainsi compartimenter plusieurs aspect de notre vie, non des contraintes technique/organisationnelle.</li>
</ul>
<p>Bien sur, il reste des questions, Entre autres :<br>
Quel serait la forme des identités ? Quelle niveau de compatibilité avec le système actuelle ou l'identité est rattaché a un domaine ? <a href="mailto:id@provider.bla">id@provider.bla</a> (façon mail/xmpp), ou @id:provider.bla (façon matrix ?), ou encore id:// façon protocole ?</p>
<p>Qu'est ce que vous en pensez ? Vous vous êtes déjà fait ce genre de réflexion ? Vous avez d'autres idées/envies ? Vous connaissez des gens qui travaille dans cette direction ? Vous faites partie de ses gens ?</p>
<p>PS: Je ne connais les systèmes d'identification et les problématiques qu'en tant qu'utilisateur. Exemple: Je connais OpenID de nom et ai une vague idée de ce que c'est, peut-être que ça permet déjà tout (ou presque) ce que j'aimerais, qu'il manque juste que ça soit plus utilisé.</p>
<div><a href="https://linuxfr.org/users/xoddark/journaux/systeme-et-usage-d-identite-numerique.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/124078/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/xoddark/journaux/systeme-et-usage-d-identite-numerique#comments">ouvrir dans le navigateur</a>
</p>
xoddarkhttps://linuxfr.org/nodes/124078/comments.atomtag:linuxfr.org,2005:Diary/387532019-11-03T19:04:19+01:002019-11-04T15:32:42+01:00Sortie de Glewlwyd 2.0, serveur SSOLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Glewlwyd, serveur SSO polyvalent, est maintenant disponible en version 2.0 sur les interwebs!</p>
<p><a href="https://babelouest.github.io/glewlwyd/">https://babelouest.github.io/glewlwyd/</a></p>
<p>Je reprends une partie de <a href="//linuxfr.org/users/superzen/journaux/glewlwyd-2-0-serveur-sso-est-maintenant-en-rc1">l'ancien journal</a> écrit pour la sortie de la RC2, mais celui-ci est bien plus détaillé pour les curieux.</p>
<h2 id="toc-installer">Installer</h2>
<h3 id="toc-paquets-pour-certaines-distributions">Paquets pour certaines distributions</h3>
<p>Des paquets pour certaines distributions Linux sont disponibles ici: <a href="https://github.com/babelouest/glewlwyd/releases/tag/v2.0.0">https://github.com/babelouest/glewlwyd/releases/tag/v2.0.0</a></p>
<h3 id="toc-image-docker">Image Docker</h3>
<p>Une image Docker est disponible ici pour tester rapidement, ou pour utiliser en vrai, juste en modifiant une option: <a href="https://hub.docker.com/r/babelouest/">https://hub.docker.com/r/babelouest/</a></p>
<h3 id="toc-installation-manuelle-avec-cmake">Installation manuelle avec CMake</h3>
<p>Sinon le manuel d'installation décrit comment recompiler ca sans stress: <a href="https://github.com/babelouest/glewlwyd/blob/master/docs/INSTALL.md">https://github.com/babelouest/glewlwyd/blob/master/docs/INSTALL.md</a></p>
<h2 id="toc-présentation">Présentation</h2>
<p>Glewlwyd est un serveur d'authentification unique, autrement appelé Serveur SSO, qui implémente les protocoles <a href="https://fr.wikipedia.org/wiki/OAuth">OAuth2</a> et <a href="https://fr.wikipedia.org/wiki/OpenID_Connect">OpenID Connect</a>.</p>
<p>Le backend est écrit en C, ce qui lui permet de fonctionner sur tout type de machine sans trop bouffer de ressources.</p>
<p>Il gère les utilisateurs et les clients stockés en base de données ou dans un LDAP.</p>
<p>Il nécessite une base de données pour fonctionner, au choix SQLite3, MariaDB/MySQL ou PostgreSQL.</p>
<h3 id="toc-schémas-dauthentification">Schémas d'authentification</h3>
<p>Il gère également les schémas d'authentification multiples:</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_algorithm">HOTP/TOTP</a></li>
<li>
<a href="https://fr.wikipedia.org/wiki/WebAuthn">WebAuthn</a>, supporte au moins:
<ul>
<li>les <a href="https://www.yubico.com/">Yubikeys</a>
</li>
<li>les machines sous Android 7+ en s'authentifiant par code secret ou empreinte digitale</li>
</ul>
</li>
<li>Mot de passe à usage unique envoyé par courriel</li>
<li>
<a href="https://fr.wikipedia.org/wiki/Transport_Layer_Security#Authentification_par_certificat_num%C3%A9rique">Certificats TLS</a> avec possibilité d'émission de certificat <a href="https://fr.wikipedia.org/wiki/PKCS12">PKCS#12</a>
</li>
</ul>
<h3 id="toc-architecture">Architecture</h3>
<p>Et il utilise une architecture à base de <a href="https://github.com/babelouest/glewlwyd/blob/master/src/scheme/README.md">greffons</a> pour ajouter, modifier ou supprimer plus facilement les backends ou sont stockés les utilisateurs ou les clients, les schémas d'authentification ou encore les plugins comme OAuth2.</p>
<h2 id="toc-protocoles-supportés">Protocoles supportés</h2>
<h3 id="toc-oauth2">OAuth2</h3>
<p>OAuth2 est le successeur d'OAuth, et est un framework de délégation d'authentification qui permet à un client de se connecter à un ou plusieurs serveurs de ressources au nom d'un utilisateur.</p>
<p>Le principe est le suivant: le client redirige l'utilisateur vers le serveur d'authentification unique en notifiant au serveur d'authentification qui est le client qui demande, et quels accès il demande. L'utilisateur s'authentifie, autorise ou non les accès au client selon ses droits, puis le serveur d'authentification redirige l'utilisateur vers le client avec une clé. Cette clé permet enfin au client d'accéder aux ressources demandées initialement.</p>
<h3 id="toc-openid-connect">OpenID Connect</h3>
<p>La fondation OpenID est partie du standard OAuth2 et de ses propres expériences et solutions pour proposer le protocole OpenID Connect.<br>
OpenID Connect est issu de OAuth2 mais n'en est pas pour autant interopérable. En fait, il a pris certains aspects d'OAuth2 qui l'intéresse, ignore des aspects qui ne l'intéresse pas (response types <code>Resource Owner Password Credentials Grant</code> et <code>Client Credentials Grant</code>), et a ajouté de nouvelles fonctionnalités pour étendre les possibilités.</p>
<p>La grosse nouveauté d'OpenID Connect (mais pas la seule) est le <code>id_token</code>, c'est un <a href="https://fr.wikipedia.org/wiki/JSON_Web_Token">JWT</a> permettant au client d'identifier l'utilisateur connecté et d'accéder à des informations de l'utilisateur comme son nom, son adresse courriel, son adresse postale, etc.</p>
<h3 id="toc-autorisation">Autorisation</h3>
<p>Glewlwyd fait de l'authentification mais aussi de l'autorisation car les <code>access token</code> générés par les plugins OAuth2 ou OpenID Connect sont également des JWT contenant une information minimale permettant d'identifier l'utilisateur connecté, ainsi que les niveaux d'accès autorisés par le serveur et l'utilisateur.</p>
<p><a href="https://github.com/babelouest/glewlwyd/blob/master/docs/OAUTH2.md#access-token-format">https://github.com/babelouest/glewlwyd/blob/master/docs/OAUTH2.md#access-token-format</a></p>
<h2 id="toc-implémentations-existantes">Implémentations existantes</h2>
<p>Beaucoup de fournisseurs de services en ligne proposent leur propre SSO: <a href="https://developers.google.com/identity/">Google</a>, <a href="https://azure.microsoft.com/en-us/resources/videos/overview-of-single-sign-on/">Microsoft Azure</a>, <a href="https://developer.apple.com/sign-in-with-apple/">Apple</a>, <a href="https://developer.twitter.com/en/docs/twitter-for-websites/log-in-with-twitter/login-in-with-twitter.html">Twitter</a>, <a href="https://aws.amazon.com/fr/single-sign-on/">AWS</a>, la liste est longue.</p>
<p>Pour les libristes, il existe également beaucoup de produits libres que l'on peut utiliser chez soi: <a href="https://www.gluu.org/">Gluu</a>, <a href="https://www.keycloak.org/">Keycloak</a> notamment pour ceux que je connais un peu.</p>
<p>Glewlwyd sans vouloir concurrencer les autres, veut apporter une alternative simple à installer et à utiliser, et propose des outils pour l'étendre plus facilement à ses besoins.</p>
<div><a href="https://linuxfr.org/users/superzen/journaux/sortie-de-glewlwyd-2-0-serveur-sso.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/118526/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/superzen/journaux/sortie-de-glewlwyd-2-0-serveur-sso#comments">ouvrir dans le navigateur</a>
</p>
Babelouesthttps://linuxfr.org/nodes/118526/comments.atomtag:linuxfr.org,2005:Diary/386562019-09-08T22:27:29+02:002019-09-08T22:27:29+02:00Glewlwyd 2.0, serveur SSO, est maintenant en RC1Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<ul>
<li>
<a href="#toc-principes">Principes</a><ul>
<li><a href="#toc-serveur-dauthentification-unique">Serveur d'Authentification Unique</a></li>
<li><a href="#toc-oauth2">OAuth2</a></li>
<li><a href="#toc-openid-connect">OpenID Connect</a></li>
<li><a href="#toc-impl%C3%A9mentations-existantes">Implémentations existantes</a></li>
</ul>
</li>
<li>
<a href="#toc-fonctionnement">Fonctionnement</a><ul>
<li><a href="#toc-backends-user-et-client">Backends user et client</a></li>
<li>
<a href="#toc-modules-dauthentification">Modules d'authentification</a><ul>
<li><a href="#toc-totphotp">TOTP/HOTP</a></li>
<li><a href="#toc-webauthn">Webauthn</a></li>
<li><a href="#toc-envoi-dun-code-%C3%A0-ton-adresse-courriel">Envoi d'un code à ton adresse courriel</a></li>
<li><a href="#toc-certificat-tls">Certificat TLS</a></li>
</ul>
</li>
<li><a href="#toc-plugins">Plugins</a></li>
</ul>
</li>
<li><a href="#toc-conclusion">Conclusion</a></li>
</ul>
</li>
</ul>
<p>Glewlwyd est un serveur d'authentification unique. La nouvelle version 2.0 entre maintenant en Release Candidate et propose plein de fonctionnalités.</p>
<p><a href="https://github.com/babelouest/glewlwyd">https://github.com/babelouest/glewlwyd</a></p>
<p>Il implémente les protocoles suivants:<br>
- OpenID Connect<br>
- OAuth2</p>
<p>Ainsi que les schémas d'authentification:<br>
- Mot de passe à l'ancienne<br>
- TOTP/HOTP<br>
- Webauthn avec le support de FIDO2 et Android Safetnyet<br>
- Envoi de code aléatoire par e-mail<br>
- Certificat TLS</p>
<p>Il peut se connecter à un ou plusieurs serveurs LDAP ainsi que une ou plusieurs bases de données pour le stockage des utilisateurs. Il permet aussi de faire du passwordless c'est à dire de se débarrasser du mot de passe pour s'authentifier.</p>
<h3 id="toc-principes">Principes</h3>
<h4 id="toc-serveur-dauthentification-unique">Serveur d'Authentification Unique</h4>
<p>Un serveur d'<a href="https://fr.wikipedia.org/wiki/Authentification_unique">authentification unique</a> ou Single-Sign-On permet de centraliser l'authentification pour plusieurs services au même endroit.<br>
Lorsque l'on implémente ou qu'on gère des services webs, on se rend compte que l'authentification des requêtes pour accéder aux services est non seulement lourde, mais en plus peut être dupliquée autant de fois qu'on a de services différents parfois, ce qui ajoute du code, des bugs, de la maintenance, et peut limiter l'évolution du reste.</p>
<p>Le besoin est pourtant simple à formuler:</p>
<blockquote>
<p>Je veux que seules les personnes autorisées puissent accéder à mes services web.</p>
</blockquote>
<p>Des gens se sont donc penchés sur la question depuis pas mal d'années et plusieurs solutions et architectures ont émergé depuis.</p>
<h4 id="toc-oauth2">OAuth2</h4>
<p>OAuth2 est le successeur d'OAuth, et est un framework de délégation d'authentification qui permet à un client de se connecter à un ou plusieurs serveurs de ressources au nom d'un utilisateur.</p>
<p>Le principe est le suivant: le client redirige l'utilisateur vers le serveur d'authentification unique en notifiant au serveur d'authentification qui est le client qui demande, et quels accès il demande. L'utilisateur s'authentifie, autorise ou non les accès au client selon ses droits, puis le serveur d'authentification redirige l'utilisateur vers le client avec une clé. Cette clé permet enfin au client d'accéder aux ressources demandées initialement.</p>
<p>Pour répondre à plusieurs besoins distincts, OAuth2 propose plusieurs méthodes d'authentification appellées <code>response type</code>.<br>
Il propose également les <code>access token</code> qui sont les clés proprement dites pour accéder aux ressources et les <code>refresh token</code> qui permettent de demander un nouvel <code>access token</code> quand le précédent a expiré.</p>
<p>OAuth2 est un standard volontairement incomplet. Pas dans le sens tout pourri, mais qui laisse volontairement des zones d'ombre pour permettre de s'adapter aux besoins.</p>
<p>Par exemple, il ne spécifie pas comment le serveur d'authentification doit identifier l'utilisateur. Ca peut être par un cookie de session, par un certificat TLS, par autre chose, etc.<br>
Également, il dit que l'authentification des access tokens est en dehors de la portée du protocole OAuth2.</p>
<h4 id="toc-openid-connect">OpenID Connect</h4>
<p>La fondation OpenID est partie du standard OAuth2 et de ses propres expériences et solutions pour proposer le protocole OpenID Connect.<br>
OpenID Connect est issu de OAuth2 mais n'en est pas pour autant interopérable. En fait, il a pris certains aspects d'OAuth2 qui l'intéresse, s'est débarrassé des aspects qui ne l'intéresse pas, et a ajouté de nouvelles fonctionnalités pour étendre les possibilités.</p>
<p>La grosse nouveauté d'OpenID Connect (mais pas la seule) est le <code>id token</code>, c'est un <a href="https://fr.wikipedia.org/wiki/JSON_Web_Token">JWT</a> permettant au client d'identifier l'utilisateur connecté et d'accéder à des informations de l'utilisateur comme son nom, son adresse courriel, son adresse postale, etc.</p>
<p>Il est également plus structuré car il propose des webservices supplémentaires et normalisés comme le <code>userinfo</code> qui permet d'accéder à des informations d'un utilisateur comme pour un <code>id token</code> ou le webservice disovery <code>/.well-known/openid-configuration</code> permettant de récupérer la configuration publique du serveur et donc de faciliter la configuration d'un nouveau client en lui donnant la marche à suivre pour connecter un serveur OpenID Connect ainsi que les fonctionnalités qu'il supporte.</p>
<h4 id="toc-implémentations-existantes">Implémentations existantes</h4>
<p>Beucoup de fournisseurs de services en ligne proposent leut propre SSO: <a href="https://developers.google.com/identity/">Google</a>, <a href="https://azure.microsoft.com/en-us/resources/videos/overview-of-single-sign-on/">Microsoft Azure</a>, <a href="https://developer.apple.com/sign-in-with-apple/">Apple</a>, <a href="https://developer.twitter.com/en/docs/twitter-for-websites/log-in-with-twitter/login-in-with-twitter.html">Twitter</a>, <a href="https://aws.amazon.com/fr/single-sign-on/">AWS</a>, la liste est longue.</p>
<p>Pour les libristes, il existe également beaucoup de produits libres que l'on peut utiliser chez soi: <a href="https://www.gluu.org/">Gluu</a>, <a href="https://www.keycloak.org/">Keycloak</a> notamment pour ceux que je connais un peu.</p>
<h3 id="toc-fonctionnement">Fonctionnement</h3>
<p>Voici donc la nouvelle version de mon serveur SSO que j'avais <a href="//linuxfr.org/users/superzen/journaux/glewlwyd-serveur-d-authentification-oauth2">déjà présenté</a> dans sa version précédente.<br>
Le backend est écrit en C ce qui permet d'avoir une application légère et rapide. Il supporte des bases de données SQLite3, MySQL/MariaDB ou PostgreSQL. C'est du GPL et c'est libre!</p>
<p>À l'époque, Glewlwyd supportait seulement le protocole OAuth2 et une seule instance de connexion LDAP et base de données. Après quelques retours et des envies de tester des trucs nouveaux, j'ai décidé de tout remettre à plat et de faire la version 2.0 avec une architecture modulaire.</p>
<p>L'idée de cette architecture est de séparer et de cloisonner certains aspects de l'application, afin de rendre le code plus facile à écrire, débugger, et maintenir. On peut donc écrire des modules pour:<br>
- Gérer les utilisateurs<br>
- Gérer les clients<br>
- Gérer les méthodes d'authentification pour les utilisateurs (Les fameux N-Factor)<br>
- Gérer les protocoles d'authentification voire en implémenter des nouveaux</p>
<p>Glewlwyd permet donc d'authentifier un utilisateur et de donner à un client un accès aux ressources autorisées par l'utilisateur. Il permet également de rajouter des facteurs d'authentification pour des niveaux d'accès. Ainsi, on peut dire que le niveau d'accès X requiert le mot de passe <em>et</em> le TOTP, le niveau d'accès Y seulement le mot passe, et le niveau d'accès Z le TOTP <em>ou</em> la yubikey.</p>
<h4 id="toc-backends-user-et-client">Backends user et client</h4>
<p>Les utilisateurs et les clients (qui au final sont des utilisateurs particuliers) peuvent être stockés dans la base de données, ou une autre base de données ailleurs, ou dans un serveur LDAP (en écriture si ca vous tente), voire plusieurs. On peut ajouter autant d'instances de backends qu'on veut pour accéder aux utilisateurs. Le backend gère l'authentification par mot de passe, et puis c'est tout.</p>
<h4 id="toc-modules-dauthentification">Modules d'authentification</h4>
<p>Pour rajouter des couches de blindage à l'authentification, on peut rajouter des facteurs supplémentaires.</p>
<p>Les facteurs actuellement implémentés sont:</p>
<h5 id="toc-totphotp">TOTP/HOTP</h5>
<p>Le One-Time Password ou mot de passe à usage unique, dans sa version HOTP (avec un compteur qui s'incrémente à chaque accès réussi), ou TOTP (basé sur l'heure, donc change toutes les x secondes).<br>
Comment ca marche? Tu scannes le QR code de la page OTP de ton profil Glewlwyd dans ton application OTP préférée, ou tu recopies les paramètres, et paf!</p>
<h5 id="toc-webauthn">Webauthn</h5>
<p>La <a href="https://www.w3.org/TR/webauthn/">nouvelle API Javascript</a> permet de faire de l'authentification dans ton navigateur avec un composant externe. C'est supporté dans Firefox et Chrom[e|ium]. Tu dois utiliser un outil tiers qui signe une attestation permettant au serveur de vérifier que c'est le bon utilisateur qui se connecte. Tu sais que c'est le bon utilisateur car il a préalablement enregistré son composant Webauthn dans son profil Glewlwyd.</p>
<p>Ca marche avec les <a href="https://www.yubico.com/products/yubikey-hardware/">Yubikey</a> (FIDO2 pour les intimes) ou le <a href="https://developer.android.com/training/safetynet/attestation">téléphone Android</a> (Android SafetyNet).</p>
<p>D'autres formats d'authentification existent comme TPM, Packed ou Android Key mais comme je n'ai sous la main que des machins android ou des Yubikeys, je n'ai pas pu faire les autres. Avis aux amateurs!</p>
<h5 id="toc-envoi-dun-code-à-ton-adresse-courriel">Envoi d'un code à ton adresse courriel</h5>
<p>Simple, efficace, mais pas mal plus contraignant, parce que faut avoir accès à son courriel déjà, et faut avoir confiance dans le fait qu'il n'est pas compromis.</p>
<h5 id="toc-certificat-tls">Certificat TLS</h5>
<p>J'avoue que celui-là c'est plus un défi technologique qu'autre chose, en plus de trouver la méthode contraignante: tu dois sauvegarder le certificat dans ton navigateur, en demander un nouveau quand l'autre a expiré.<br>
De plus, je ne connais pas assez le standard donc ca se peut que des trucs importants m'aient échappé. J'aimerais beaucoup un avis éclairé sur celui-là, en toute modestie.</p>
<h4 id="toc-plugins">Plugins</h4>
<p>Comme je l'expliquais plus haut, les protocoles OAuth2 et OpenID Connect sont supportés. Comme dans la première version, les access tokens fournis sont des JWT.</p>
<p>Un JWT, ou <a href="https://fr.wikipedia.org/wiki/JSON_Web_Token">JSON Web Token</a> est un token signé, permettant d'incorporer au token des informations, et la signature garantit que l'information n'a pas été modifiée entre le serveur et le client.</p>
<p>C'est donc la méthode que j'ai choisie, ca permet au serveur de ressource qui mange le token de ne pas avoir à demander au serveur d'authentification si le token est valide ou non, il peut le vérifier tout seul.</p>
<p>Dans Glewlwyd, un plugin est vu plus ou moins comme une application autonome qui peut créer ses propres webservices pour ses propres besoins, tout en ayant accès à certaines ressources comme les utilisateurs ou les sessions.</p>
<p>Je ne l'ai pas encore fait mais si par exemple je veux faire un service pour permettre aux nouveaux utilisateurs de s'enregistrer ou un service <code>J'ai perdu mon mot de passe</code>, ca ira dans un plugin plutôt que dans l'application elle-même.</p>
<h3 id="toc-conclusion">Conclusion</h3>
<p>Avis aux curieux. L'application rentre en Release Candidate maintenant et ca serait cool d'avoir des retours et des avis.</p>
<div><a href="https://linuxfr.org/users/superzen/journaux/glewlwyd-2-0-serveur-sso-est-maintenant-en-rc1.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/118067/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/superzen/journaux/glewlwyd-2-0-serveur-sso-est-maintenant-en-rc1#comments">ouvrir dans le navigateur</a>
</p>
Babelouesthttps://linuxfr.org/nodes/118067/comments.atomtag:linuxfr.org,2005:News/371442016-03-04T08:52:12+01:002016-03-04T08:52:12+01:00Sortie de LemonLDAP::NG 1.9Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p><a href="http://lemonldap-ng.org">LemonLDAP::NG</a> est un logiciel libre d'authentification unique (<a href="https://fr.wikipedia.org/wiki/SSO" title="Définition Wikipédia">SSO</a>), contrôle d'accès et fédération d'identités. La version 1.9.0 a été publiée le 2 mars 2016.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f6c656d6f6e6c6461702d6e672e6f72672f77656c636f6d652f6c6f676f5f6c6c6e675f36303070782e706e67/logo_llng_600px.png" alt="Logo LemonLDAP::NG" title="Source : http://lemonldap-ng.org/welcome/logo_llng_600px.png"></p>
<p>LemonLDAP::NG est écrit en Perl et publié sous licence GPL. Cette nouvelle version majeure apporte de grands changements au logiciel comme le support OpenID Connect, une nouvelle interface d'administration et la compatibilité Nginx.</p></div><ul><li>lien nᵒ 1 : <a title="http://forge.ow2.org/forum/forum.php?forum_id=2506" hreflang="en" href="https://linuxfr.org/redirect/96565">Annonce de la sortie sur la forge OW2</a></li><li>lien nᵒ 2 : <a title="http://lemonldap-ng.org/download" hreflang="en" href="https://linuxfr.org/redirect/96566">Téléchargement</a></li><li>lien nᵒ 3 : <a title="http://lemonldap-ng.org/screenshots" hreflang="en" href="https://linuxfr.org/redirect/96567">Captures d'écran</a></li><li>lien nᵒ 4 : <a title="https://linuxfr.org/news/sortie-de-lemonldap-ng-1-4-6" hreflang="fr" href="https://linuxfr.org/redirect/96568">Précédente dépêche sur LinuxFR</a></li><li>lien nᵒ 5 : <a title="https://hub.docker.com/r/coudot/lemonldap-ng/" hreflang="fr" href="https://linuxfr.org/redirect/96569">LemonLDAP::NG sur DockerHub</a></li><li>lien nᵒ 6 : <a title="http://lemonldap-ng.org/references" hreflang="en" href="https://linuxfr.org/redirect/96570">Références</a></li></ul><div><h2 id="présentation-des-nouveautés">Présentation des nouveautés</h2>
<h3 id="openid-connect">OpenID Connect</h3>
<p><a href="http://openid.net/connect/">OpenID Connect</a> est un nouveau protocole de <a href="https://fr.wikipedia.org/wiki/SSO" title="Définition Wikipédia">SSO</a> porté par la fondation OpenID et basé sur le framework OAuth 2.0. Ce standard est adopté par de nombreux acteurs, comme par exemple <a href="https://developers.google.com/identity/protocols/OpenIDConnect">Google</a> qui l'utilise pour son authentification en remplacement de OpenID 2.0. L'État Français a lui aussi fait le choix de OpenID Connect pour sa nouvelle plate-forme <a href="https://doc.integ01.dev-franceconnect.fr/">France Connect</a>.</p>
<p>Il est donc désormais possible d'utiliser LemonLDAP::NG pour s'authentifier sur ces services :</p>
<ul>
<li><a href="http://lemonldap-ng.org/documentation/latest/authopenidconnect_google">Authentification sur Google</a></li>
<li><a href="http://lemonldap-ng.org/documentation/latest/authopenidconnect_franceconnect">Authentification sur France Connect</a></li>
</ul><p>En plus du rôle de client (Relying Party), LemonLDAP::NG a aussi le rôle de serveur (OpenID Provider) ce qui lui permet d'authentifier toute application compatible avec ce protocole.</p>
<h3 id="interface-dadministration">Interface d'administration</h3>
<p>L'interface d'administration, appelée aussi Manager, a été réécrite avec AngularJS afin d'améliorer son ergonomie et son utilisation. Pour les habitués des précédentes versions, sachez que désormais vous n'aurez plus à cliquer sur "Appliquer" à chaque changement de valeur, et que vous pourrez éditer tous les en-têtes ou toutes les règles dans un seul écran.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f6c656d6f6e6c6461702d6e672e6f72672f2f5f6d656469612f73637265656e73686f74732f312e392f6c656d6f6e6c6461705f6e675f6d616e616765725f2d5f323031362d30332d30325f31362e31362e32382e706e67/lemonldap_ng_manager_-_2016-03-02_16.16.28.png" alt="Manager" title="Source : http://lemonldap-ng.org//_media/screenshots/1.9/lemonldap_ng_manager_-_2016-03-02_16.16.28.png"></p>
<p>Cette nouvelle interface permet la navigation entre les différentes versions de la configuration, l'import/export de configuration (au format JSON), la duplication d'hôte virtuels.</p>
<p>L'interface propose aussi toujours un explorateur de sessions, avec comme nouveauté la possibilité de parcourir les sessions persistantes (sessions conservées entre chaque connexion d'un utilisateur). Le gestionnaire de notification est aussi présent, au même niveau fonctionnel que dans les précédentes versions.</p>
<h3 id="support-nginx">Support Nginx</h3>
<p>Bonne nouvelle pour les réfractaires à Apache, la réécriture du code du Handler (agent assurant la protection des applications) passant par l'implémentation d'une API a permis d'offir un support FastCGI. Un petit serveur FastCGI est désormais livré avec LemonLDAP::NG (paquet lemonldap-ng-fastcgi-server) et permet de contacter le portail, le Manager et le Handler depuis Nginx. </p>
<h3 id="attributs-cas">Attributs CAS</h3>
<p>Le serveur CAS de LemonLDAP::NG implémentait jusqu'à présent les versions 1.0 et 2.0. Désormais, une partie du protocole CAS 3.0 est pris en charge avec la possibilité de partager des attributs dans les réponses de validation CAS. Cela permet en particulier d'utiliser l'API <a href="https://wiki.jasig.org/display/CASC/phpCAS">PHP-CAS</a> et sa fonction getAttributes().</p>
<h3 id="mongodb">MongoDB</h3>
<p><a href="https://www.mongodb.org/">MongoDB</a> est utilisable pour le stockage des configurations et des sessions. Il s'ajoute à la liste des nombreux backends disponibles : Fichiers (JSON), DBI (MySQL, PgSQL, SQLite, …), LDAP, Redis.</p>
<h2 id="mettre-à-jour-sa-version">Mettre à jour sa version</h2>
<p>L'utilisation de fonctionnalités récentes de Perl contraint à restreindre les systèmes sur lesquels cette nouvelle version peut être installée. En particulier CentOS 5 et CentOS 6 ne sont pas utilisables.</p>
<p>D'autres changements techniques importants ont eu lieu et il est préférable d'avoir bien pris connaissances des <a href="http://lemonldap-ng.org/documentation/latest/upgrade">notes de mise à jour</a> avant de se lancer.</p>
<p>Enfin, nous espérons que cette nouvelle version apportera bonheur et prospérité à votre système d'information. Si vous êtes un utilisateur satisfait, vous pouvez le dire sur <a href="https://www.openhub.net/p/lemonldap-ng">OpenHub</a> et également faire partie de nos <a href="http://lemonldap-ng.org/references">références</a>.</p></div><div><a href="https://linuxfr.org/news/sortie-de-lemonldap-ng-1-9.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/108354/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/sortie-de-lemonldap-ng-1-9#comments">ouvrir dans le navigateur</a>
</p>
OUDOT ClémentZeroHeureNÿcohttps://linuxfr.org/nodes/108354/comments.atomtag:linuxfr.org,2005:Post/355692015-07-06T11:44:36+02:002015-07-06T11:44:36+02:00Authentification centralisée de services web.<p>Bonjour tout le monde,</p>
<p>J'ai une petite problématique à soumettre à la communauté :</p>
<p>Contexte :<br>
J'ai un serveur qui fait tourner un certain nombre de services :<br>
- Mail (postfix, dovecot, spamassassin, clamav accessible via impa (rouncube))<br>
- Cloud (owncloud)<br>
- Streaming (Madsonic)<br>
- Portail pour accéder à tout ça (Posh)</p>
<p>Pour l'instant, chaque service dispose de son propre service d'identification mais je compte centraliser tout ça avec un LDAP pour simplifier la gestion.</p>
<p>Jusque là, pas de soucis. Par contre, j'aimerai pousser encore plus loin et n'avoir à m'identifier qu'une seule fois pour tous mes services : je me connecte sur posh et j'accède à tout.<br>
Là, je sèche. Comment intégrer la gestion de session et comment faire en sorte que les autres services le prennent en compte ?</p>
<p>Une idée ?</p>
<p>z.</p><div><a href="https://linuxfr.org/forums/linux-debian-ubuntu/posts/authentification-centralisee-de-services-web.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/106237/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/linux-debian-ubuntu/posts/authentification-centralisee-de-services-web#comments">ouvrir dans le navigateur</a>
</p>
zerpexhttps://linuxfr.org/nodes/106237/comments.atom