安全设置
配置 Web 安全域
路径:安全设置->通用安全->基础安全
INFO
免费版暂不支持此功能。
对于 Web 应用来说,存在 userPoolId/secret 被盗取的风险,所以我们需要做一些特别的防御措施。关键点是,我们要能够保证其他人获取到你的 userPoolId ,也无法直接使用你的服务器资源。Web 端可以通过 Web 安全域名 来对请求来源做限制,可以简单的防御住 Web 的服务器资源盗取。
设置 安全域(CORS) 后,仅可在该域名下通过 JavaScript SDK 调用服务器资源。注意:域名配置策略与浏览器域安全策略一致,要求域名协议、域和端口号都需严格一致,不支持子域和通配符,否则会导致访问被禁止。举例说明一下域名的区别:
// 跨域
www.a.com:8080
www.a.com
// 跨域
www.a.com:8080
www.a.com:80
// 跨域
a.com
www.a.com
// 跨域
xxx.a.com
www.a.com
// 不同协议,跨域
http:
https:这样就可以防止其他人通过外网其他地址盗用你的服务器资源。但是要注意,Web 安全域名所能达到的目的是防御恶意部署,而不是防御伪造脏数据(恶意用户通过绑定 host 方式还是有可能访问到应用的数据),所以要想对数据进行更多细粒度的控制,需要配合 ACL 来使用。
在 WebView 中使用,建议通过 WebView 去加载一个部署好的、有域名的 Web,然后缓存在本地,这样可以通过 Web 安全域名来做限制。
如果在前端使用 JavaScript SDK,当你打算正式发布出去的时候,请务必配置 Web 安全域名。

配置注册频率限制
路径:安全设置->通用安全->注册安全
INFO
免费版暂不支持此功能。
你可以在控制台开启 频繁注册限制 开关,限制同一个 IP 在多少秒内不能超过多少次注册:

配置登录失败次数限制
路径:安全设置->通用安全->登录安全
INFO
免费版暂不支持此功能。
你可以在控制台开启 登录失败次数限制 开关,限制同一账号在多少秒内不能超过多少次失败登录:

若在规定时间内超过次数后,该用户再次登录需要输入图形验证码:

密码安全
路径:安全设置->密码安全
密码关系着企业和用户的信息安全。系统会要求用户在注册、修改密码时,密码必须满足一定的复杂度。
此外,企业可能包含不同的用户群体:内部员工、外包员工、合作伙伴等,不同群体需要不同的密码规则。GenAuth 支持对不同的主体配置差异化的密码策略,以及通过上下移动策略顺序调整执行优先级。同时,也支持通过 自定义密码加密方法 来兼容历史系统的用户密码摘要加密逻辑,做到和原有系统密码策略完美兼容。
INFO
配置将对所有应用生效。

序号 元素 说明 1 创建密码策略
- 点击该按钮可新建密码策略。
- 最多可创建 30 条密码策略(含默认策略);达到上限后,该按钮置灰。 2 密码策略 展示密码策略列表,包括系统默认策略及管理员所建策略。 3 自定义密码加密方法 兼容历史系统的用户密码摘要加密逻辑。 4 执行顺序 由上至下执行密码策略,可通过按住左侧图标(鼠标悬浮时可见)拖动调整策略的执行顺序。 5 状态 新建一条密码策略后,该策略默认开启。可根据需要关闭,关闭后,当前策略不会执行。 6 删除 点击 操作 列更多按钮可删除当前选中的密码策略。注意:
- 删除后将无法恢复,请谨慎操作!
- 如当前策略的应用主体被全部删除,则系统会自动删除该策略。 7 默认策略
- 默认策略对所有用户主体生效,全局适用。
- 默认不检测密码强度。
- 可点击进入策略详情修改 密码强度 和 密码轮换策略。
- 默认策略置于策略列表底部,不可调整顺序,不可关闭,不可删除。
密码策略
要为主体配置密码策略,执行以下步骤:
在 密码安全 页点击页面右上角 创建密码策略 按钮。打开 创建密码策略 页面。
在 基础信息 模块填写 策略名 和 描述。
INFO
密码策略名必须唯一。 描述 最多 200 字符。
- 在 策略应用主体 模块选择 策略应用主体类型。
INFO
可以按照 用户、组织机构(toE可选)、分组 来筛选主体。
- 选择 策略应用主体。
INFO
- 用户、组织机构(toE可选)和 分组 的数据源分别来自 用户管理 中的 用户列表、组织机构(toE可选)和 用户组管理。
- 支持选择同一类型下的多个主体。
- 如已选主体在数据源中被删除,则该主体所在密码策略会联动删除该主体。
- 选择适用的密码强度(不作检测、低强度、中强度、高强度、自定义强度)。
INFO
- 此处设置的密码强度适用于用户注册密码、用户重置密码和用户修改密码。
- 默认不检测密码强度。
- 对于自定义密码强度规则,需要在下方定义正则表达式,并输入密码错误提示。
在 检测密码 字段输入密码,检测该密码是否符合上方设置的密码强度规则。如符合,在输入框后显示绿色对钩;如不符合,在输入框后显示错误提示,需根据提示进行修改。
开启 用户登录密码强度检验 开关(默认关闭)。

INFO
开启后,在设置了较高密码强度规则的情况下,登录较低强度密码的账号,跳转进入密码修改页。

INFO
若用户在修改密码时,管理员同时提高了密码强度,页面会提示用户刷新页面重试。

- 设置密码轮换策略(默认关闭)。
强制修改密码周期:超过选定周期,用户登录将强制修改密码。
密码到期提示:临期内每天给用户发送一次邮件提醒,直到用户成功修改密码。
INFO
- 用户登录必须修改密码。
- 管理员可以在 品牌化->消息设置 中修改邮件模板。
- 密码不可重复周期:选定周期内,用户修改密码、重置密码时,历史使用过的密码不可以再次使用。
- 点击 创建。新建的密码策略会显示在 密码安全->密码策略 列表顶部。
INFO
- 修改已有密码策略时,下方为 保存 和 重置 按钮。
- 点击 重置,所有已修改未保存的配置将恢复至上一次保存后的状态。
自定义密码加密方法
如果你想自定义密码加密函数,请在此上传函数片段(目前仅支持 Node.js),函数模版请点击这里下载(GenAuth 不会存储用户的密码原文)。
此功能适用于以下场景:
- 你将所有用户迁移进了 GenAuth,但不想让用户修改密码;
- 你不信任 GenAuth 的密码加密算法,想使用自己的密码加密算法;
本文档介绍了如何配置密码加密函数。
配置步骤
路径:安全设置->密码安全->自定义密码加密方法
如下图所示:

INFO
自定义密码加密方法
下载模版
点击页面中的 下载模版 下载 Node.js 代码模版,模版代码如下所示:
var getRawBody = require("raw-body");
const encryptPassword = (password) => {
// 在此编写加密密码的函数
return password;
};
/**
*
* @param {String} password 明文密码
* @param {String} encryptedPassword 密文密码
*/
const comparePassword = (password, encryptedPassword) => {
// 在此编写校验密码的函数
return password === encryptedPassword;
};
module.exports.encrypt = function (request, response, context) {
// get request body
getRawBody(request, function (err, body) {
const queries = request.queries;
const password = queries.password;
if (!password) {
response.setStatusCode(500);
response.setHeader("content-type", "application/json");
response.send(
JSON.stringify(
{
message: "Please provide password via url query",
},
null,
4
)
);
}
const respBody = {
password: encryptPassword(password), // 在此加密密码
};
response.setStatusCode(200);
response.setHeader("content-type", "application/json");
response.send(JSON.stringify(respBody, null, 4));
});
};
module.exports.validate = function (request, response, context) {
// get request body
getRawBody(request, function (err, body) {
const queries = request.queries;
const password = queries.password;
const encryptedPassword = queries.encryptedPassword;
if (!password) {
response.setStatusCode(500);
response.setHeader("content-type", "application/json");
response.send(
JSON.stringify(
{
message: "Please provide password via url query",
},
null,
4
)
);
}
const respBody = {
isValid: comparePassword(password, encryptedPassword), // 在此校验密码
};
response.setStatusCode(200);
response.setHeader("content-type", "application/json");
response.send(JSON.stringify(respBody, null, 4));
});
};编写代码
你需要在 encryptPassword 函数中编写相应的密码加密方法,以及在 vlidatePassword 函数中编写相应的验证密码加密方法。
若开发者需要引入第三方 NPM 包,请直接使用 NPM 直接安装。
INFO
NPM 是 Node.js 生态的包管理工具。
以下是引入 bcryptjs 包的一个代码示例:
$ npm install bcryptjs安装完成后在文件夹内会多出一个 node_modules 文件夹,之后编写代码:
var getRawBody = require("raw-body");
const encryptPassword = (password) => {
// Implement your login here.
// Your can use bcrypt for example
// more info here: https://github.com/kelektiv/node.bcrypt.js
var bcryptjs = require("bcryptjs");
var genSaltSync = bcryptjs.genSaltSync();
return bcryptjs.hashSync(password, genSaltSync);
};
const vlidatePassword = (plainText, encrypted) => {
// plainText is the plainText password use provide to be validate.
// encrypted is user's password encryped in database.
// Implement your login here.
// Your can use bcrypt for example
// more info here: https://github.com/kelektiv/node.bcrypt.js
var bcryptjs = require("bcryptjs");
return bcryptjs.compareSync(password, encryptedPassword);
};上传函数至服务器
INFO
GenAuth 支持的代码包只能为 .js 格式或 .zip 格式。
若你没有引入任何包,可直接上传 .js 格式的模版文件;若你引入了包请连带 node_modules 一起打包为 .zip 格式并在 GenAuth 控制台中上传。

