Skip to content

Streamlit-Authenticator: Benutzerauthentifizierung in Streamlit-Anwendungen sichern

Streamlit hat seit seiner Einführung im Jahr 2019 die Art und Weise, wie wir Apps entwickeln und in die Cloud bereitstellen, revolutioniert. Da jedoch der Bedarf an sicherer Benutzerauthentifizierung in Streamlit-Anwendungen immer deutlicher wurde, ist mit Streamlit-Authenticator eine Lösung entstanden. Dieser Artikel bietet einen umfassenden Leitfaden, wie Sie Streamlit-Authenticator verwenden können, um Ihrer Streamlit-Anwendung eine sichere Benutzerauthentifizierung hinzuzufügen.

Was ist Streamlit-Authenticator?

Streamlit-Authenticator ist ein sicheres Authentifizierungsmodul, mit dem Sie die Benutzeranmeldeinformationen in Ihrer Streamlit-Anwendung validieren können. Mit Funktionen wie Passwortrücksetzung, Neuanmeldung von Benutzern und vergessenen Passwörtern und Benutzernamen-Widgets stellt Streamlit-Authenticator sicher, dass Ihre App sicher ist und nur autorisierten Benutzern zugänglich ist. Es ist wichtig zu beachten, dass diese Technik zwar ein gewisses Maß an Sicherheit bietet, aber nicht mit einer ordnungsgemäßen Authentifizierung mit einem SSO-Provider vergleichbar ist.

Haben Sie von diesem großartigen Tool für Datenanalyse und Datenvisualisierung gehört, das Ihre Streamlit-App in Tableau verwandelt?

PyGWalker (opens in a new tab) ist eine Python-Bibliothek, mit der Sie ganz einfach eine Tableau-ähnliche Benutzeroberfläche in Ihre eigene Streamlit-Anwendung einbetten können. Schauen Sie sich dieses erstaunliche Video an, das von Wie man Daten mit PyGWalker in Python erkundet (opens in a new tab) erstellt wurde und die detaillierten Schritte zur Stärkung Ihrer Streamlit-Anwendung mit dieser leistungsstarken Python-Datenvisualisierungsbibliothek zeigt!


Besonderer Dank geht an Sven und seinen großartigen Beitrag (opens in a new tab) zur PyGWalker-Community!

Darüber hinaus können Sie auch die PyGWalker-GitHub-Seite (opens in a new tab) für weitere PyGWalker-Beispiele aufrufen.

Installation und Einrichtung von Streamlit-Authenticator

Streamlit-Authenticator ist ein leistungsstarkes Tool, das nahtlos in Ihre Streamlit-Anwendung integriert werden kann. Bevor Sie es jedoch verwenden können, müssen Sie es installieren und einrichten. Dieser Prozess ist unkompliziert und kann in wenigen Schritten durchgeführt werden.

Installieren von Streamlit-Authenticator

Die Installation von Streamlit-Authenticator ist so einfach wie das Ausführen eines "pip install"-Befehls in Ihrem Terminal. So können Sie es tun:

pip install streamlit-authenticator

Dieser Befehl sagt "pip", dem Python-Paketinstaller, dass Streamlit-Authenticator aus dem Python Package Index (PyPI) heruntergeladen und installiert werden soll. Sobald die Installation abgeschlossen ist, können Sie Streamlit-Authenticator in Ihrer Streamlit-Anwendung wie jedes andere Python-Paket importieren.

Einrichten von Streamlit-Authenticator

Nach der Installation von Streamlit-Authenticator ist der nächste Schritt, ihn einzurichten. Dazu müssen Sie Streamlit-Authenticator so konfigurieren, dass es mit Ihrer spezifischen Streamlit-Anwendung zusammenarbeitet. Hier ist eine Schritt-für-Schritt-Anleitung, wie Sie das tun können:

  1. Importieren Sie Streamlit-Authenticator in Ihrer Streamlit-Anwendung:
import streamlit_authenticator as sa
  1. Initialisieren Sie Streamlit-Authenticator mit den spezifischen Einstellungen Ihrer App:
auth = sa.Authenticator(
    SECRET_KEY,
    token_url="/token",
    token_ttl=3600,
    password_hashing_method=sa.PasswordHashingMethod.BCRYPT,
)
  1. Verwenden Sie den Decorator auth.login_required, um Ihre Streamlit-Routen zu schützen:
@auth.login_required
def geschützt():
    st.write("Dies ist eine geschützte Route.")

Implementierung der Benutzerauthentifizierung in Streamlit mit Streamlit-Authenticator

Jetzt, wo Sie Streamlit-Authenticator installiert und eingerichtet haben, ist es an der Zeit, einen Benutzerauthentifizierungsdienst zu Ihrer Streamlit-Anwendung hinzuzufügen. Dies umfasst das Erstellen von Anmelde- und Registrierungsformularen, die Verwaltung von Benutzersitzungen und mehr.

