Heim >Backend-Entwicklung >Python-Tutorial >Single Sign-On (SSO) erklärt

Single Sign-On (SSO) erklärt

Jennifer Aniston
Jennifer AnistonOriginal
2025-02-25 08:32:09317Durchsuche

Single Sign-On (SSO) erklärt

Key Takeaways

  • Single Sign-On (SSO) ist ein Prozess, mit dem ein Benutzer auf mehrere Dienste zugreifen kann, nachdem er seine Identität nur einmal authentifiziert hat, was die Notwendigkeit der wiederholten Bestätigung der Identität durch Passwörter oder andere Systeme beseitigt.
  • Implementierung von SSO kann bei der Entwicklung eines Produkts von Vorteil sein, das mit anderen Diensten interagiert oder bei der Verwendung von Diensten von Drittanbietern sicherstellt, dass sich Benutzer nicht separat bei jedem Dienst anmelden müssen.
  • Während der SSO -Prozess in verschiedenen Diensten geringfügig variiert, bleibt die Grundidee gleich: generieren ein Token und validieren. Starke Sicherheitsmaßnahmen wie Multi-Faktor-Authentifizierung und reguläre Kennwortaktualisierungen sollten implementiert werden, um die mit SSO verbundenen Risiken zu verringern.

Wenn Sie ein Produkt für die Massen entwickeln, ist es sehr selten, dass Sie ein völlig eigenständiges Produkt entwickeln würden, das nicht mit einem anderen Service interagiert. Wenn Sie einen Dienst von Drittanbietern verwenden, ist die Benutzerauthentifizierung eine relativ schwierige Aufgabe, da verschiedene Anwendungen unterschiedliche Mechanismen haben, um Benutzer zu authentifizieren. Eine Möglichkeit, dieses Problem zu lösen, besteht

einzelnes Anzeichen für (SSO) ist ein Prozess, der es einem Benutzer ermöglicht, auf mehrere Dienste zuzugreifen, nachdem die Benutzerauthentifizierung (d. H. Anmelden) nur einmal durchgeführt wurde. Dies beinhaltet die Authentifizierung in allen Diensten, die der Benutzer nach dem Anmelden in einem primären Dienst die Berechtigung erteilt hat. SSO vermeidet unter anderem die monotone Aufgabe, die Identität immer wieder durch Passwörter oder andere Authentifizierungssysteme zu bestätigen.

Schauen wir uns SSO ausführlicher an und wir werden einen sehr bekannten Dienst anwenden, um seine Verwendungen und Vorteile zu demonstrieren.

Der Authentifizierungsprozess

Der Grundprozess von SSO ist wie folgt:

    Der erste Schritt ist die Anmeldung beim Hauptdienst (zum Beispiel Facebook oder Google).
  • Wenn Sie einen neuen Service besuchen, leitet er Sie zum ursprünglichen (oder übergeordneten) Dienst um, um zu überprüfen, ob Sie bei diesem angemeldet sind.
  • Ein OTP (einmaliges Passwort) Token wird zurückgegeben.
  • Das OTP -Token wird dann durch den neuen Dienst von den Servern des Elternteils verifiziert, und erst nach einer erfolgreichen Überprüfung ist der Benutzer erteilt.
  • Obwohl es eine mühsame Aufgabe ist, die API für SSO zu machen, ist die Implementierung eine relativ einfachere Aufgabe!

Ein gutes Beispiel für die Verwendung von SSO ist in den Diensten von Google. Sie müssen nur für ein primäres Google -Konto angemeldet werden, um auf verschiedene Dienste wie YouTube, Google Mail, Google, Google Analytics und mehr zuzugreifen.

SSO für Ihre eigenen Produkte

Wenn Sie Ihr eigenes Produkt bauen, müssen Sie sicherstellen, dass alle Komponenten dieselbe Authentifizierung verwenden. Dies ist einfach zu tun, wenn alle Ihre Dienste auf Ihre eigene Codebasis beschränkt sind. Bei beliebten Diensten wie Disqus Kommentarsystem und Freshdesk für das Kundenbeziehungsmanagement ist es jedoch eine gute Idee, diese zu verwenden, anstatt Ihre eigenen von Grund auf neu zu erstellen.

, aber ein Problem tritt durch die Nutzung solcher Dienste von Drittanbietern auf. Da ihr Code auf seinen jeweiligen Servern gehostet wird, muss sich der Benutzer explizit bei seinen Diensten anmelden, auch wenn er auf Ihrer Website angemeldet ist. Die Lösung ist, wie erwähnt, die Implementierung von SSO.