测试密码加密函数
上传成功后开发者可测试密码加密效果,如下所示,在输入框中输入原密码后点击「加密测试」即可看到加密后的密码(若未上传任何加密函数将显示 GenAuth 默认的密码加密结果)。

注意事项
多因素认证综述
多因素认证(Multi Factor Authentication,简称 MFA)是一种非常简单的安全实践方法,能够在用户名称和密码之外再额外增加一层保护。启用 MFA 后,用户登录时,除了需要提供用户名和密码外(第一次身份验证),还需要进行第二次身份验证,多因素认证结合起来将为你的帐号和资源提供更高的安全保护。你可以在此了解什么是多因素认证。
你可在本章节了解以下 MFA 认证信息:

基于短信验证码的 MFA
概述
多因素认证(MFA)是一种安全系统,是为了验证一项操作合法性而进行的二次身份验证。例如银行的 U 盾,异地登录要求手机短信验证。本文介绍的是基于短信验证码的多因素认证方式。
准备工作
角色:管理员
在开启短信验证码 MFA 前,执行以下准备工作:
开启短信验证码 MFA
角色:管理员
开启应用级别短信验证码 MFA
INFO
要配置应用级别 MFA,必须在 应用->自建应用->应用详情->高级配置 中开启 自定义本应用的安全规则 开关,才会出现 安全管理 页签。
要开启应用级别短信验证码 MFA,执行以下步骤:
在控制台左侧导航菜单选择 应用->自建应用。
在自建应用列表中选择需要开启短信验证码 MFA 的应用。
进入应用详情页,选择 安全管理,并在 多因素认证 模块开启 短信验证码 开关。
开启全局短信 MFA
要开启全局短信验证码 MFA,执行以下步骤:
在控制台左侧导航菜单选择 安全设置->多因素认证。
在 多因素认证 模块开启 短信验证码 开关。
在 策略配置 模块选择适用的身份源,关闭其他不相关身份源的 MFA 开关。
使用短信验证码 MFA 登录
体验登录
角色:管理员
管理员要体验短信验证码 MFA,执行以下步骤:
- 在控制台左侧导航菜单选择 用户管理->用户列表,点击 创建用户 按钮通过 用户名/手机号/邮箱 方式创建一个用于短信验证码 MFA 登录的用户。

INFO
要启用短信验证码 MFA,必须为新增用户绑定手机号。
要绑定手机号,可在用户详情页 个人信息 模块点击下拉隐藏按钮填写手机号。

选择 应用->自建应用,点击目标应用详情页右上角 体验登录 按钮,使用上述创建的账号登录。
在 验证码登录 页面输入手机号及发送至手机的验证码,即可完成基于短信验证码的 MFA 验证流程。
用户登录
角色:普通用户
要在登录时执行短信验证码 MFA,执行以下步骤:
通过用户名/手机号/邮箱账号或者扫码登录。
在一次身份认证后,若用户尚未绑定手机号,系统弹出 绑定手机号 窗口,此时输入手机号。