Hinzufügen des Benutzerauthentifizierungsdienstes in Streamlit

Um einen Benutzerauthentifizierungsdienst in Streamlit hinzuzufügen, müssen Sie ein Anmeldeformular erstellen, in dem Benutzer ihre Anmeldeinformationen eingeben können. Hier ist ein Beispiel, wie Sie dies mit Streamlit-Authenticator tun können:

@st.route("/login")
def login():
    benutzername = st.text_input("Benutzername")
    passwort = st.text_input("Passwort", type="password")
 
    if st.button("Anmelden"):
        benutzer = auth.authenticate(benutzername, passwort)
        if benutzer ist not None:
            auth.login_user(benutzer)
            st.success("Erfolgreich angemeldet.")
        else:
            st.error("Ungültiger Benutzername oder falsches Passwort.")

Implementierung der Benutzerauthentifizierung ohne SSO

Wenn Sie Single Sign-On (SSO) nicht implementieren können, keine Sorge. Mit Streamlit-Authenticator können Sie Ihrer Streamlit-Anwendung eine einfache Authentifizierung ohne SSO hinzufügen. Dabei wird ein globales Passwort erstellt, das von allen Benutzern gemeinsam genutzt wird. So können Sie es tun:

## .streamlit/secrets.toml
passwort = "streamlit123"

Dann können Sie in Ihrer Streamlit-Anwendung das eingegebene Passwort mit dem gespeicherten Passwort vergleichen:

passwort = st.text_input("Passwort", type="password")
 
if passwort == st.secrets["password"]:
    st.success("Zugriff gewährt.")
else:
    st.error("Zugriff verweigert.")

Verständnis des Secrets Managements in Streamlit

Streamlits Secrets-Management-Feature spielt eine entscheidende Rolle bei der Benutzerauthentifizierung. Es ermöglicht Ihnen das sichere Speichern sensibler Informationen wie Passwörter und API-Schlüssel außerhalb Ihres Codes. Dies ist unerlässlich, um die Sicherheit Ihrer Streamlit-App und die Privatsphäre Ihrer Benutzer zu gewährleisten.

Ich entschuldige mich für die vorherige Verwirrung. Lassen Sie uns nun jeden Abschnitt mit mehr Details, Beispielen und Fakten genauer betrachten.

Erweiterte Funktionen von Streamlit-Authenticator

Streamlit-Authenticator bietet nicht nur grundlegende Benutzerauthentifizierung, sondern hat auch eine Reihe von erweiterten Funktionen, die eine umfassende Lösung für das Benutzermanagement in Ihren Streamlit-Anwendungen bieten. Diese Funktionen umfassen Widgets zum Zurücksetzen des Passworts, zur Registrierung neuer Benutzer und zur Behandlung vergessener Passwörter und Benutzernamen. Lassen Sie uns diese Funktionen im Detail erkunden.

Erstellen eines Widgets zum Zurücksetzen des Passworts

Eine der wichtigsten Funktionen von Streamlit-Authenticator ist die Möglichkeit, ein Widget zum Zurücksetzen des Passworts zu erstellen. Dies ist eine essentielle Funktion für jede Anwendung, die Benutzerauthentifizierung behandelt. Hier ist eine Schritt-für-Schritt-Anleitung, wie Sie mit Streamlit-Authenticator ein Widget zum Zurücksetzen des Passworts erstellen können:

  1. Erstellen Sie zunächst eine neue Route in Ihrer Streamlit-App für das Formular zum Zurücksetzen des Passworts:
@st.route("/passwort-zurücksetzen")
def passwort_zurücksetzen():
    ...
  1. Erstellen Sie innerhalb dieser Route ein Formular, in dem Benutzer ihre E-Mail-Adresse eingeben können:
email = st.text_input("Geben Sie Ihre E-Mail-Adresse ein")
if st.button("Passwort zurücksetzen"):
    ...
  1. Wenn der Benutzer das Formular absendet, verwenden Sie Streamlit-Authenticator, um einen Link zum Zurücksetzen des Passworts zu generieren:
reset_link = auth.generate_password_reset_link(email)
  1. Senden Sie abschließend diesen Link an die E-Mail-Adresse des Benutzers. Sie können eine beliebige E-Mail-Bibliothek in Python verwenden, wie z.B. smtplib oder yagmail, um die E-Mail zu versenden.

Erstellen eines Widgets zur Registrierung neuer Benutzer

