Skip to content

免密登入

簡化的認證方式,用於快速標註研究和測試。

Potato 支援免密認證,用於安全性不如易用性重要的低風險標註任務。這允許標註者僅使用使用者名稱即可登入,無需密碼。

概述

免密登入適用於以下場景:

  • 與志願者進行快速標註研究
  • 進行內部團隊標註會議
  • 測試標註配置
  • 與外部處理認證的眾包平臺配合
  • 進行課堂練習或演示

配置

通過設定 require_password: false 啟用免密登入:

yaml
require_password: false
 
# Optional: Specify authentication method
authentication:
  method: in_memory  # Default

認證方法

Potato 支援三種認證後端,均相容免密模式:

記憶體模式(預設)

使用者僅儲存在記憶體中。伺服器重啟時資料丟失。

yaml
require_password: false
authentication:
  method: in_memory

資料庫

使用者持久化到資料庫:

bash
export POTATO_DB_CONNECTION="sqlite:///users.db"
yaml
require_password: false
authentication:
  method: database

Clerk SSO

與 Clerk 整合實現企業單點登入:

bash
export CLERK_API_KEY="your_api_key"
export CLERK_FRONTEND_API="your_frontend_api"
yaml
authentication:
  method: clerk

工作原理

啟用免密後

  1. 使用者訪問登入頁面
  2. 使用者只輸入使用者名稱
  3. 系統建立或認證使用者,無需密碼驗證
  4. 使用者進入標註

使用者註冊

在免密模式下:

  • 新使用者在首次登入時自動註冊
  • 只需要使用者名稱
  • 額外使用者資料(如果配置了)仍會收集

安全注意事項

免密模式提供最低限度的安全性:

  • 無身份驗證:任何人都可以聲稱任何使用者名稱
  • 會話劫持:會話可以被輕鬆冒充
  • 無審計追蹤完整性:使用者操作無法被加密驗證

推薦用於:

  • 內部團隊標註
  • 課堂練習
  • 快速原型設計
  • 有外部認證的平臺(Prolific、MTurk)

不推薦用於:

  • 敏感資料標註
  • 醫療或法律標註任務
  • 需要驗證標註者身份的任務
  • 有激勵的長期研究

使用者配置檔案

即使在免密模式下,你也可以預註冊使用者:

yaml
authentication:
  user_config_path: users.jsonl

users.jsonl:

json
{"username": "annotator1"}
{"username": "annotator2"}
{"username": "admin", "role": "admin"}

遷移

從需要密碼遷移到免密

  1. 更新配置:
    yaml
    require_password: false
  2. 現有使用者可以繼續使用或不使用密碼登入

從免密遷移到需要密碼

  1. 更新配置:
    yaml
    require_password: true
  2. 現有的免密使用者需要使用密碼重新註冊

完整示例

yaml
annotation_task_name: "Quick Annotation Task"
 
# Enable passwordless login for easy access
require_password: false
 
# Use database backend to persist users
authentication:
  method: database
 
# Task configuration
data_files:
  - data/instances.json
 
item_properties:
  id_key: id
  text_key: text
 
annotation_schemes:
  - name: sentiment
    annotation_type: radio
    labels: [Positive, Negative, Neutral]
    description: "Select the sentiment"

故障排除

使用者無法登入

檢查:

  1. 配置中是否設定了 require_password: false
  2. 認證後端是否正確初始化
  3. 是否有衝突的認證設定

使用者資料未持久化

如果使用 in_memory 後端:

  • 使用者資料在伺服器重啟時丟失
  • 切換到 database 後端以實現持久化

重複使用者名稱錯誤

在免密模式下,嘗試使用現有使用者名稱註冊的使用者會直接作為該使用者登入。這是為了易用性而設計的。

延伸閱讀

有關實現細節,請參閱原始碼文件