IdAAS : La gestion des utilisateurs c’est plus mon problème.

| 7 minutes read

IdAAS (Identity As A Service) permet de gérer nos utilisateurs, une fonctionnalité à la fois nécessaire, sans grande valeur ajoutée et critique pour le fonctionnement et la confiance des utilisateurs. D’autre part nos applications sont souvent multi canal et multi plateforme, on a donc besoin de s’intégrer avec la gestion d’identité depuis différents clients. Enfin les architectures modernes ont tendance à découper nos applications en petites entités métiers découplées (aka microservices) qui doivent elles aussi être sécurisées (authentification, gestion des accès).

Dans ce contexte les plateformes IdAAS (Identity As A Service) prennent tout leur sens, elles permettent d’externaliser la gestion des données de compte utilisateurs. Elles couvrent l’ensemble des problématiques associées, offrent des intégrations (Software Development Kit) pour les plateformes clientes et se basent sur des standards (OpenId, OAuth, SAML, JWT …) pour l’intégration avec les services métiers.

Ces plateformes reprennent de vieux concept comme “Identity and Access Management” (IAM) et “Single Sign On” (SSO) qui sont des problématiques bien connues des systèmes d’information. Les acteurs historiques parlent aussi de IAM cloud, la tendance est alors à une externalisation de la notion d’IAM pour les grands groupes au sein de leur Système d’Information (Bureautique, Compte utilisateur interne …).

IdAAS – Identity As A Service

Fonctionnalités

    • Fournisseur d’identité
      • Intégration avec les réseaux sociaux et services tiers (OAuth)
      • Gestion dans une base de données hébergée
      • Association des identités (différents réseaux sociaux, base interne)
    • Gestion de l’inscription
      • mail de confirmation
      • vérification d’email
    • Mot de passe oublié
      • Templates d’email
    • Authentification avancée
      • Magic Link :  une technique qui permet de générer un jeton que l’on peut mettre à disposition par email par exemple pour faire de l’auto login
      • Authentification multi facteurs
    • Autorisation / Accès, Gestion de profil, droits.
      • Gestion de profil, groupes
      • Certaines plateformes proposent des systèmes d’extensibilité pour les autorisations plus fines.
    • Composants, intégration (JWT, SDK)
      • L’un des principaux avantages de ces plateformes sont les SDK de développement pour les clients (Mobile, Web)
      • L’utilisation des standards pour l’intégration avec les services (y compris des services tiers)
    • Single sign on
      • Permet d’utiliser les jetons d’authentification des réseaux sociaux pour authentifier l’utilisateur

Architecture

idaas

Pourquoi déléguer ça à un service

L’authentification et la gestion d’accès est prise en charge dans les frameworks applicatifs modernes (angular full stack, mean.js, jhipster, grails ….). Ils utilisent une approche composant (Passport, Spring Social, Spring Security …) et de la génération de code. Cette approche est tout à fait valable dans une application isolée, mais elle crée un couplage plus fort.

La première des raisons est sans doute la factorisation de la problématique “IAM”. En effet, vous pouvez vous concentrer sur le côté métier de vos applications et leur fournir une manière homogène de s’identifier. D’autre part, vous pouvez expérimenter rapidement en créant de nouveaux services ou applications et disposer immédiatement d’une gestion des utilisateurs avec votre base d’utilisateurs.

La deuxième raison est plus qualitative, la sécurité c’est un métier et en utilisant ce service vous déléguez certaines parties à un spécialiste. Dans cette article “The Basics of Web Application Security” deux des points fondamentaux “Authenticate Users Safely” et “Hash and Salt Your Users’ Passwords” sont directement pris en charge par le service IdAAS. D’autre part ces services ont souvent un blog permettant de suivre les différentes actualités de la sécurité applicative, d’échanger sur les bonnes pratiques. Sans parler du support qui permet d’échanger et de valider vos options de sécurité.