Mit Streamlit-Authenticator können Sie ganz einfach ein Widget zur Registrierung neuer Benutzer zu Ihrer Streamlit-App hinzufügen. Mit diesem Widget können neue Benutzer ein Konto erstellen, indem sie ihren gewünschten Benutzernamen und ihr Passwort eingeben. Hier ist, wie Sie mit Streamlit-Authenticator ein Widget zur Registrierung neuer Benutzer erstellen können:

  1. Erstellen Sie eine neue Route in Ihrer Streamlit-App für das Registrierungsformular:
@st.route("/registrierung")
def registrierung():
    ...
  1. Erstellen Sie innerhalb dieser Route ein Formular, in dem Benutzer ihren gewünschten Benutzernamen und ihr Passwort eingeben können:
benutzername = st.text_input("Wählen Sie einen Benutzernamen")
passwort = st.text_input("Wählen Sie ein Passwort", type="password")
if st.button("Registrieren"):
    ...
  1. Wenn der Benutzer das Formular absendet, verwenden Sie Streamlit-Authenticator, um ein neues Benutzerkonto mit den eingegebenen Anmeldeinformationen zu erstellen:
benutzer = auth.create_user(benutzername, passwort)
st.success("Konto erfolgreich erstellt.")

Erstellen eines Widgets für vergessene Passwörter

Wenn ein Benutzer sein Passwort vergisst, kann ein Widget für vergessene Passwörter sehr hilfreich sein. Mit diesem Widget können Benutzer ihr Passwort zurücksetzen, indem sie ihre E-Mail-Adresse eingeben. Hier ist, wie Sie mit Streamlit-Authenticator ein Widget für vergessene Passwörter erstellen können:

  1. Erstellen Sie eine neue Route in Ihrer Streamlit-App für das Formular zum Zurücksetzen vergessener Passwörter:
@st.route("/passwort-vergessen")
def passwort_vergessen():
    ...
  1. Erstellen Sie innerhalb dieser Route ein Formular, in dem Benutzer ihre E-Mail-Adresse eingeben können:
email = st.text_input("Geben Sie Ihre E-Mail-Adresse ein")
if st.button("Passwort zurücksetzen"):
    ...
  1. Wenn der Benutzer das Formular absendet, verwenden Sie Streamlit-Authenticator, um einen Link zum Zurücksetzen des Passworts zu generieren und ihn an die E-Mail-Adresse des Benutzers zu senden.

Erstellen eines Widgets für vergessene Benutzernamen

Genau wie das Widget zur Zurücksetzung vergessener Passwörter kann auch ein Widget zur Zurücksetzung vergessener Benutzernamen nützlich sein, wenn Benutzer ihre Benutzernamen vergessen. Mit diesem Widget können Benutzer ihren Benutzernamen abrufen, indem sie ihre E-Mail-Adresse eingeben. Hier ist, wie Sie mit Streamlit-Authenticator ein Widget zur Zurücksetzung vergessener Benutzernamen erstellen können:

  1. Erstellen Sie eine neue Route in Ihrer Streamlit-App für das Formular zum Zurücksetzen vergessener Benutzernamen:
@st.route("/benutzername-vergessen")
def benutzername_vergessen():
    ...
  1. Erstellen Sie innerhalb dieser Route ein Formular, in dem Benutzer ihre E-Mail-Adresse eingeben können:
email = st.text_input("Geben Sie Ihre E-Mail-Adresse ein")
if st.button("Benutzernamen abrufen"):
    ...
  1. Wenn der Benutzer das Formular absendet, verwenden Sie Streamlit-Authenticator, um den Benutzernamen des Benutzers abzurufen und an die E-Mail-Adresse des Benutzers zu senden.
benutzername = auth.get_username(email)
st.success(f"Ihr Benutzername ist {benutzername}.")

Diese erweiterten Funktionen von Streamlit-Authenticator machen es zu einer umfassenden Lösung für die Benutzerauthentifizierung in Streamlit-Anwendungen. Durch die Verwendung dieser Funktionen können Sie sicherstellen, dass Ihre App nicht nur sicher, sondern auch benutzerfreundlich ist.

Streamlit-Authenticator: Mehr als nur grundlegende Authentifizierung