INFO
若已绑定手机号,在一次身份认证后,会略过本步骤,要求你直接输入短信验证码。
- 输入手机获取的短信验证码。
提示完成认证,登录成功。
关闭短信 MFA
角色:管理员
要关闭短信验证码 MFA,可以在应用级别和全局分别关闭功能:
关闭应用级别短信验证码 MFA:进入应用详情,选择 安全管理,在 多因素认证 模块关闭 短信验证码 开关。
关闭全局短信验证码 MFA:选择 安全设置->多因素认证,在 多因素认证 模块关闭 短信验证码 开关。
基于邮件验证码的 MFA
概述
多因素认证(MFA)是一种安全系统,是为了验证一项操作合法性而进行的二次身份验证。例如银行的 U 盾,异地登录要求手机邮件验证。本文介绍的是基于邮件验证码的多因素认证方式。
准备工作
角色:管理员
在开启邮件验证码 MFA 前,执行以下准备工作:
开启邮件验证码 MFA
角色:管理员
开启应用级别邮件验证码 MFA
INFO
要配置应用级别 MFA,必须在 应用->自建应用->应用详情->高级配置 中开启 自定义本应用的安全规则 开关,才会出现 安全管理 页签。
要开启应用级别邮件验证码 MFA,执行以下步骤:
在控制台左侧导航菜单选择 应用->自建应用。
在自建应用列表中选择需要开启邮件验证码 MFA 的应用。
进入应用详情页,选择 安全管理,并在 多因素认证 模块开启 电子邮箱验证 开关。
开启全局邮件验证码 MFA
要开启全局邮件验证码 MFA,执行以下步骤:
在控制台左侧导航菜单选择 安全设置->多因素认证。
在 多因素认证 模块开启 电子邮箱验证 开关。
在 策略配置 模块选择适用的身份源,关闭其他不相关身份源的 MFA 开关。
使用邮件验证码 MFA 登录
体验登录
角色:管理员
管理员要体验邮件验证码 MFA,执行以下步骤:
在控制台左侧导航菜单选择 用户管理->用户列表,点击 创建用户 按钮通过 用户名/手机号/邮箱 方式创建一个用于邮件验证码 MFA 登录的用户。
选择 应用->自建应用,点击目标应用详情页右上角 体验登录 按钮,使用上述创建的账号登录。
在一次身份认证后,若尚未绑定邮箱,系统打开 绑定邮箱 页面,此时输入邮箱地址。
INFO
若事先已在用户详情页 个人信息 模块下绑定邮箱,在一次身份认证后,会略过输入邮箱地址一步,要求你直接输入邮箱验证码。
- 输入邮箱获取的验证码。
提示完成认证,登录成功。
用户登录
角色:普通用户
要在登录时执行邮件验证码 MFA,执行以下步骤:
通过用户名/手机号/邮箱账号或者扫码登录。
在一次身份认证后,若用户尚未绑定邮箱,系统打开 绑定邮箱 页面,此时输入邮箱地址。
INFO
若已绑定邮箱,在一次身份认证后,会略过输入邮箱地址一步,要求你直接输入邮箱验证码。
- 输入邮箱获取的验证码。
提示完成认证,登录成功。
关闭邮件验证码 MFA
角色:管理员
要关闭邮件验证码 MFA,可以在应用级别和全局分别关闭功能:
关闭应用级别邮件验证码 MFA:进入应用详情,选择 安全管理,在 多因素认证 模块关闭 电子邮箱验证 开关。
关闭全局邮件验证码 MFA:选择 安全设置->多因素认证,在 多因素认证 模块关闭 电子邮箱验证 开关。
基于时间戳算法的一次性密码的 MFA
概述
多因素认证(MFA)是一种安全系统,是为了验证一项操作合法性而进行的二次身份验证。例如银行的 U 盾,异地登录要求手机短信验证。本文介绍的是一种随时间动态变化的六位数字口令构成的一次性密码(OTP)多因素认证方式。
准备工作
角色:管理员
在开启 OTP MFA 前,执行以下准备工作:
开启 OTP MFA
角色:管理员
开启应用级别 OTP MFA
INFO
要配置应用级别 MFA,必须在 应用->自建应用->应用详情->高级配置 中开启 自定义本应用的安全规则 开关,才会出现 安全管理 页签。
要开启应用级别 OTP MFA,执行以下步骤:
在控制台左侧导航菜单选择 应用->自建应用。
在自建应用列表中选择需要开启 OTP MFA 的应用。
进入应用详情页,选择 安全管理,并在 多因素认证 模块开启 OTP 口令 开关。
开启全局 OTP MFA
要开启全局 OTP MFA,执行以下步骤:
在控制台左侧导航菜单选择 安全设置->多因素认证。
在 多因素认证 模块开启 OTP 口令 开关。
在 策略配置 模块选择适用的身份源,关闭其他不相关身份源的 MFA 开关。
使用 OTP MFA 登录
体验登录
角色:管理员
管理员要体验 OTP MFA,执行以下步骤:
在控制台左侧导航菜单选择 用户管理->用户列表,点击 创建用户 按钮通过 用户名/手机号/邮箱 方式创建一个用于 OTP MFA 登录的用户。
选择 应用->自建应用,点击目标应用详情页右上角 体验登录 按钮,使用上述创建的账号登录。
绑定 OTP。
- 方法一:

