Maison > développement back-end > Tutoriel Python > L'authentification unique (SSO) a expliqué

L'authentification unique (SSO) a expliqué

Jennifer Aniston
Libérer: 2025-02-25 08:32:09
original
316 Les gens l'ont consulté

L'authentification unique (SSO) a expliqué

Les plats clés

  • La connexion unique (SSO) est un processus qui permet à un utilisateur d'accéder à plusieurs services après l'authentification de son identité qu'une seule fois, ce qui élimine la nécessité de confirmer à plusieurs reprises l'identité via des mots de passe ou d'autres systèmes.
  • La mise en œuvre de SSO peut être bénéfique lors du développement d'un produit qui interagit avec d'autres services ou lors de l'utilisation de services tiers, car il garantit que les utilisateurs n'ont pas besoin de se connecter séparément à chaque service.
  • Bien que le processus SSO varie légèrement entre différents services, l'idée de base reste la même: générer un jeton et la valider. Des mesures de sécurité solides, telles que l'authentification multi-facteurs et les mises à jour régulières de mot de passe, devraient être implémentées pour atténuer les risques associés à SSO.

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 d'authentification

Le processus de base du SSO est le suivant:

  • La première étape consiste à se connecter au service principal (Facebook ou Google, par exemple).
  • Lorsque vous visitez un nouveau service, il vous redirige vers le service d'origine (ou parent) pour vérifier si vous êtes connecté à celui-ci.
  • Un jeton OTP (mot de passe ponctuel) est renvoyé.
  • Le jeton OTP est ensuite vérifié par le nouveau service des serveurs du parent, et ce n'est qu'après une vérification réussie, l'entrée accordée par l'utilisateur.

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.

SSO pour vos propres produits

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.

le disqus sso

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.

Génération du message

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>
Copier après la connexion
Copier après la connexion

Initialisation des commentaires Disqus

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>
Copier après la connexion
Copier après la connexion

À 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é.

L'authentification unique (SSO) a expliqué

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.

L'authentification unique (SSO) a expliqué

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.

L'authentification unique (SSO) a expliqué

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>
Copier après la connexion

Conclusion

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.

Les questions fréquemment posées sur la connexion unique (SSO)

Quel est l'objectif principal de la connexion unique (SSO)?

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é.

Comment fonctionne la connexion unique (SSO)?

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.

Quels sont les avantages de l'utilisation d'une connexion unique (SSO)?

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.

Y a-t-il des risques associés à la connexion unique (SSO)?

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.

Quelle est la différence entre l'authentification unique (SSO) et l'authentification multi-facteurs ( MFA)?

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.

peut être utilisé (SSO) unique avec des applications mobiles?

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.

Comment la connexion unique (SSO) améliore-t-elle l'expérience utilisateur?

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.

Quelles industries peuvent bénéficier d'une connexion unique (SSO)?

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.

Comment la connexion unique (SSO) améliore-t-elle la sécurité?

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.

La connexion unique (SSO) peut-elle être intégrée aux systèmes existants?

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal