Lorsque vous développez un produit pour les masses, il est très rare que vous proposiez un produit totalement autonome qui n'interagit avec aucun autre service. Lorsque vous utilisez un service tiers, l'authentification des utilisateurs est une tâche relativement difficile, car différentes applications ont des mécanismes différents en place pour authentifier les utilisateurs. Une façon de résoudre ce problème est par le biais d'une seule connexion, ou SSO.
Le signe unique (SSO) est un processus qui permet à un utilisateur d'accéder à plusieurs services après avoir suivi l'authentification de l'utilisateur (c'est-à-dire la connexion) qu'une seule fois. Cela implique l'authentification dans tous les services auxquels l'utilisateur a donné l'autorisation, après s'être connecté à un service principal. Parmi d'autres avantages, SSO évite la tâche monotone de confirmer l'identité encore et encore via des mots de passe ou d'autres systèmes d'authentification.
Regardons plus en détail SSO et nous utiliserons un service très connu pour démontrer ses utilisations et avantages.
Le processus de base du SSO est le suivant:
Bien que la fabrication de l'API pour SSO soit une tâche fastidieuse, en particulier dans la gestion de la sécurité, la mise en œuvre est une tâche relativement plus facile!
Un bon exemple de l'utilisation de SSO est dans les services de Google. Vous n'avez qu'à être connecté à un seul compte Google principal pour accéder à différents services comme YouTube, Gmail, Google, Google Analytics, et plus encore.
Lorsque vous construisez votre propre produit, vous devez vous assurer que tous ses composants utilisent la même authentification. C'est facile à faire lorsque tous vos services sont confinés à votre propre base de code. Cependant, avec des services populaires comme le système de commentaires Disqus et Freshdesk pour la gestion de la relation client, c'est une bonne idée de les utiliser au lieu de créer le vôtre à partir de zéro.
mais un problème se pose avec l'utilisation de ces services tiers. Comme leur code est hébergé sur ses serveurs respectifs, l'utilisateur doit se connecter explicitement sur ses services même s'ils sont connectés à votre site Web. La solution, comme mentionné, est la mise en œuvre de SSO.
Idéalement, vous avez une paire de clés - publique et privée. Vous générez un jeton pour un utilisateur connecté et l'envoyez au service avec votre clé publique pour la vérification. Après vérification, l'utilisateur est automatiquement connecté au service. Pour mieux comprendre cela, utilisons un vrai exemple.
Disqus est un service d'hébergement de commentaires populaire pour les sites Web, qui offre une charge de fonctionnalités telles que l'intégration des réseaux sociaux, les outils de modération, l'analyse et même la possibilité d'exporter des commentaires. Il a commencé comme une startup YCombinator et est devenu l'un des sites Web les plus populaires au monde!
Comme le système de commentaires Disqus est intégré dans vos pages, il est important que l'utilisateur n'ait pas besoin de se connecter pour une deuxième fois dans Disqus s'il est déjà connecté sur votre site Web. Disqus a une API avec une documentation approfondie sur la façon d'intégrer SSO.
Vous générez d'abord une clé appelée Remote_auth_S3 pour un utilisateur connecté à l'aide de vos clés API privées et publiques Disquus. Vous êtes fourni les clés publiques et privées lorsque vous enregistrez SSO en tant qu'add-on gratuit dans Disqus.
Vous transmettez les informations de l'utilisateur (ID, nom d'utilisateur et e-mail) à Disqus pour l'authentification en tant que JSON. Vous générez un message que vous devez utiliser tout en rendant le système Disqus sur votre page. Pour mieux le comprendre, jetons un coup d'œil à un exemple écrit en python.
Les exemples de code dans quelques langages populaires comme PHP, Ruby et Python sont fournis par Disqus sur Github.
Exemple de code Python (trouvé sur GitHub pour connecter un utilisateur sur votre site Web est le suivant.
<span>import base64 </span><span>import hashlib </span><span>import hmac </span><span>import simplejson </span><span>import time </span> DISQUS_SECRET_KEY <span>= '123456' </span>DISQUS_PUBLIC_KEY <span>= 'abcdef' </span> <span>def get_disqus_sso(user): </span> <span># create a JSON packet of our data attributes </span> data <span>= simplejson.dumps({ </span> <span>'id': user['id'], </span> <span>'username': user['username'], </span> <span>'email': user['email'], </span> <span>}) </span> <span># encode the data to base64 </span> message <span>= base64.b64encode(data) </span> <span># generate a timestamp for signing the message </span> timestamp <span>= int(time.time()) </span> <span># generate our hmac signature </span> sig <span>= hmac.HMAC(DISQUS_SECRET_KEY, '%s %s' % (message, timestamp), hashlib.sha1).hexdigest() </span> <span># return a script tag to insert the sso message </span> <span>return """<script type="text/javascript"> </span><span> var disqus_config = function() { </span><span> this.page.remote_auth_s3 = "%(message)s %(sig)s %(timestamp)s"; </span><span> this.page.api_key = "%(pub_key)s"; </span><span> } </span><span> </script>""" % dict( </span> message<span>=message, </span> timestamp<span>=timestamp, </span> sig<span>=sig, </span> pub_key<span>=DISQUS_PUBLIC_KEY, </span> <span>)</span>
Vous envoyez ensuite ce jeton généré, ainsi que votre clé publique à Disqus dans une demande JavaScript. Si l'authentification est vérifiée, le système de commentaires généré a déjà connecté l'utilisateur. Si vous avez des problèmes, vous pouvez demander de l'aide dans les développeurs Disqus Google Group.
Nous pouvons voir la mise en œuvre de SSO sur le Blog Bowl, qui est un répertoire de blogs développé dans Python / Django. Si vous êtes connecté au site Web, vous devez être connecté lorsque le système de commentaires Disqus est rendu. Dans cet exemple, l'objet de la personne stocke l'ID (qui est unique pour chaque personne sur le site), le courrier électronique et le nom de Pen_name. Le message est généré comme indiqué ci-dessous.
<span>import base64 </span><span>import hashlib </span><span>import hmac </span><span>import simplejson </span><span>import time </span> DISQUS_SECRET_KEY <span>= '123456' </span>DISQUS_PUBLIC_KEY <span>= 'abcdef' </span> <span>def get_disqus_sso(user): </span> <span># create a JSON packet of our data attributes </span> data <span>= simplejson.dumps({ </span> <span>'id': user['id'], </span> <span>'username': user['username'], </span> <span>'email': user['email'], </span> <span>}) </span> <span># encode the data to base64 </span> message <span>= base64.b64encode(data) </span> <span># generate a timestamp for signing the message </span> timestamp <span>= int(time.time()) </span> <span># generate our hmac signature </span> sig <span>= hmac.HMAC(DISQUS_SECRET_KEY, '%s %s' % (message, timestamp), hashlib.sha1).hexdigest() </span> <span># return a script tag to insert the sso message </span> <span>return """<script type="text/javascript"> </span><span> var disqus_config = function() { </span><span> this.page.remote_auth_s3 = "%(message)s %(sig)s %(timestamp)s"; </span><span> this.page.api_key = "%(pub_key)s"; </span><span> } </span><span> </script>""" % dict( </span> message<span>=message, </span> timestamp<span>=timestamp, </span> sig<span>=sig, </span> pub_key<span>=DISQUS_PUBLIC_KEY, </span> <span>)</span>
À l'avant, vous imprimez simplement cette variable pour exécuter le script. Pour une démo en direct, vous pouvez visiter cet article sur le Blog Bowl et vérifier les commentaires rendus en bas. Naturellement, vous ne seriez pas connecté.
Ensuite, connectez-vous au blog, visitez à nouveau le même article (vous devez vous connecter pour voir l'effet). Notez que vous êtes connecté au système de commentaires ci-dessous.
Une autre fonctionnalité intéressante que le Blog Bowl fournit est l'anonymat lors de la publication de contenu (comme cet article). Pensez à une situation où vous souhaitez qu'un utilisateur publie des réponses aux commentaires sur Disqus en tant qu'utilisateur anonyme (comme sur Quora). Nous avons pris le moyen facile de sortir et a ajouté un grand nombre à l'identifiant. Pour associer un e-mail unique pour l'utilisateur (afin qu'il n'apparaît pas avec d'autres commentaires de l'utilisateur), nous générons également un e-mail unique. Cela maintient vos commentaires anonymes, mais ne le combine pas avec votre profil d'origine ou vos commentaires anonymes par d'autres utilisateurs.
et voici le code:
sso <span>= get_disqus_sso({ </span> <span>'id': person.id, </span> <span>'email': person.user.email, </span> <span>'username': person.pen_name </span><span>})</span>
Bien que les processus SSO pour différents services varient légèrement, l'idée de base derrière elles est la même - générer un jeton et la valider! J'espère que ce post vous a aidé à comprendre comment les applications intègrent SSO et peut-être que cela vous aidera à implémenter SSO vous-même.
Si vous avez des corrections, des questions ou avez vos propres expériences à partager avec SSO, n'hésitez pas à commenter.
L'objectif principal de la connexion unique (SSO) est de simplifier le processus d'authentification de l'utilisateur en permettant aux utilisateurs d'accéder à plusieurs applications ou sites Web avec un seul ensemble d'identification de connexion. Cela élimine le besoin de se souvenir de plusieurs noms d'utilisateur et mots de passe, améliorant ainsi la commodité et la productivité des utilisateurs. SSO améliore également la sécurité en réduisant les chances de mauvaise gestion du mot de passe et d'accès non autorisé.
SSO fonctionne-t-il en établissant une relation de confiance entre plusieurs applications ou sites Web. Lorsqu'un utilisateur se connecte à une application, le système SSO authentifie les informations d'identification de l'utilisateur et émet un jeton de sécurité. Ce jeton est ensuite utilisé pour authentifier l'utilisateur pour d'autres applications dans le système SSO, éliminant le besoin de connexions multiples.
SSO offre plusieurs avantages. Il simplifie l'expérience utilisateur en réduisant le besoin de connexions multiples, en gagnant ainsi du temps et en réduisant la frustration. Il améliore également la sécurité en minimisant le risque de violations liées au mot de passe. De plus, il peut réduire les coûts informatiques en diminuant le nombre de demandes de réinitialisation de mot de passe.
Bien que SSO offre de nombreux avantages, il également Livré avec des risques potentiels. Si les informations d'identification SSO d'un utilisateur sont compromises, un attaquant peut accéder à toutes les applications liées à ces informations d'identification. Par conséquent, il est crucial de mettre en œuvre de solides mesures de sécurité, telles que l'authentification multi-facteurs et les mises à jour régulières de mot de passe, pour atténuer ces risques.
SSO et MFA sont tous deux des méthodes d'authentification, mais elles servent des objectifs différents. SSO simplifie le processus de connexion en permettant aux utilisateurs d'accéder à plusieurs applications avec un seul ensemble d'identification. D'un autre côté, MFA améliore la sécurité en obligeant les utilisateurs à fournir deux ou plusieurs formes d'identification avant d'accorder l'accès.
Oui , SSO peut être utilisé avec des applications mobiles. De nombreuses solutions SSO offrent une prise en charge mobile, permettant aux utilisateurs d'accéder à plusieurs applications sur leurs appareils mobiles avec un seul ensemble d'identification.
SSO Améliore l'expérience utilisateur en simplifiant le processus de connexion. Les utilisateurs n'ont qu'à se souvenir uniquement d'un ensemble d'identification, réduisant la frustration des mots de passe oubliés. Cela fait également gagner du temps, car les utilisateurs n'ont pas besoin de saisir à plusieurs reprises leurs informations d'identification lors de l'accès à différentes applications.
pratiquement n'importe quelle industrie peut bénéficier de SSO. Les industries qui reposent fortement sur plusieurs applications, telles que les soins de santé, l'éducation, la finance et la technologie, peuvent particulièrement bénéficier de la commodité et de la sécurité fournit.
SSO améliore la sécurité en réduisant le nombre de mots de passe dont les utilisateurs doivent se souvenir et gérer. Cela diminue la probabilité de mots de passe faibles ou réutilisés, qui sont des cibles communes pour les cyberattaques. De plus, de nombreuses solutions SSO intègrent des mesures de sécurité supplémentaires, telles que l'authentification et le cryptage multi-facteurs, pour protéger davantage les données des utilisateurs.
Oui, la plupart des solutions SSO peuvent être intégrées aux systèmes existants. Cependant, le processus d'intégration peut varier en fonction de la solution SSO spécifique et des systèmes en place. Il est important de travailler avec une équipe informatique expérimentée ou un fournisseur SSO pour assurer une intégration fluide et sécurisée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!