a. 点击 确定,打开 MFA 绑定扫码窗口。

b. 在手机端下载并打开 Google Authenticator / Microsoft Authenticator APP(下文以 Microsoft Authenticator 为例添加 MFA。),点击右上角 + 按钮,选择 其他(Google、Facebook 等), 扫码添加 MFA。
扫码后,可以在 APP 的账户列表中查看到刚刚添加的 MFA。

c. 在电脑端输入该 MFA 上显示的动态口令,点击 下一步,备份密钥,勾选下方保存密钥提示,点击 下一步 完成确认绑定。

INFO
务必将这里展示的恢复代码妥善保存。如果以后丢失了 MFA、无法通过 MFA 口令登录,可使用这个密钥来恢复账号访问。
系统提示认证成功。

- 方法二:
要绑定 OTP,执行以下步骤:
a. 访问 https://<你的应用域名>.genauth.ai 进行登录。然后访问 https://<你的应用域名>.genauth.ai/u ,点击页面右上角头像进入 个人中心。
b. 选择 个人中心->账号安全->个人 MFA,点击 立即绑定 按钮绑定 MFA。

c. 在手机端下载并打开 Google Authenticator / Microsoft Authenticator APP(下文以 Microsoft Authenticator 为例添加 MFA。),点击右上角 + 按钮,选择 其他(Google、Facebook 等),扫描网页端控制台二维码。

扫码后,可以在 APP 的账户列表中查看到刚刚添加的 MFA 及生产的动态口令。
d. 在网页端点击 下一步,输入动态口令。
e. 备份密钥,勾选下方保存密钥提示,点击 下一步 完成确认绑定,点击 下一步。
提示绑定成功。
用户登录
角色:普通用户
用户使用 OTP MFA 登录方法与管理员体验登录类似,可参考上述方法一和二。
如用户已完成 OTP MFA 的绑定,下次登录时可执行以下步骤:
- 访问
https://<你的应用域名>.genauth.ai。使用绑定过 MFA 的账号进行登录,在一次身份认证后,会提示输入安全码进行二次认证。

- 查看手机 Authenticator APP 输入动态口令,完成二次认证,进行登录。
解绑 OTP MFA
角色:普通用户
要解绑 Authenticator 和控制台的 MFA 绑定,执行以下步骤:
选择 个人中心->账号安全->个人 MFA。
点击 立即修改 按钮。
在打开的 MFA绑定 页面右上角点击 解除绑定 按钮,并确认解绑。

