Divulgation : je suis ingénieur chez Auth0 .
Cela dépend d'un point majeur ... vous devez décider si:
- vous souhaitez consacrer directement (et indirectement de l'argent) un temps considérable à la création et / ou à la maintenance de votre propre fournisseur d'identité et serveur d'autorisation
- ou vous préférez dépenser directement de l'argent et utiliser un fournisseur d'authentification tiers comme Auth0.
Les deux options sont parfaitement viables du point de vue de vos besoins fonctionnels. Avec le développement personnalisé, vous contrôlez pleinement les fonctionnalités que vous décidez de prendre en charge, je vais donc concentrer une partie de la réponse sur la façon dont Auth0 peut répondre aux exigences que vous avez répertoriées .
Cependant, avant de passer à cela, quelle que soit votre décision, pour l'authentification, vous devez vous concentrer sur OpenID Connect au lieu d'OAuth2. Ce dernier sera plus applicable si vous prévoyez d'avoir également des API dans le mélange et pas seulement de diviser le monolithe en applications Web distinctes.
Comment migrer des utilisateurs existants vers un système basé sur Auth0?
Vous pouvez soit décider de continuer à utiliser votre base de données et compter sur Auth0 pour fournir toute la conformité avec les protocoles liés à l'authentification que vous devrez peut-être utiliser, soit migrer vos utilisateurs vers des bases de données gérées Auth0 et cesser de vous soucier de la façon dont vous stockez et validez les mots de passe.
Si vous préférez continuer à utiliser votre base de données, voir Authentifier les utilisateurs avec un nom d'utilisateur et un mot de passe à l'aide d'une base de données personnalisée
Les applications s'appuient souvent sur des bases de données utilisateur pour l'authentification. Auth0 vous permet de vous connecter facilement à ces référentiels et de les utiliser comme fournisseurs d'identité tout en préservant les informations d'identification de l'utilisateur et en fournissant de nombreuses fonctionnalités supplémentaires.
(Les documents font référence à MySQL à titre d'exemple, d'autres moteurs de base de données sont pris en charge)
D'autre part, vous pouvez déplacer en toute transparence les informations d'identification de l'utilisateur vers les bases de données Auth0 en tirant parti du processus de migration décrit dans Migrer les utilisateurs vers Auth0
Auth0 prend en charge la migration automatique des utilisateurs vers Auth0 à partir d'une connexion de base de données personnalisée. Cette fonctionnalité ajoute vos utilisateurs à la base de données Auth0 une par une à chaque connexion et évite de demander à vos utilisateurs de réinitialiser leurs mots de passe en même temps.
Vous pouvez également créer tous vos utilisateurs dans Auth0 via l'API de gestion si vous préférez que tous commencent à utiliser notre algorithme de hachage de mot de passe à la fois. Cela a pour effet secondaire d'obliger les utilisateurs à réinitialiser leur mot de passe.
Comment continuer à utiliser l'authentification en deux étapes personnalisée (questions de vérification)?
Le pipeline d'authentification fourni par Auth0 est entièrement personnalisable grâce à l'utilisation de règles . Cela signifie que même si vous n'avez eu à implémenter aucun élément lié au protocole, vous pouvez toujours affiner les petits détails sur la façon dont l'authentification se produit dans votre application.
Cela inclut la possibilité de continuer à utiliser vos questions de vérification existantes comme moyen de procéder à un processus d'authentification en deux étapes où l'utilisateur fournit un mot de passe initial vérifié par Auth0, puis vous lui demandez des informations supplémentaires à partir d'une règle personnalisée. (les règles sont juste Javascript donc les possibilités sont infinies)
Cependant, vous pouvez également décider de supprimer les questions de vérification et d'utiliser plutôt Auth0 Guardian pour augmenter la sécurité du processus d'authentification.
Comment personnaliser l'apparence de l'interface utilisateur d'authentification?
Avec Auth0, vous pouvez avoir une interface utilisateur d'authentification propre en un rien de temps en tirant parti des pages de connexion par défaut ou des widgets d'authentification comme Lock . Tous ces éléments prennent en charge un certain degré de personnalisation et vous pouvez toujours décider de faire votre propre interface utilisateur vous-même et d'utiliser à la place les bibliothèques Auth0 de niveau inférieur ( Auth0.js ) qui ne font aucune contrainte sur l'interface utilisateur.
Pour plus d'informations sur la personnalisation:
Comment empêcher les pages de consentement explicite?
Vous pouvez utiliser Auth0 à la fois comme fournisseur d'identité à des fins d'authentification et également comme serveur d'autorisation OAuth2 (actuellement disponible uniquement dans la région des États-Unis) pour vos API.
En tant que fournisseur d'identité, vous n'avez pas à vous soucier des pages de consentement, l'utilisateur s'authentifie avec ses informations d'identification gérées par Auth0 puis est redirigé vers votre application - c'est tout.
Dans OAuth2 en tant que scénario de service lorsque le consentement est activé, la feuille de route inclut l'autorisation de contourner les pages de consentement pour certaines applications.
Sur une note finale, cela semble être un projet très intéressant et stimulant que vous avez obtenu, donc bonne chance indépendamment de votre décision finale.
J'ai déjà vécu quelque chose de similaire lors d'un précédent travail lorsque j'ai dû réimplémenter le système d'authentification d'une application héritée. Nous avons implémenté notre propre fournisseur d'identité et serveur d'autorisation et pour être honnête, j'ai toujours le sentiment que nous avons peut-être oublié quelque chose de vraiment essentiel.
Je pense que c'est le plus gros problème avec le déploiement de votre propre sécurité, il y aura des occasions où les délais imposent des raccourcis et la sécurité n'est pas vraiment un bon domaine pour faire des raccourcis.
Si vous avez d'autres questions, faites-moi savoir si vous pensez que je pourrai être utile.