免密登录
简化的认证方式,用于快速标注研究和测试。
免密登录
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: databaseClerk SSO
与 Clerk 集成实现企业单点登录:
bash
export CLERK_API_KEY="your_api_key"
export CLERK_FRONTEND_API="your_frontend_api"yaml
authentication:
method: clerk工作原理
启用免密后
- 用户访问登录页面
- 用户只输入用户名
- 系统创建或认证用户,无需密码验证
- 用户进入标注
用户注册
在免密模式下:
- 新用户在首次登录时自动注册
- 只需要用户名
- 额外用户数据(如果配置了)仍会收集
安全注意事项
免密模式提供最低限度的安全性:
- 无身份验证:任何人都可以声称任何用户名
- 会话劫持:会话可以被轻松冒充
- 无审计追踪完整性:用户操作无法被加密验证
推荐用于:
- 内部团队标注
- 课堂练习
- 快速原型设计
- 有外部认证的平台(Prolific、MTurk)
不推荐用于:
- 敏感数据标注
- 医疗或法律标注任务
- 需要验证标注者身份的任务
- 有激励的长期研究
用户配置文件
即使在免密模式下,你也可以预注册用户:
yaml
authentication:
user_config_path: users.jsonlusers.jsonl:
json
{"username": "annotator1"}
{"username": "annotator2"}
{"username": "admin", "role": "admin"}迁移
从需要密码迁移到免密
- 更新配置:
yaml
require_password: false - 现有用户可以继续使用或不使用密码登录
从免密迁移到需要密码
- 更新配置:
yaml
require_password: true - 现有的免密用户需要使用密码重新注册
完整示例
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"故障排除
用户无法登录
检查:
- 配置中是否设置了
require_password: false - 认证后端是否正确初始化
- 是否有冲突的认证设置
用户数据未持久化
如果使用 in_memory 后端:
- 用户数据在服务器重启时丢失
- 切换到
database后端以实现持久化
重复用户名错误
在免密模式下,尝试使用现有用户名注册的用户会直接作为该用户登录。这是为了易用性而设计的。
延伸阅读
有关实现细节,请参阅源代码文档。