登录与账户
决定谁可以创建账户以及人们的登录方式。Antimatter 的所有登录方式均无需许可证即可使用,包括单点登录和目录服务。
谁可以创建账户
安装完成后,请检查 系统控制台 › 认证 › 注册。使用默认设置时,任何拥有社区邀请链接的人都可以创建账号,但没有邀请链接则无法注册。
| 设置项 | 键 | 默认值 | 功能说明 |
|---|---|---|---|
| 开启账号创建 | TeamSettings.EnableUserCreation | 开启 | 关闭后,任何人都无法通过任何方式创建账户;只有管理员可以(通过系统控制台或 amctl user create)。 |
| 启用开放服务器 | TeamSettings.EnableOpenServer | 关闭 | 开启后,任何能够访问服务器的人都可以通过电子邮件地址注册,无需邀请。请仅用于公共社区。 |
| 限制新的系统成员和团队成员仅限指定电子邮件域 | TeamSettings.RestrictCreationToDomains | 空 | 以逗号分隔的域,例如 example.com, example.org:只有这些域名的地址才能创建账户。 |
| 启用发送邮件邀请 | ServiceSettings.EnableEmailInvitations | 新服务器上默认关闭 | 允许成员通过邮箱邀请他人(需要 SMTP)。废止邮件邀请 会取消尚未接受的邀请;这些邀请无论如何都会在 48 小时后过期。 |
社区管理员还通过邀请链接和他们自己的允许域名来控制谁加入他们的社区:请参阅 运营社区 指南。
从命令行操作:amctl user create(添加 --system-admin 或 --guest)、amctl user invite、amctl user deactivate、使用 amctl roles system-admin <user> 将某人设为系统管理员,以及使用 amctl roles member <user> 撤销该权限。
电子邮件和密码
在 系统控制台 › 认证 › 邮箱 中:
| 设置项 | 键 | 默认值 |
|---|---|---|
| 启用使用邮箱创建账号 | EmailSettings.EnableSignUpWithEmail | 开启。当所有人都通过单点登录时,请将其关闭。 |
| 需要邮箱验证 | EmailSettings.RequireEmailVerification | 关闭。一旦 电子邮件 功能正常工作,请将其开启:这样用户在登录前需要先确认其地址。 |
| 启用使用邮箱登录 | EmailSettings.EnableSignInWithEmail | 开启 |
| 启用使用用户名登录 | EmailSettings.EnableSignInWithUsername | 开启 |
在 系统控制台 › 认证 › 密码 中:
| 设置项 | 键 | 默认值 |
|---|---|---|
| 最小密码长度 | PasswordSettings.MinimumLength | 8(5 到 72) |
| 密码要求:小写字母、大写字母、数字、符号 | PasswordSettings.Lowercase, .Uppercase, .Number, .Symbol | 全部关闭 |
| 最大登录尝试次数 | ServiceSettings.MaximumLoginAttempts | 10:超过此次数后,账户将被锁定,直到通过电子邮件重置密码 |
| 启用忘记密码链接 | PasswordSettings.EnableForgotLink | 开启 |
长度达到 12 位或更多比字符规则更能提升安全性。要为某人重置密码:系统控制台 › 用户管理 › 用户,或 amctl user change-password <user> --password <new>。
多因素身份验证
多重验证(MFA)会在密码之外增加来自身份验证器应用的验证码。它适用于使用邮箱或 AD/LDAP 登录的账号;如果使用单点登录,请使用身份提供商的 MFA。在 系统控制台 › 认证 › 多重验证 中:
- 启用多重验证(
ServiceSettings.EnableMultifactorAuthentication,默认关闭):用户可以在安全设置中开启 MFA。 - 强制多重验证(
ServiceSettings.EnforceMultifactorAuthentication,默认关闭):所有用户都必须设置,在注册时或下次登录时。
如果某人丢失了设备:amctl user resetmfa <user>,或在 系统控制台 › 用户管理 › 用户 中从其页面重置。
单点登录
Antimatter 可以通过您的身份提供商让用户登录。首次登录时,它会根据提供商发送的名称、电子邮件和用户名创建其账户(如果允许创建账户)。
OpenID Connect、GitLab、Google 和 Entra ID
前往 系统控制台 › 认证 › OpenID 连接,并在 选择服务提供商 下选择:GitLab、Google Apps、Entra ID (Office 365),或者选择 OpenID 连接(其他) 以使用其他提供商(Keycloak、Authentik、Zitadel、Okta、Auth0 等)。
- 在您的提供商中,创建一个 Web 类型的应用程序(“客户端”),并使用此重定向 URI,对应您的站点 URL:
提供商 重定向 URI OpenID Connect (其他) https://chat.example.com/signup/openid/completeGitLab https://chat.example.com/signup/gitlab/completeGoogle https://chat.example.com/signup/google/completeEntra ID https://chat.example.com/signup/office365/complete - 在 Antimatter 中,填写 发现端点(提供商的
/.well-known/openid-configurationURL;对于 GitLab,则填写 GitLab 站点 URL),以及 Client ID 和 Client Secret。对于其他提供商,还需填写登录按钮的 按钮名称 和 按钮颜色。 - 使用偏好用户名(GitLab 及其他提供商)会从提供商的
preferred_username声明中获取 Antimatter 用户名。 - 保存,注销,然后在登录页面试试新按钮。
这些设置存储在 OpenIdSettings、GitLabSettings、GoogleSettings 或 Office365Settings 中(例如 AM_OPENIDSETTINGS_ENABLE、AM_OPENIDSETTINGS_DISCOVERYENDPOINT、AM_OPENIDSETTINGS_ID、AM_OPENIDSETTINGS_SECRET)。旧版 OAuth 2.0 页面仅出现在仍配置有 OAuth 2.0 GitLab、Google 或 Entra ID 的服务器上。
SAML 2.0
在 系统控制台 › 认证 › SAML 2.0 中,开启 开启 SAML 2.0 登录(SamlSettings.Enable),并填写身份提供商提供的信息:身份提供商元数据 URL,或者 SAML SSO URL、身份提供商核发地址 和 身份认证商公钥证书。在身份提供商一侧:
- 服务提供者登录 URL(断言消费者服务):
https://chat.example.com/login/sso/saml; - Antimatter 的元数据,供需要导入元数据的提供商使用:
https://chat.example.com/api/v4/saml/metadata。
映射您的提供商发送的属性:至少需要 邮箱属性 和 用户名属性,可选映射 ID、名、姓、昵称、职位、语言、访客和管理员属性。校验签名 和 开启加密 默认开启(加密需要服务提供商的密钥和证书;仅支持 RSA 密钥);签署请求 默认关闭。签名算法默认为 RSAwithSHA256。
AD/LDAP
在 系统控制台 › 认证 › AD/LDAP 中,一个分步页面将 Antimatter 连接到 Active Directory 或其他 LDAP 服务器:服务器和端口(LdapSettings.LdapServer、LdapSettings.LdapPort,默认为 389)、连接安全性(无、TLS 或 STARTTLS)、基础 DN 和绑定账号(BaseDN、BindUsername、BindPassword)、用于用户、访客、管理员和群组的过滤器,以及邮箱、用户名、ID、姓名和图片的属性。用户随后使用其目录登录信息登录。
同步任务每 60 分钟运行一次(LdapSettings.SyncIntervalMinutes),用于更新姓名并停用从目录中移除的人员;可使用 amctl ldap sync 立即运行。LDAP 群组可以在 系统控制台 › 用户管理 › 群组 中关联到社区和频道。SAML 账号也可以与 AD/LDAP 保持同步(开启 SAML 账号与 AD/LDAP 同步)。
迁移现有账户
要将现有的邮箱账号切换为单点登录,可使用 amctl user migrate-auth email saml users.json(或 ldap)进行批量迁移。当 允许认证转移(ServiceSettings.ExperimentalEnableAuthenticationTransfer,位于 系统控制台 › 实验性 › 功能)开启时,用户也可以在自己的安全设置中更改自己的登录方式。
访客账户
访客是来自您组织外部、只能看到被邀请频道的用户。请在 系统控制台 › 认证 › 访客访问 中开启:
| 设置项 | 键 | 默认值 |
|---|---|---|
| 开启访客访问 | GuestAccountsSettings.Enable | 关闭 |
| 访客域名白名单 | GuestAccountsSettings.RestrictCreationToDomains | 留空:访客可以使用任何电子邮件域名 |
| 强制多重验证 | GuestAccountsSettings.EnforceMultifactorAuthentication | 关闭;仅当为所有人启用并强制使用 MFA 时可用 |
| 隐藏访客标签 | GuestAccountsSettings.HideTags | 关闭:其姓名旁会显示“访客”标签 |
启用后,社区管理员可邀请访客加入特定频道。管理员可使用 amctl user demote 将成员降级为访客,使用 amctl user promote 将访客提升为成员。
会话
用户保持登录的时间长度在 系统控制台 › 环境 › 会话时长 中设置:
| 设置项 | 键 | 新服务器的默认值 |
|---|---|---|
| 使用活动延长会话时长 | ServiceSettings.ExtendSessionLengthWithActivity | 开启:当用户使用 Antimatter 时,会话将得到续期 |
| AD/LDAP 和邮件会话时长(小时) | ServiceSettings.SessionLengthWebInHours | 720 小时(30 天) |
| 移动会话时长(小时) | ServiceSettings.SessionLengthMobileInHours | 720 小时 |
| SSO会话时长(小时) | ServiceSettings.SessionLengthSSOInHours | 720 小时 |
| 空闲会话超时 (分钟) | ServiceSettings.SessionIdleTimeoutInMinutes | 43200 分钟(30 天);仅在未通过活动延长会话时显示 |
| 更改密码时终止会话 | ServiceSettings.TerminateSessionsOnPasswordChange | 开启 |
若要一次性注销所有用户,请使用 系统控制台 › 用户管理 › 用户 中的 吊销所有会话。若要注销单个用户,请在那里打开其页面。