成员
在 AISIX Enterprise 或 AISIX Cloud 中,成员属于一个组织,代表负责控制面管理、API Key、用量和限制的人员或服务所有者。
共享控制面支持两种成员加入方式,适用产品有所不同:
- 当成员需要登录控制台时,邀请该成员。
- 当你需要一个不登录控制台的 API Key 所有者时,直接创建成员。这种方式仅在 AISIX Enterprise 中可用。
两种方式都会创建组织成员。区别在于该成员是否会收到邀请,并是否可以使用控制台。管理员之后可以为直接创建的成员启用登录。
在 AISIX Cloud 上,成员通过邀请、单点登录或 SCIM 目录同步加入组织,不能直接创建成员。
AISIX Enterprise 控制面不开放自行注册:除非组织的单点登录会在登录时自动添加新成员,否则邀请是新用户创建账号的唯一途径。
配置单点登录后,成员也可以通过身份提供方登录,而不必使用密码;受邀者也可以通过 SSO 登 录来接受邀请。
邀请成员
当某个人需要控制台访问权限来管理资源、查看用量或管理组织时,请使用邀请方式。
- 打开 成员,选择 邀请成员。
- 输入成员邮箱并选择角色。
- 选择 发送邀请。
邮件投递方式因产品而异。AISIX Cloud 使用由 API7 运营的邮件中继。AISIX Enterprise 需要由运维人员配置 SMTP 中继;未配置时,控制台会生成邀请链接,供管理员自行分发。
邮件投递可用时,控制面会把邀请链接发送给受邀人。邀请卡片会确认中继已接受邮件。若投递失败,卡片会显示连接、TLS、身份认证或中继拒绝等原因;邀请本身仍然有效。
两种情况下,卡片都只显示一次邀请链接,你可以复制它并通过可信渠道转交。任何持有该链接的人都能打开这份邀请,因此请像对待凭据一样对待它。控制面只存储链接的哈希值,离开页面后无法再次显示;如需新链接,请重新发送邀请。
打开链接后,受邀人会看到是谁邀请的、将要加入哪个组织、以及获得什么角色。尚未拥有账号的受邀人可以直接从该页面注册——邮箱已自动填入且不可修改——注册完成后会回到邀请页面。在邀请流程中,账号只能通过邀请链接创建:注册请求会携带邀请 Token,当邀请已不处于待接受状态、已过期或发给了其他地址时,控制面会拒绝该请求。不经邀请直接打开该邀请的注册页面时,页面会提示注册已关闭。加入 组织始终需要显式点击 接受邀请:仅打开链接不会改变成员关系,因此已登录其他组织的用户点开链接也不会被切换过去。
邀请与你填写的邮箱绑定。只有使用该邮箱的账号才能接受邀请;其他账号打开链接时,会看到该邀请是发给哪个邮箱的,并可以切换到该账号登录。在受邀人接受前,该邀请会停留在 待处理邀请 标签页。
已经是组织成员的邮箱无法再被邀请。接受邀请不会修改已有成员的角色,这样的邀请不会产生任何效果——请直接在成员列表中修改角色。邀请也无法恢复已被 SCIM 目录同步停用的成员:兑换邀请会返回 403 和错误码 MEMBER_DEACTIVATED。
邀请有效期
邀请在发出 7 天后过期。在此之前,它会停留在 待处理邀请 标签页,你可以在这里吊销它,使链接立即失效。
该标签页默认只列出仍然有效的邀请。勾选 显示历史邀请(已接受、已吊销、已过期) 后,还会显示已接受、已吊销和已过期的邀请。如果需要清理记录,已过期的邀请也可以在这里吊销。
已过期的邀请不会继续占用该邮箱:再次邀请同一个人会签发新的链接,并作废那条已过期的邀请,后者仍会显示在 显示历史邀请(已接受、已吊销、已过期) 中。只有仍然处于待接受且未过期的邀请,才会阻止对同一邮箱再次发起邀请。
重新发送 邀请
在待接受的邀请上,或在 显示历史邀请(已接受、已吊销、已过期) 中列出的已过期邀请上,选择 重新发送 即可重新签发该邀请。重新发送会生成新链接,之前签发的链接随即失效,邀请的有效期从重新发送时起重新计算 7 天。已配置邮件时,新链接会再次通过邮件发给受邀人;无论是否配置邮件,卡片都会显示新链接。
你只能重新发送你本可以用同一角色创建的邀请。如果该邮箱在此期间已通过其他方式加入组织,则无法重新发送;cp-api 会返回 409 和错误码 ALREADY_MEMBER。
邀请邮件数量限制
已配置邮件时,每个账号在每个滚动小时内可发送的邀请邮件数量有限,默认为 50 封。该限制统计账号所属的所有组织,创建邀请和重新发送邀请都会计数。超出限制时,邀请会被拒绝并返回 429,不会创建或重新签发任何邀请。AISIX Enterprise 运维人员可以通过 api.smtp.invitationLimitPerHour 设置该限制,参见邀请邮件数量限制。
在 AISIX Cloud 上注册
在 AISIX Cloud 上,任何人都可 以在注册页面创建账号,但必须先确认邮箱地址,账号才能使用:
- 填写名称、邮箱地址和密码完成注册。页面随后提示查收邮件,此时还不会建立会话。
- 打开邮件中的验证链接。它会打开登录页面,并预先填好邮箱地址。
- 使用注册时设置的密码登录。这会完成邮箱验证并登录。
验证链接 24 小时内有效,只能使用一次。它需要用账号当前的密码登录才能完成,因此即使链接落到别人手里,没有密码也无法使用。仅打开链接不会改变任何状态。
在邮箱地址验证之前,使用密码登录会被拒绝,返回 403,错误码为 EMAIL_NOT_VERIFIED,登录页面会提供重新发送验证邮件的入口。无效、已过期、已使用或已被更新的链接取代的链接会被拒绝,错误码为 EMAIL_VERIFICATION_LINK_INVALID。密码错误时,无论邮箱是否已验证,都只返回 INVALID_EMAIL_OR_PASSWORD,因此登录尝试不会暴露某个地址是否已验证。
需要新链接时,在查收邮件页面或登录页面选择 重新发送验证邮件。每个新链接都会使之前的链接失效;但如果距离上一个链接不足一分钟,新请求会被忽略,之前的链接仍然有效。无论该地址是否有待验证的账号,页面显示的提示都相同,因此无法借此探测哪些邮箱已注册。
用一个账号仍未验证的地址再次注册,会替换之前的注册:新的名称和密码生效,该账号的会话全部结束,并发送新的验证链接。账号已验证的地址,或属于没有密码的账号(例如由 SSO 或 SCIM 创建的账号)的地址,不能再次注册。
重置忘记的密码同样会验证邮箱地址,因为重置链接是从该邮箱中打开的。
AISIX Enterprise 不验证邮箱地址,那里的账号都来自邀请。
重置忘记的密码
有密码但忘记密码的成员可以在登录页重置密码。AISIX Cloud 使用由 API7 运营的邮件中继发送邮件;AISIX Enterprise 需要由运维人员配置 SMTP 中继:
- 在登录页选择 忘记密码?。
- 输入账号的邮箱地址,选择 发送重置链接。
- 打开邮件中的链接并设置新密码。新密码适用与注册时相同的密码规则。
无论该邮箱是否属于某个账号,页面显示的提示都相同,因此无法借此探测哪些邮箱已注册。重置链接:
- 有效期为一小时;
- 只能使用一次;
- 会替换该账号之前的所有重置链接;但如果距离上一次请求不足一分钟,新请求会被忽略,之前的链接仍然有效。
重置密码后,该账号在所有设备上的所有会话都会退出登录。请使用新密码重新登录。在 AISIX Cloud 上,重置密码还会把邮箱地址标记为已验证。
未配置邮件时,忘记密码页面会提示用户联系管理员,不提供表单。
没有密码的账号不会收到重置邮件,包括直接创建的成员、通过 SCIM 创建的成员、从脱敏备份恢复的账号,以及在 Google 和 GitHub 登录被移除之前只使用这两种方式登录的用户。管理员 可以改为为他们启用登录。
启用登录或重置密码
在 AISIX Enterprise 控制面上,管理员可以向成员提供一个一次性链接,由成员在该链接上自行设置密码。管理员既看不到也无法指定这个密码。
成员 列表会结合组织的单点登录连接,显示每个成员的登录方式:
- 可登录,括号中列出成员的登录方式:密码、SSO 或两者兼有。SSO 表示该成员已关联到组织已启用的 SSO 连接上的某个身份,这一关联在成员首次单点登录时建立。
- 通过 SSO 登录:组织的 SSO 连接已启用,而成员既没有密码、也尚未建立 SSO 关联。身份提供方会在成员首次单点登录时按其邮箱地址放行。
- 密码 · 需要 SSO:连接强制单点登录时,只有密码的非所有者成员。仅凭密码无法进入组织,必须通过 SSO 登录。只有能读取 SSO 设置的组织所有者和管理员能看到这个标记,其他查看者看到的是 可登录(密码)。
- 不可登录:组织没有启用 SSO 连接,而成员既没有密码、也没有 SSO 关联。
在 AISIX Enterprise 和 AISIX Cloud 中,每一行还会显示 已开启双因素认证 或 未开启双因素认证,表示该成员的账号是否开启了双因素认证。
已停用的成员只显示 已停用,不显示登录标记,也没有登录相关操作。对于其他成员,行操作取决于成员是否有密码:
- 重置密码:用于已有密码的成员。在成员设置新密码之前,当前密码仍然有效。
- 设置密码:用于没有密码、但可以通过 SSO 登录的成员。设置密码后成员多了一种登录方式,但在强制单点登录时,仅凭密码无法进入组织。
- 开通登录:用于无法以任何方式登录的成员,例如直接创建的成员、通过 SCIM 创建的成员,或从脱敏备份恢复的成员。
选择其中任一操作后,页面会显示一张包含该链接的卡片,你可以复制链接。配置了邮件时,控制面还会以组织的语言(组织未设置时为部署默认语言)把链接发送到成员邮箱,卡片会显示发送到了哪里,或邮件未送达的原因。未配置邮件时不会发送任何内容,请通过可信渠道自行把链接转交给成员。卡片只显示一次链接。
该链接:
- 有效期为 72 小时;
- 只能使用一次;
- 在你为同一成员签发更新的链接、该成员通过 忘记密码? 申请重置、你修改该成员的角色或移除该成员,或 SCIM 目录同步停用或删除该成员时失效;
- 只有当持有人仍是签发组织的有效成员时才能使用,否则会被当作无效链接拒绝。
无法为已停用的成员签发链接:请求返回 400 和错误码 INVALID_REQUEST,也不会发送邮件。
成员设置密码后,该账号的所有会话都会结束,成员使用新密码登录。未使用而过期的链接不会产生任何变化。无论哪种情况,成员的团队、角色和 API Key 都不受影响。
对成员拥有写权限的人(默认为 admin 和 owner)都可以为 member 角色的成员签发链接。由于持有链接的人可以接管该账号,为其他角色签发链接需要具备可以邀请该角色的身份:只有所有者可以为所有者签发,为管理员或自定义角色成员签发则需要内置的 admin 或 owner。
如需通过自动化签发链接,请使用具有 write 权限范围的 Admin Token 调用 POST /members/{user_id}/set_password_link,其中 user_id 取自成员列表,AISIX_CP 和 AISIX_TOKEN 的取值见使用 API。响应中包含 link、其 expires_at、action(enable_sign_in 或 reset_password)以及 email_delivery:
export USER_ID="MEMBER_USER_ID"
curl -X POST "${AISIX_CP}/members/${USER_ID}/set_password_link" \
-H "Authorization: Bearer ${AISIX_TOKEN}"
直接创建成员
在 AISIX Enterprise 控制面上,当服务、应用或开发者需要拥有 API Key 但不需要控制台访问权限时,可以直接创建成员。
AISIX Cloud 不提供直接创建成员:成员 页面没有 创建用户 按钮,POST /members 返回 404。AISIX Cloud 上的账号由所有组织共用,直接创建的成员会持有一个其主人从未确认过的地址的账号,还会阻止此人自行注册。请改为邀请此人,或通过 SCIM 目录同步预配。
直接创建的成员:
- 会立即激活,不需要邀请链接或确认步骤。
- 可以加入团队并分配 API Key。
- 可以受限流和预算治理。
- 没有密码,因此在管理员启用登录之前无法登录控制台。
该成员仍然有名称和邮箱。请使用能够识别责任人、服务或应用所有者的值,以便正确归因用量和限制。
在控制台中操作
- 打开 成员,选择 创建用户。
- 输入能够识别责任归属的 名称 和 邮箱。
- 选择 创建用户。
成员会立即出现在列表中。随后你可以将该成员加入团队,并从承载其流量的环境中签发 API Key。
使用 API
当需要通过自动化供应成员时,请使用 API。
使用具有 write 权限范围的组织 Admin Token认证。Admin Token 的作用域绑定到一个组织,因此请求不需要额外的组织请求头。
# AISIX_CP 包含 /api,且不含尾部斜杠
# 本地 AISIX Enterprise 快速入门使用 http://localhost:8080/api
export AISIX_CP="YOUR_AISIX_CONTROL_PLANE_API_URL"
export AISIX_TOKEN="YOUR_ADMIN_TOKEN"
创建成员:
curl -X POST "${AISIX_CP}/members" \
-H "Authorization: Bearer ${AISIX_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "Responsible Person",
"email": "svc-payments@example.com"
}'
成功调用会返回 201 Created 和新成员:
{
"member": {
"id": "8f3b2a1c-9d4e-4f6a-b7c8-1e2d3f4a5b6c",
"user_id": "2c7d6e5f-4a3b-4c2d-8e1f-9a0b1c2d3e4f",
"email": "svc-payments@example.com",
"display_name": "Responsible Person",
"role": "member",
"sign_in_methods": []
}
}
邮箱地址必须有效,并且在部署内唯一。对于应用所有者,可以使用类似 svc-payments@example.com 的合成地址。复用已有邮箱会返回 409 Conflict。直接创建的成员始终使用 member 角色。
将调用方 API Key 归属到该成员时,请把成员关系的 id 填入密钥的 user_id。成员响应中还包含账号的 user_id,它是供成员路由和团队成员关系使用的另一个标识符。不要用账号 ID 代替调用方密钥归属所需的成员关系 ID。
等待加入的成员
在 AISIX Cloud 上,SCIM 目录同步把地址位于组织已验证域名以外的预配用户记录为等待加入的成员,并向该地址发送邀请。成员 页面在成员列表下方的 待加入 区块中列出这些人,显示其邮箱地址、角色、目录 ID 以及是否处于激活状态,邀请则出现在 待处理邀请 标签页中。没有人等待加入时,该区块不显示。
本人接受邀请,或以目录中对应的身份关联组织的单点登录后,等待加入的成员即成为正式成员。请在身份提供方中管理这些成员。参见等待加入的成员。