Idealerweise erhalten Sie ein Paar Schlüssel - öffentlich und privat. Sie generieren ein Token für einen angemeldeten Benutzer und senden ihn zusammen mit Ihrem öffentlichen Schlüssel zur Überprüfung an den Dienst. Bei Überprüfung wird der Benutzer automatisch in den Dienst angemeldet. Um dies besser zu verstehen, verwenden wir ein echtes Beispiel.

der disqus sso

disqus ist ein beliebter Kommentar -Hosting -Service für Websites, der eine Menge Funktionen wie Social Network Integration, Moderation Tools, Analytics und sogar die Möglichkeit bietet, Kommentare zu exportieren. Es begann als Ycombinator -Startup und hat sich zu einer der beliebtesten Websites der Welt entwickelt!

Da das DISQUS -Kommentarsystem in Ihre Seiten eingebettet ist, ist es wichtig, dass sich der Benutzer innerhalb von DISQUS nicht zum zweiten Mal anmelden muss, wenn er oder sie bereits auf Ihrer Website angemeldet ist. Disqus hat eine API mit umfassender Dokumentation zur Integration von SSO.

Sie generieren zunächst einen Schlüssel namens remote_auth_s3 für einen angemeldeten Benutzer, der Ihre privaten und öffentlichen Disqus -API -Schlüssel verwendet. Sie erhalten die öffentlichen und privaten Schlüssel, wenn Sie SSO als kostenloses Add-On in Disqus registrieren.

Sie übergeben die Informationen des Benutzers (ID, Benutzername und E -Mail) an die Authentifizierung als JSON. Sie generieren eine Nachricht, die Sie verwenden müssen, während Sie das ISQUS -System auf Ihrer Seite rendern. Um es besser zu verstehen, schauen wir uns ein Beispiel in Python an.

Die Code -Beispiele in einigen beliebten Sprachen wie Php, Ruby und Python werden von disqus auf Github bereitgestellt.

Generierung der Nachricht

Beispielpython -Code (auf GitHub gefunden, um sich in einem Benutzer auf Ihrer Website anzumelden, lautet wie folgt.

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

Initialisieren von Disqus -Kommentaren

Sie senden dieses generierte Token zusammen mit Ihrem öffentlichen Schlüssel in eine JavaScript -Anfrage zusammen mit Ihrem öffentlichen Schlüssel. Wenn die Authentifizierung überprüft wird, hat das generierte Kommentarsystem den Benutzer bereits angemeldet. Wenn Sie Probleme haben, können Sie in den ISQUS -Entwicklern Google Group um Hilfe bitten.

Wir können die Implementierung von SSO im Blog Bowl sehen, ein Verzeichnis von Blogs, die in Python/Django entwickelt wurden. Wenn Sie auf der Website angemeldet sind, sollten Sie angemeldet sein, wenn das Disqus -Kommentarsystem gerendert wird. In diesem Beispiel speichert das Personobjekt die ID (die für jede Person auf der Website eindeutig ist), E -Mail und Pen_Name. Die Nachricht wird wie unten gezeigt generiert.

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

Im vorderen Ende drucken Sie diese Variable nur, um das Skript auszuführen. Für eine Live -Demo können Sie diesen Beitrag in der Blog -Schüssel besuchen und die unten unteren Kommentare überprüfen. Natürlich würden Sie nicht angemeldet.

Single Sign-On (SSO) erklärt

Melden Sie sich als nächstes in den Blog Bowl an und besuchen Sie denselben Beitrag erneut (Sie müssen sich anmelden, um den Effekt anzuzeigen). Beachten Sie, dass Sie im folgenden Kommentarsystem angemeldet sind.

Single Sign-On (SSO) erklärt

Eine weitere interessante Funktion, die der Blog Bowl bietet, ist Anonymität beim Posten von Inhalten (wie dieser Beitrag). Stellen Sie sich eine Situation vor, in der Sie möchten, dass ein Benutzer Antworten auf Kommentare zu Disqus als anonymer Benutzer (wie auf Quora) veröffentlichen. Wir haben den einfachen Ausweg genommen und eine große Anzahl an die ID angehängt. Um eine eindeutige E -Mail für den Benutzer zu verknüpfen (damit sie nicht zusammen mit anderen Kommentaren des Benutzers angezeigt wird), generieren wir auch eine eindeutige E -Mail. Dies hält Ihre anonymen Kommentare zusammen, kombiniert es jedoch nicht mit Ihrem ursprünglichen Profil oder anonymen Kommentaren anderer Benutzer.

Single Sign-On (SSO) erklärt

Und hier ist der 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>

Schlussfolgerung

Obwohl die SSO -Prozesse für verschiedene Dienste geringfügig variieren, ist die Grundidee dahinter dieselbe - erzeugen Sie ein Token und validieren Sie es! Ich hoffe, dieser Beitrag hat Ihnen geholfen, einen Einblick in die Integration von Anwendungen SSO zu erhalten, und vielleicht hilft Ihnen dies, SSO selbst zu implementieren.

Wenn Sie Korrekturen, Fragen oder Ihre eigenen Erfahrungen mit SSO haben, können Sie gerne kommentieren.

häufig gestellte Fragen zu Single Sign-On (SSO)

Was ist der Hauptzweck von Single Sign-On (SSO)? mit einem einzigen Satz von Anmeldeinformationen. Dadurch müssen sich mehrere Benutzernamen und Kennwörter erinnern, wodurch die Bequemlichkeit und Produktivität von Benutzern verbessert wird. SSO verbessert auch die Sicherheit, indem sie die Wahrscheinlichkeit eines Missmanagements des Kennworts und des unbefugten Zugriffs verringert.

Wie funktioniert Single Sign-On (SSO)? Wenn sich ein Benutzer in einer Anwendung anmeldet, authentifiziert das SSO -System die Anmeldeinformationen des Benutzers und stellt ein Sicherheitstoken aus. Dieses Token wird dann verwendet, um den Benutzer für andere Anwendungen innerhalb des SSO-Systems zu authentifizieren und die Notwendigkeit mehrerer Anmeldungen zu beseitigen. SSO bietet mehrere Vorteile. Es vereinfacht die Benutzererfahrung, indem die Notwendigkeit mehrerer Anmeldungen reduziert wird, wodurch Zeit spart und die Frustration verringert wird. Es verbessert auch die Sicherheit, indem das Risiko von Verstößen gegen Passagen minimiert wird. Darüber hinaus kann es die Kosten senken, indem die Anzahl der Kennwortresetanforderungen verringert wird. Kommt mit potenziellen Risiken. Wenn die SSO -Anmeldeinformationen eines Benutzers beeinträchtigt sind, kann ein Angreifer Zugriff auf alle mit diesen Anmeldeinformationen verbundenen Anwendungen erhalten. Daher ist es entscheidend, starke Sicherheitsmaßnahmen wie Multi-Faktor-Authentifizierung und reguläre Kennwortaktualisierungen zu implementieren, um diese Risiken zu mildern. MFA)?