On peut même envisager de créer un service interne sur ses propres serveurs (“On Premise”), cette approche reste assez standard (keycloack, openAM). Et pourquoi pas développer un service sur la base des frameworks et composants cités précédemment.

L’approche service doit surtout permettre un couplage faible et une standardisation au sein des applications et services métiers.

Un levier technique : Json Web Token

Les architectures de types “Service Oriented Architecture” avaient déjà mis en place des couches de sécurité avec délégation (SAML, WS-Security).

Le réel changement c’est la popularisation du Json Web Token (JWT). En effet le principe de validation cryptographique permet de pouvoir vérifier localement la provenance et le contenu du jeton. D’autre part, le principe de “Claims” permet de transmettre des données attachées à l’identité de l’utilisateur et peut rendre l’authentification et la gestion d’accès complètement stateless coté applicatif.

Pour une vision plus globale de la technologie JWT je vous conseille l’excellente présentation de Hubert SABLONNIÈRE à Devoxx FR.

Concentrez vous sur la valeur de vos applications

L’approche DDD (Domain Driven Design) a pour objectif de faire correspondre au mieux l’organisation logique des applications avec les concepts et processus métiers. Dans cette démarche un point important est la notion de “Core Domain” que l’on peut définir comme étant la partie métier qui définit la valeur ajoutée du logiciel. La philosophie du DDD est d’isoler ce “Core Domain” et de concentrer les efforts de développement sur celui-ci. Le découpage en “sous domaines” permet de faciliter leur externalisation en privilégiant un couplage faible.

Comme nous l’avons vu, la problématique d’IAM est transverse à toutes les applications et elle est une dimension primordiale mais sans réelle valeur ajoutée métier. Ainsi, externaliser la gestion des utilisateurs dans un “sous domaine” géré par un fournisseur IdAAS est un concept intéressant dans l’ approche DDD.

Le coût

L’IdAAS est un service, la facturation est majoritairement au mois en fonction d’un volume. On ne rentrera pas ici dans les détails des différentes grilles de prix, mais il est important de souligner quelles sont les considérations à prendre en compte pour évaluer et comparer ce coût.

    • Mise en place
      • Développement, Intégration de composants (Passport.js, Spring Security …) sur les services métiers
      • Développement de la couche de gestion d’identité sur les clients
      • Gestion des mails (Vérification d’email, Perte de mot de passe)
    • Maintenance
      • Le couplage faible  avec un service, permet d’éviter les difficultés de migration lors des montées de version des composants de gestion de l’identité
      • La maintenance est assurée par un tiers (l’extensibilité proposée par ces plateformes est un plus, elle permet de rajouter des fonctionnalités si nécessaire)
    • Expertise
      • L’intégration de ces services permet de bénéficier de leur savoir faire
      • Les blogs techniques de ces services permettent aussi de suivre l’actualité sur ce concept  et les bonnes pratiques

Conclusion

L’IdAAS devient vraiment une opportunité intéressante dans les architectures applicatives actuelles. Les nouvelles plateformes IdAAS (Auth0, Stormpath …) sont accessibles (coût, intégration SAAS) pour des applications de toutes tailles.

Sur un plan légal il est important de regarder les gestions de confidentialité, de sécurisation et de localisation des  données. En fonction des normes de sécurité de vos applications, ces critères peuvent être prohibitifs. Mais il est de l’intérêt de ces acteurs d’être en conformité avec les standards les plus exigeants et on peut penser qu’ils feront tout pour satisfaire à ces normes.

Vous démarrez une nouvelle application ou vous allez re-écrire la gestion des utilisateurs, jetez un coup d’oeil à l’IdAAS.

Share Button

Olivier Bearn Author: Olivier Bearn

Artisan développeur, passionné d'architecture logicielle, je cherche à optimiser la communication au sein des équipes produits.

J'aime tester de nouvelles choses et transmettre mes connaissances.


#DDD #VALUE #DEV #DEVOPS #DELIVERY #TEST #AGILE

Leave a Reply

Required fields are marked *.


CommentLuv badge