Während Streamlit-Authenticator eine robuste Lösung für die Benutzerauthentifizierung bietet, bietet es auch eine Vielzahl weiterer Funktionen, die die Benutzererfahrung verbessern und das Benutzermanagement optimieren können. Diese Funktionen wie Benutzerrollen und -berechtigungen, Multi-Faktor-Authentifizierung und Integration mit Authentifizierungsanbietern von Drittanbietern können Ihrer Streamlit-Anwendung eine zusätzliche Schicht Sicherheit und Flexibilität verleihen.

  • Benutzerrollen und -berechtigungen: Streamlit-Authenticator unterstützt Benutzerrollen und -berechtigungen, mit denen Sie steuern können, was jeder Benutzer in Ihrer App tun kann und nicht kann. Sie können beispielsweise Rollen für Administratoren, Editoren und Betrachter erstellen, von denen jede unterschiedliche Berechtigungen hat. Dies kann besonders nützlich für Apps sein, die unterschiedliche Benutzertypen mit unterschiedlichen Bedürfnissen und Verantwortlichkeiten haben.

  • Multi-Faktor-Authentifizierung: Für zusätzliche Sicherheit unterstützt Streamlit-Authenticator die Multi-Faktor-Authentifizierung (MFA). Bei der MFA müssen Benutzer zwei oder mehr Beweise (oder Faktoren) liefern, um sich zu authentifizieren. Diese Faktoren können etwas sein, das sie wissen (wie ein Passwort), etwas, das sie haben (wie einen physischen Token oder ein Smartphone) oder etwas, das sie sind (wie einen Fingerabdruck oder andere biometrische Daten).

  • Integration mit Drittanbieter-Authentifizierungsanbietern: Streamlit-Authenticator kann auch mit Drittanbieter-Authentifizierungsanbietern wie Google, Facebook und Twitter integriert werden. Dadurch können Benutzer sich mit ihren vorhandenen Konten auf diesen Plattformen in Ihre App einloggen, was den Anmeldeprozess schneller und bequemer macht.

Fazit

Streamlit-Authenticator bietet eine umfassende Lösung für die Benutzerauthentifizierung in Streamlit-Apps. Von grundlegenden Funktionen wie Anmeldung und Registrierung bis hin zu fortgeschrittenen Funktionen wie Passwort zurücksetzen, Benutzerrollen und -berechtigungen, Mehrfaktor-Authentifizierung und Integration mit Drittanbieter-Anbietern bietet Streamlit-Authenticator alles, was Sie benötigen, um Ihre App abzusichern und eine reibungslose Benutzererfahrung zu gewährleisten.

Es ist jedoch erwähnenswert, dass Streamlit-Authenticator zwar ein leistungsstarkes Werkzeug ist, aber nicht ohne Nachteile ist. Es ist möglicherweise nicht geeignet für Apps, die ein hohes Maß an Sicherheit erfordern, wie zum Beispiel Banking- oder Healthcare-Apps. Außerdem erfordert es zwar relativ einfach einzurichten ist, jedoch Kenntnisse in Python und Webentwicklung voraussetzt.

Ungeachtet dieser potenziellen Nachteile bleibt Streamlit-Authenticator eine beliebte Wahl für die Benutzerauthentifizierung in Streamlit-Apps aufgrund seiner Benutzerfreundlichkeit, Flexibilität und seiner umfangreichen Funktionen.

Haben Sie von diesem großartigen Tool für Datenanalyse und Datenvisualisierung gehört, das Ihre Streamlit-App in Tableau verwandelt?

PyGWalker (opens in a new tab) ist eine Python-Bibliothek, mit der Sie ganz einfach eine Tableau-ähnliche Benutzeroberfläche in Ihre eigene Streamlit-App integrieren können.

PyGWalker für Datenvisualisierung in Streamlit (opens in a new tab)

Häufig gestellte Fragen

F: Wie authentifiziere ich Streamlit?

A: Sie können Streamlit mit Streamlit-Authenticator authentifizieren, einem sicheren Authentifizierungsmodul, mit dem Sie Benutzeranmeldeinformationen in Ihrer Streamlit-Anwendung überprüfen können. Es bietet Funktionen wie Passwort zurücksetzen, Registrierung neuer Benutzer und vergessenes Passwort und Benutzername-Widgets.

F: Wie füge ich der Streamlit-Benutzerauthentifizierung hinzu?

A: Sie können der Streamlit-Benutzerauthentifizierung hinzufügen, indem Sie Streamlit-Authenticator installieren und einrichten. Sobald eingerichtet, können Sie es verwenden, um Anmelde- und Registrierungsformulare zu erstellen, Benutzersitzungen zu verwalten und mehr.

F: Was ist Streamlit-Authenticator?

A: Streamlit-Authenticator ist ein sicheres Authentifizierungsmodul für Streamlit-Apps. Es ermöglicht Ihnen, Benutzeranmeldeinformationen zu überprüfen, Benutzersitzungen zu verwalten und Funktionen wie Passwort zurücksetzen, Registrierung neuer Benutzer und vergessenes Passwort und Benutzername-Widgets bereitzustellen.

F: Welche Nachteile hat Streamlit?

A: Obwohl Streamlit ein leistungsstarkes Werkzeug für die Erstellung von Datenanwendungen ist, hat es einige Nachteile. Beispielsweise ist es möglicherweise nicht geeignet für Apps, die ein hohes Maß an Sicherheit erfordern, wie Banking- oder Healthcare-Apps. Außerdem erfordert es zwar relativ einfach einzurichten ist, jedoch Kenntnisse in Python und Webentwicklung voraussetzt.