Hermes Agent支持多用户协同与差异化权限管理,提供五种配置路径:一、OAuth2企业SSO集成;二、本地密码+YAML角色配置;三、飞书/企微组织架构自动同步;四、API Key级细粒度控制;五、OAuth2与API Key混合模式。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望多个用户协同使用 Hermes Agent,并对不同成员设置差异化访问权限,则需完成多用户接入配置与细粒度权限管理。以下是实现该目标的多种配置路径:
一、基于 OAuth2 的企业单点登录(SSO)集成
该方式适用于已部署统一身份认证系统(如 Azure AD、Okta、飞书/企业微信组织架构)的企业,可实现自动同步用户身份、角色与部门信息,并由 IDP 控制登录准入与会话生命周期。
1、在 Hermes Agent 配置文件 ~/.hermes/config.yaml 中启用 OAuth2 认证模块:
2、设置 backend.auth.type = "oauth2"
3、填写 identity provider 提供的 client-id、token-url 与 authorization-url 参数
4、将 backend.auth.client-secret.cmd 指向安全存储命令,例如 pass show oauth/client-secret
5、启动服务后,所有用户将被重定向至企业 SSO 登录页,登录成功即自动映射为 Hermes 内部账户
6、用户首次登录时,其所属部门、角色标签将通过 OIDC Claims 自动注入 Hermes 用户元数据中,用于后续权限判定
二、本地密码认证 + 多用户 YAML 配置
该方式适用于小型团队或未部署 SSO 的环境,通过明确定义用户列表与角色分配,在本地完成身份识别与权限控制,无需外部依赖。
1、编辑 ~/.hermes/config.yaml,将 backend.auth.type 设为 "password"
2、在 backend.auth.users 下逐条声明用户条目,每项包含 username、password_hash(推荐使用 bcrypt 加密)、roles 字段
3、为每个用户指定 roles 值,例如 ["admin"]、["viewer", "reporter"] 或 ["editor"]
4、在 backend.permissions 节点下定义角色能力矩阵,例如 admin 可执行 /api/v1/agents/* 与 /api/v1/config/* 全路径操作
5、viewer 角色仅允许 GET /api/v1/history 与 GET /api/v1/status,禁止任何写操作
6、保存配置后重启 Hermes Agent 服务,新用户即可通过 /login 页面凭用户名与密码登录
三、飞书/企业微信组织架构自动同步
该方式利用飞书或企业微信开放平台提供的组织架构 API,定期拉取成员列表、部门树与自定义字段,实现用户账户与权限的零手动维护。
1、确保已在飞书开放平台或企业微信管理后台为 Hermes 应用申请 contact:user:readonly 和 contact:department:readonly 权限
2、在 ~/.hermes/config.yaml 中添加 auth.provider 配置块,type 设为 "feishu" 或 "wecom"
3、填入对应平台的 App ID 与 App Secret,并配置 sync.interval_minutes(建议设为 1440,即每日同步一次)
4、指定 sync.role_field,例如飞书中设为 "custom_attributes.role",企业微信中设为 "extattr.岗位"
5、Hermes 启动后将自动调用 /contact/users/list 接口获取全量用户,并按 role_field 值映射为内部角色
6、用户登录时仅需输入飞书/企业微信绑定手机号或扫码,Hermes 通过 OpenID 完成身份核验并加载预设角色权限
四、API Key 级细粒度访问控制
该方式面向开发者或自动化脚本场景,为每个调用方分配唯一 API Key,并绑定具体资源范围与操作类型,实现接口级最小权限原则。
1、在 ~/.hermes/config.yaml 中启用 api_key_auth 模块,设置 backend.auth.api_key.enabled = true
2、在 backend.auth.api_keys 下添加键值对,key 为 32 位随机字符串,value 为包含 roles、allowed_paths、rate_limit 的对象
3、为某 Key 设置 allowed_paths: ["/api/v1/chat", "/api/v1/upload"],表示仅允许调用聊天与文件上传接口
4、为某 Key 设置 roles: ["limited_editor"],并在 backend.permissions 中定义该角色仅可修改自身创建的 agent 实例
5、将该 Key 通过 HTTP Header X-API-Key 方式传入请求,Hermes 将校验其有效性与策略匹配性
6、所有 API Key 的使用日志将记录于 ~/.hermes/logs/api-key-audit.log,含时间、IP、路径与响应状态码
五、混合模式:OAuth2 主认证 + API Key 辅助授权
该方式兼顾人员管理与系统集成需求,人类用户通过 SSO 登录获得交互式权限,而第三方服务(如 CI/CD 流水线、监控告警系统)使用独立 API Key 执行受限操作。
1、在 config.yaml 中同时启用 oauth2 与 api_key_auth 两种认证器,backend.auth.fallback = "api_key"
2、当请求携带有效 OAuth2 Bearer Token 时,优先走 SSO 身份解析流程
3、当请求携带 X-API-Key 且无有效 Token 时,降级使用 API Key 查找策略
4、为避免冲突,确保两套系统的 roles 命名空间隔离,例如 SSO 同步角色以 "sso/" 开头(sso/admin),API Key 角色以 "key/" 开头(key/deployer)
5、在 backend.permissions 中分别定义 sso/* 与 key/* 规则,互不覆盖也不继承
6、Hermes 在每次请求鉴权时,依据认证来源动态选择对应角色集进行权限比对


