提示解绑成功。
关闭 OTP MFA
角色:管理员
要关闭 OTP MFA,可以在应用级别和全局分别关闭功能:
关闭应用级别 OTP MFA:进入应用详情,选择 安全管理,在 多因素认证 模块关闭 OTP 口令 开关。
关闭全局 OTP MFA:选择 安全设置->多因素认证,在 多因素认证 模块关闭 OTP 口令 开关。
基于人脸识别的 MFA
概述
多因素认证(MFA)是一种安全系统,是为了验证一项操作合法性而进行的二次身份验证。例如银行的 U 盾,异地登录要求手机短信验证。本文介绍的是以识别用户独有的面部特征进行的多因素认证方式。
准备工作
角色:管理员
在开启人脸识别 MFA 前,执行以下准备工作:
开启人脸识别 MFA
角色:管理员
开启应用级别人脸识别 MFA
INFO
要配置应用级别 MFA,必须在 应用->自建应用->应用详情->高级配置 中开启 自定义本应用的安全规则 开关,才会出现 安全管理 页签。
要开启应用级别人脸识别 MFA,执行以下步骤:
在控制台左侧导航菜单选择 应用->自建应用。
在自建应用列表中选择需要开启人脸识别 MFA 的应用。
进入应用详情页,选择 安全管理 页签,并在页面下方 多因素认证 模块开启 人脸识别 开关。
开启全局人脸识别 MFA
要开启全局人脸识别 MFA,执行以下步骤:
在控制台左侧导航菜单选择 安全设置->多因素认证。
在 多因素认证 模块开启 人脸识别 开关。
在 策略配置 模块选择适用的身份源,关闭其他不相关身份源的 MFA 开关。
使用人脸识别 MFA 登录
体验登录
角色:管理员
INFO
Web 端和移动端都支持人脸识别 MFA,要求手机和电脑配有摄像头。
管理员要体验人脸识别 MFA,执行以下步骤:
在控制台左侧导航菜单选择 用户管理->用户列表,点击 创建用户 按钮通过 用户名/手机号/邮箱 方式创建一个用于人脸识别 MFA 登录的用户。
选择 应用->自建应用,点击目标应用详情页右上角 体验登录 按钮,使用上述创建的账号登录。
在一次身份认证后,系统提示调用你的摄像头,点击 允许 打开摄像头进行认证。
用户登录
角色:普通用户
要在登录时执行人脸识别 MFA,执行以下步骤:
通过用户名/手机号/邮箱账号或者扫码登录。
在一次身份认证后,系统提示调用你的摄像头,点击 允许 打开摄像头进行认证。
INFO
人脸识别 MFA 认证可能会持续数秒,请耐心等待。认证完成后会提示成功。
关闭人脸识别 MFA
角色:管理员
要关闭人脸识别 MFA,可以在应用级别和全局分别关闭功能:
- 关闭应用级别人脸识别 MFA:进入应用详情,选择 安全管理,在 多因素认证 模块关闭 人脸识别 开关。
- 关闭全人脸识别 MFA:选择 安全设置->多因素认证,在 多因素认证 模块关闭 人脸识别 开关。
通过 SDK 接入 MFA
概述
GenAuth 不仅可以通过控制台来配置 MFA 认证流程,你还可以通过 SDK 的方式为 GenAuth 的 MFA 认证流程进行定制化开发。
本文将以 GenAuth - Node/JavaScript SDK 为例,指引用户完成基于 SDK 的 MFA 自定义开发。
其中包含:绑定 MFA 认证器、解绑 MFA 认证器、用户二次认证等。
准备工作
多因素认证(MFA)API
多因素认证(MFA)SDK
MFA 策略配置
路径:安全设置->多因素认证->策略配置
角色:管理员
GenAuth 支持在用户池级别配置针对不同的第三方身份源是否开启 MFA。

INFO
- 策略配置 模块会展示 身份源管理 菜单下配置的所有身份源。配置 MFA 策略前,需确保用户池已配置目标身份源。
- 该配置全局生效,不受自建应用自定义安全功能配置影响。
- 当全局未开启任何一种 MFA 认证方式时,策略配置中所有展现的第三方身份源默认关闭。
- 当全局开启一种或一种以上 MFA 认证方式时,每个身份源的默认状态切换为开启。
- 当全局关闭某个身份源连接的开关时,在用户使用该身份源连接方式登录该用户池的所有应用时,都会跳过所有的 MFA 流程。
- 当全局开启某个身份源连接开关时,则用户使用该身份源连接方式登录该用户池的所有应用时,需进行二次身份认证。