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 后端以实现持久化

重复用户名错误

在免密模式下,尝试使用现有用户名注册的用户会直接作为该用户登录。这是为了易用性而设计的。

延伸阅读

有关实现细节,请参阅源代码文档