スポンサーリンク

Streamlit Authenticatorで認証を実装する方法

記事内に広告が含まれています。

Streamlitを利用することで、簡単にデータアプリケーションを作成できますが、アプリケーションの保護やアクセス制限を行う場合、認証機能が必要になります。

その際に役立つライブラリがStreamlit Authenticatorで、簡単に認証機能を組み込むことができます。

Streamlit Authenticatorの基本的な使い方をまとめてみます。

スポンサーリンク

Streamlit Authenticatorとは?

Streamlit Authenticatorは、ユーザー名とパスワードによる認証機能を簡単に追加できるライブラリです。

以下のような機能が実現できます。

  • ログイン画面の作成
  • パスワードのハッシュ化
  • 認証済みユーザーのアクセス管理
  • ユーザー登録やパスワードリセット機能
スポンサーリンク

インストール

Streamlit AuthenticatorはPythonのライブラリとして提供されています。

以下のコマンドでインストールできます。

pip install streamlit-authenticator

基本的な使い方

簡単なログイン画面を作成する例を示します。

コード例

import streamlit as st
import streamlit_authenticator as stauth

# ユーザー情報の設定
names = ["Alice", "Bob"]
usernames = ["alice", "bob"]
passwords = ["password1", "password2"]

# パスワードをハッシュ化
hashed_passwords = stauth.Hasher(passwords).generate()

# 認証機能を初期化
authenticator = stauth.Authenticate(
    names, usernames, hashed_passwords,
    "some_cookie_name", "some_signature_key",
    cookie_expiry_days=30
)

# ログインフォーム
data = authenticator.login("Login", "main")

if data['name']:
    st.success(f"Welcome, {data['name']}!")
else:
    st.warning("Please enter your username and password.")

コードのポイント

  1. ユーザー情報の設定
    • namesusernames でユーザー名を設定します。
    • パスワードはpasswordsリストに記載しますが、セキュリティ向上のため、必ずハッシュ化してください。
  2. パスワードのハッシュ化
    • stauth.Hasherを使用してパスワードをハッシュ化します。
    • 平文でパスワードを保存しないように注意しましょう。
  3. 認証の実行
    • authenticator.loginでログインフォームを作成します。

ユーザー登録とパスワード変更

Streamlit Authenticatorでは、ユーザー登録やパスワード変更機能も提供されています。

ユーザー登録フォームの例

# 新規ユーザー登録フォーム
try:
    if authenticator.register_user('Register user', preauthorization=False):
        st.success('User registered successfully')
except Exception as e:
    st.error(e)

パスワード変更フォームの例

# パスワード変更フォーム
try:
    if authenticator.reset_password('Reset password', 'main'):
        st.success('Password reset successfully')
except Exception as e:
    st.error(e)

カスタマイズ

認証機能の見た目や挙動をカスタマイズすることも可能です。

ログインボタンのカスタマイズ

ログインボタンのラベルを変更する場合、以下のとおり記述します。

data = authenticator.login("Custom Login Label", "main")

Cookie設定の調整

クッキーの有効期限を設定する場合、以下のとおり記述します。

cookie_expiry_days=7  # 7日間有効

注意点とベストプラクティス

  1. パスワードのセキュリティ
    • 平文のパスワードは避け、必ずハッシュ化しましょう。
  2. クッキーの使用
    • クッキー名や署名キーは推測されにくい値を使用してください。
  3. ユーザー情報の管理
    • ユーザー情報は安全に管理し、外部ファイルやデータベースで運用するのが望ましいです。

おわりに

Streamlit Authenticatorを使用することで、簡単に認証機能を実装できます。詳細は公式ドキュメントを参考にしてください。

スポンサーリンク
Python
著者SNS
タイトルとURLをコピーしました