SSO und MFA sind beide Authentifizierungsmethoden, aber sie dienen unterschiedlichen Zwecken. SSO vereinfacht den Anmeldeprozess, indem Benutzer mit einem einzigen Satz von Anmeldeinformationen auf mehrere Anwendungen zugreifen können. Andererseits verbessert MFA die Sicherheit, indem Benutzer zwei oder mehr Identifikationsformen bereitstellen müssen, bevor er Zugriff gewährt. , SSO kann mit mobilen Anwendungen verwendet werden. Viele SSO-Lösungen bieten mobilen Support und ermöglichen es Benutzern, mit einem einzigen Satz von Anmeldeinformationen auf mehrere Apps auf ihren mobilen Geräten zugreifen zu können. Verbessert die Benutzererfahrung, indem Sie den Anmeldungsprozess vereinfachen. Benutzer müssen sich nur an eine Reihe von Anmeldeinformationen erinnern und die Frustration vergessener Passwörter verringern. Es spart auch Zeit, da Benutzer beim Zugriff auf verschiedene Anwendungen nicht wiederholt ihre Anmeldeinformationen eingeben müssen. profitieren von SSO. Branchen, die stark auf mehrere Anwendungen wie Gesundheitswesen, Bildung, Finanzen und Technologie angewiesen sind, können besonders von der Bequemlichkeit und Sicherheit profitieren, die SSO bietet.

Wie verbessert Single Sign-On (SSO) die Sicherheit? Dies verringert die Wahrscheinlichkeit schwacher oder wiederverwendeter Kennwörter, die häufige Ziele für Cyberangriffe sind. Darüber hinaus enthalten viele SSO-Lösungen zusätzliche Sicherheitsmaßnahmen wie Multi-Faktor-Authentifizierung und -verschlüsselung, um Benutzerdaten weiter zu schützen. > Ja, die meisten SSO -Lösungen können in vorhandene Systeme integriert werden. Der Integrationsprozess kann jedoch je nach spezifischer SSO -Lösung und den vorhandenen Systemen variieren. Es ist wichtig, mit einem erfahrenen IT -Team oder SSO -Anbieter zusammenzuarbeiten, um eine reibungslose und sichere Integration zu gewährleisten.

Das obige ist der detaillierte Inhalt vonSingle Sign-On (SSO) erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn