Comment utiliser votre propre domaine sur les plateformes SaaS ?

Zeping Bai

Zeping Bai

April 9, 2024

Technology

Les domaines personnalisés par l'utilisateur sont une fonctionnalité largement utilisée sur les plateformes de services SaaS. Des plateformes bien connues comme Shopify ont fourni ce service pour offrir aux utilisateurs une expérience plus personnalisée et flexible.

Dans le modèle opérationnel conventionnel, les utilisateurs des plateformes SaaS achètent des services logiciels proposés par la plateforme pour créer des expériences utilisateur distinctives, servant ainsi les utilisateurs finaux. En tant que point de départ du service, les plateformes SaaS attribuent généralement un sous-domaine généré aléatoirement à chaque utilisateur comme point d'accès par défaut. Cependant, pour répondre à la demande d'adresses d'accès personnalisées, les plateformes prennent également en charge la configuration par les utilisateurs de leurs propres noms de domaine comme points d'accès, améliorant ainsi la reconnaissance de la marque et l'accessibilité pour les utilisateurs.

Cet article vise à approfondir la manière de mettre en œuvre efficacement la fonctionnalité de domaine personnalisé par l'utilisateur dans le développement pratique de produits, fournissant des insights et des références précieux pour les développeurs.

SaaS

Analyse du problème

Vous pourriez vous demander : Les utilisateurs ne peuvent-ils pas simplement réaliser cette fonctionnalité en pointant l'enregistrement DNS CNAME du domaine vers le domaine aléatoire fourni par la plateforme ? En réalité, la question est plus complexe, se concentrant principalement sur les deux aspects suivants :

  1. Les services internet modernes utilisent tous le protocole HTTPS pour assurer la sécurité des communications. Lorsque les utilisateurs finaux tentent d'accéder au site fourni par la plateforme SaaS, en utilisant le sous-domaine aléatoire fourni par la plateforme comme point d'entrée, il est possible d'utiliser directement un certificat TLS générique, garantissant ainsi qu'il n'y a pas de problème de gestion des certificats. À ce stade, la poignée de main entre les utilisateurs et le service HTTPS de la plateforme SaaS est fiable. Cependant, lors de l'utilisation d'un domaine personnalisé par l'utilisateur, la plateforme SaaS doit posséder un certificat de confiance pour ce domaine afin que le navigateur de l'utilisateur final puisse établir une connexion correcte, nécessitant que la plateforme accepte les certificats téléchargés par les utilisateurs ou fournisse des services de gestion de certificats hébergés.

  2. Après avoir établi une connexion sécurisée, la plateforme SaaS doit également identifier à quel locataire l'utilisateur final tente d'accéder sur la plateforme. Cela nécessite que la plateforme maintienne une table de correspondance entre les domaines et les identifiants de locataires, extrayant des informations spécifiques sur le locataire à partir des requêtes entrantes, telles que l'en-tête de requête Host, et interrogeant la table de correspondance pour trouver l'ID du locataire afin de renvoyer les données nécessaires au demandeur.

Gestion des certificats TLS

Services cloud leaders

Les principaux fournisseurs de services cloud tels qu'AWS (Amazon Web Services) et GCP (Google Cloud Platform) offrent des services complets de gestion des certificats et des interfaces API correspondantes, avec Cloudflare lançant même une solution dédiée, Cloudflare for SaaS, spécialement conçue pour les services SaaS.

Prenant AWS comme exemple, son service AWS Certificate Manager permet aux plateformes SaaS de délivrer facilement des certificats de confiance pour les domaines personnalisés configurés par les utilisateurs via son API. En tant que service de l'écosystème AWS, il s'intègre parfaitement avec d'autres fonctionnalités principales comme Elastic Load Balancer et CloudFront, permettant aux certificats délivrés par ACM d'être directement utilisés pour la terminaison TLS.

Avec ces services cloud, les plateformes peuvent gérer les certificats TLS de manière intégrée, ce qui semble en effet attrayant. Dans les premières étapes d'un service SaaS, l'utilisation de ces services cloud peut considérablement alléger la charge des développeurs, leur permettant de se concentrer davantage sur la mise en œuvre de la logique métier. Cependant, dans la quête d'une expérience utilisateur cohérente, ces services cloud exposent également certains problèmes potentiels.

Cloud dans les plateformes SaaS

Prenant AWS Certificate Manager comme exemple, il nécessite une vérification de la propriété du domaine lors de la délivrance des certificats. Ce processus exige que les propriétaires de domaine configurent des enregistrements CNAME spécifiques dans leurs enregistrements DNS pointant vers l'adresse de acm-validations.aws. De plus, cet enregistrement doit être maintenu pendant une période prolongée pour les opérations de renouvellement ultérieures des certificats. Cela signifie que les plateformes SaaS doivent exposer des détails d'implémentation spécifiques à la plateforme cloud aux utilisateurs. En outre, ce mécanisme n'adhère à aucun standard commun d'automatisation des certificats comme le protocole ACME. Par conséquent, les plateformes SaaS peuvent devenir étroitement liées aux services cloud AWS. Lorsqu'une plateforme SaaS a un grand nombre d'utilisateurs, la migration (nécessitant que chaque utilisateur réajuste ses enregistrements DNS) devient presque une tâche impossible.

De plus, les certificats de confiance délivrés par les services ACM ne supportent pas le téléchargement, ce qui signifie que ces certificats ne peuvent être utilisés que par d'autres services de l'écosystème AWS, rendant difficile leur extension facile à d'autres fournisseurs cloud, limitant ainsi la flexibilité multi-cloud.

Gestion automatisée des certificats

Avec Let's Encrypt et d'autres autorités de certification (CA) basées sur le protocole Automatic Certificate Management Environment (ACME, RFC8555) devenant progressivement mainstream, la gestion automatisée des certificats n'est plus exclusive aux services cloud. Aujourd'hui, tout développeur peut facilement mettre en œuvre la délivrance et le renouvellement automatiques des certificats, améliorant grandement l'utilisabilité et la sécurité des services.

La spécification ACME définit divers mécanismes de vérification de la propriété du domaine, y compris mais sans s'y limiter, DNS TXT, HTTP, TLS ALPN, etc., offrant aux demandeurs de certificats des options flexibles et variées. Dans le scénario SaaS, la méthode d'authentification HTTP est particulièrement adaptée. Les utilisateurs n'ont qu'à configurer des enregistrements DNS CNAME pour leurs domaines personnalisés, les pointant vers le domaine aléatoire alloué par la plateforme ou un point d'accès CNAME unifié. Par exemple, la plateforme peut exiger que les utilisateurs résolvent example.com vers cname.contoso.com, et ce point d'accès CNAME pointe vers le service HTTP auto-déployé par la plateforme. Cette conception simplifie le processus de délivrance des certificats, le rendant plus concis et efficace.

Une fois la configuration du domaine correcte, la plateforme peut invoquer l'API de la CA pour créer des commandes de certificats. La CA accédera alors au domaine de l'utilisateur via HTTP. Comme le domaine pointe déjà vers le point d'accès de la plateforme à ce moment, la plateforme peut facilement satisfaire les conditions de vérification spécifiques de la CA avec une chaîne aléatoire, complétant ainsi la vérification de la propriété du domaine et téléchargeant le certificat.

Ce mécanisme simplifie non seulement le processus de configuration de l'utilisateur, mais évite également les tracas de modifications fréquentes des enregistrements DNS. Plus important encore, il libère la plateforme des contraintes des fournisseurs de services cloud spécifiques, permettant aux plateformes SaaS de fournir une expérience utilisateur plus conviviale et cohérente.

De plus, l'utilisation de ce mécanisme ne signifie pas que les services CDN ou d'équilibrage de charge ne peuvent pas être utilisés pour la terminaison TLS dans le cloud. En fait, les services de gestion des certificats fournis par les fournisseurs de services cloud comme AWS supportent les développeurs dans l'importation de certificats auto-gérés via des API pour l'accès au trafic. Les développeurs n'ont qu'à compléter la délivrance des certificats dans leurs propres programmes puis importer le certificat dans le service de gestion des certificats du fournisseur de services cloud, réalisant ainsi une intégration transparente et une utilisation efficace des ressources cloud.

Systèmes multi-locataires

Après avoir géré avec succès les certificats TLS, le prochain défi est la gestion de la logique multi-locataire sur les plateformes SaaS. Étant donné que les plateformes SaaS ne servent pas uniquement les besoins spécifiques d'un petit nombre d'utilisateurs mais s'efforcent de fournir un ensemble unifié de fonctionnalités à un large éventail d'utilisateurs, leurs architectures système adoptent généralement des conceptions multi-locataires. Dans cette conception, la plateforme identifie différents locataires via des identifiants de locataire uniques et fournit des services correspondants à leurs utilisateurs finaux respectifs.

Gestion multi-locataire

La mise en œuvre des mécanismes d'identification des locataires est relativement simple. Comme la vérification de la propriété du domaine et la gestion des certificats sont nécessaires, les utilisateurs doivent configurer des domaines personnalisés dans la console de la plateforme SaaS et suivre les instructions du système pour configurer la résolution DNS. Une fois que le système a complété la configuration du certificat, les enregistrements des domaines personnalisés seront stockés dans le système et associés au locataire actuel. Par conséquent, chaque fois que le système reçoit une requête, il suffit d'extraire le champ Host de l'en-tête de la requête HTTP pour déterminer le domaine d'accès utilisé par le navigateur du client. Ensuite, en interrogeant l'enregistrement du locataire correspondant à ce domaine, le système peut rapidement identifier l'identifiant du locataire. Une fois l'identifiant du locataire obtenu, le système peut interroger et accéder précisément aux données du locataire correspondant.

Conclusion

Les domaines personnalisés sont une fonctionnalité centrale sur les plateformes SaaS visant à fournir aux utilisateurs une expérience d'accès plus personnalisée et flexible. Dans le processus de mise en œuvre de la fonctionnalité de domaine personnalisé, deux problèmes clés doivent être résolus : la gestion des certificats TLS et la gestion multi-locataire.

En résolvant ces deux problèmes, nous pouvons assurer la sécurité des communications et le service personnalisé dans l'identification des locataires, améliorant significativement la qualité du service et l'expérience utilisateur des plateformes SaaS. Cela contribuera à renforcer la confiance et la satisfaction des utilisateurs envers la plateforme, favorisant son développement durable.

Tags: