登录集成
配置用户的身份验证方式(平台内置、LDAP、HTTP),设置登录超时、密码策略、滑块验证与登录锁定,说明第三方系统免登的可用方式。
概述
Sight Report 的登录由两部分配置组成:
- 身份验证方式:决定用户输入账号密码后由谁来校验。可以是平台自己校验(平台内置认证),也可以委托给企业的 LDAP/AD 服务器或一个 HTTP 认证接口。
- 登录策略:登录超时、单一登录、密码强度、定期改密、滑块验证、失败锁定,作用于所有用户。
第三方业务系统需要让用户免登录进入报表时,使用签名免登,不使用登录接口。
当前版本不提供 OAuth 2.0、CAS、SAML 等标准单点登录协议,企业统一登录只能通过 LDAP、HTTP 认证或签名免登实现。
功能入口
| 配置内容 | 入口 |
|---|---|
| 身份验证方式 | 系统 > 用户管理 > 「身份验证」 标签页 |
| 登录超时、单一登录、密码策略、滑块验证、登录锁定 | 系统 > 系统设置 > 「登录」 标签页 |
| 解除被锁定的账号 | 系统 > 系统设置 > 「登录解锁」 标签页 |
身份验证方式
「身份验证」页面把用户分为两类,分别设置认证方式:
| 用户类别 | 适用对象 | 可选认证方式 |
|---|---|---|
| 导入/添加用户 | 在系统里手动添加或用 Excel 导入的用户 | 平台内置认证、LDAP 认证、HTTP 认证 |
| 同步用户 | 通过用户同步得到的用户 | 平台内置认证、LDAP 认证、HTTP 认证、同步来源认证(沿用用户同步来源的认证方式) |
配置步骤
- 进入
系统 > 用户管理,打开「身份验证」标签页。 - 展开「导入/添加用户的认证方式」或「同步用户的认证方式」,选择「认证方式」。
- 选择 LDAP 或 HTTP 后,填写下面两节的连接参数。
- 展开「高级设置」,按需调整认证失败策略、超时与缓存。
- 点击「保存配置」。
- 点击「测试认证」,选择用户类型,输入一个真实用户名和密码,提示「认证测试成功」即配置可用。选择平台内置认证时不需要测试。
页面上的「重置」按钮把表单恢复为上次保存的配置。
LDAP 认证参数
| 属性 | 说明 | 取值/默认值 |
|---|---|---|
| 服务器地址 | LDAP 服务器地址,前缀可选 ldap:// 或 ldaps:// |
必填,如 ldap://ldap.example.com:389 |
| Base DN | 搜索的根节点 | 必填,如 dc=example,dc=com |
| 绑定DN | 用于绑定服务器的 DN | 留空表示匿名访问 |
| 绑定密码 | 绑定 DN 对应的密码 | 可选 |
| 用户过滤器 | 按登录账号查找用户的过滤表达式,账号用 {0} 占位 |
必填,如 (&(objectClass=person)(uid={0})) |
| SSL/TLS | 是否使用加密连接 | 开关 |
| 忽略证书 | 是否忽略服务器证书校验 | 开关 |
| 连接超时 | 连接超时时间 | 数值 |
| 认证方式 | LDAP 绑定机制 | 简单认证 (Simple)、DIGEST-MD5、CRAM-MD5 |
| 引用追踪 | 是否跟随 LDAP 引用 | 开关 |
| 快速配置 | 按预设模板填充常用属性 | 自定义配置、Active Directory、OpenLDAP、FreeIPA |
HTTP 认证参数
用户登录时,系统向你提供的认证接口发一次请求,再按规则判断是否认证成功。
| 属性 | 说明 | 取值/默认值 |
|---|---|---|
| 验证地址 | 认证接口地址,可选 GET 或 POST | 必填,如 https://auth.example.com/api/verify |
| 用户名参数 | 请求中用户名的参数名 | 占位提示 username |
| 密码参数 | 请求中密码的参数名 | 占位提示 password |
| 判断方式 | 如何判断认证成功 | 判断响应字段值、判断 HTTP 状态码、判断响应包含文本 |
| 成功字段 / 成功值 | 判断方式为「判断响应字段值」时,JSON 响应中的字段路径,以及成功时该字段的值 | 如 success 与 true |
| 成功状态码 | 判断方式为「判断 HTTP 状态码」时,多个用逗号分隔 | 如 200,201 |
| 包含文本 | 判断方式为「判断响应包含文本」时,响应包含该文本则成功 | 如 success |
| 请求头 | 自定义请求头,名称与值成对填写 | 可选 |
| 请求体格式 | 请求体的编码 | JSON、Form Data |
| 请求体模板 | 请求体格式为 JSON 时的模板,$username 和 $password 会替换为实际值 |
可选 |
| 忽略SSL证书 | 是否忽略 HTTPS 证书校验 | 开关 |
| 请求超时 | 请求超时时间 | 数值 |
| 字符编码 | 响应字符编码 | UTF-8(默认)、GBK、GB2312 |
高级设置
| 属性 | 说明 | 取值/默认值 |
|---|---|---|
| 认证失败策略 | 外部认证(LDAP/HTTP)失败时的处理方式 | 「拒绝登录」(默认)、「回退到平台认证」 |
| 认证超时时间 | 外部认证请求的超时时间 | 5 到 120 秒,默认 30 |
| 认证缓存 | 启用后缓存认证结果,减少对外部服务的请求 | 默认关闭 |
| 缓存时间 | 认证缓存有效期,启用缓存后出现 | 1 到 1440 分钟,默认 30 |
注意:认证失败策略选「回退到平台认证」时,外部认证失败后会改用平台里保存的密码校验。
登录策略
以下设置在 系统 > 系统设置 > 「登录」 标签页,修改后自动保存,提示「保存成功」。「默认值」列是后端属性的内置默认值。
单一登录、超时与验证
| 属性 | 说明 | 取值/默认值 |
|---|---|---|
| 单一登录 | 同一账号同一时间只允许一处登录 | 默认关闭 |
| 登录模式 | 开启单一登录后出现:「后登录踢出先登录」或「已登录禁止再登录」 | 默认后登录踢出先登录 |
| 登录超时 | 连续无操作超过该时长后自动退出登录,使用中自动续期 | 10 到 43200 分钟,内置默认 1440 |
| 滑块验证 | 登录时需要完成滑块拼图验证 | 默认关闭 |
密码策略
| 属性 | 说明 | 取值/默认值 |
|---|---|---|
| 密码定期更新 | 到期后强制用户修改密码 | 默认关闭;周期 7 到 365 天,默认 90 |
| 提前提醒 | 到期前提醒用户改密 | 默认关闭;提前 1 到 30 天,默认 7 |
| 密码强度限制 | 总开关,控制以下各项 | 默认开启 |
| 最小长度 | 密码最少位数 | 6 到 16 位,默认 8 |
| 包含数字 / 小写字母 / 大写字母 / 特殊字符 | 密码必须包含对应字符 | 默认均不要求 |
| 不包含账号名 | 密码不得包含登录账号 | 默认关闭 |
| 历史密码重复校验 | 修改密码时禁止使用之前用过的密码 | 默认关闭;个数 1 到 20,默认 3 |
| 初始密码强制修改 | 新用户首次登录或管理员重置密码后必须修改 | 默认关闭 |
注意:从外网 IP 登录时,服务端会检查密码是否满足当前的强度设置,不满足的账号不允许从外网登录,提示「密码复杂度不符合要求,不允许外网登录」。
登录锁定
| 属性 | 说明 | 取值/默认值 |
|---|---|---|
| 登录锁定 | 连续输错密码后锁定 | 默认开启 |
| 内网不锁定 | 内网登录不触发锁定 | 默认关闭 |
| 错误次数限定 | 连续输错多少次后锁定 | 3 到 100 次,默认 5 |
| 锁定时长 | 锁定分钟数 | 5 到 600000 分钟,默认 10 |
| 锁定对象 | 按账号或按 IP 锁定 | 「账号」(默认)、「IP」 |
账号或 IP 被锁定后,管理员可以在 系统设置 > 「登录解锁」 列表中对锁定对象点击「解锁」(列表列出锁定对象类型:账号、IP、设备)。
未在界面开放的配置
以下配置项没有界面入口,通过配置文件或系统配置表 app.login.* 设置:
| 配置键 | 说明 | 默认值 |
|---|---|---|
app.login.remember-me-enabled |
登录页是否提供「记住我」 | true |
app.login.remember-me-timeout |
「记住我」的登录有效期,单位分钟,最小不低于登录超时,最大 43200 | 10080(7 天) |
app.login.allow-login-from-any-ip |
是否允许从任意 IP 登录 | true |
登录接口
网页登录使用 POST /api/auth/login。请求体:
| 字段 | 说明 | 取值/默认值 |
|---|---|---|
account |
账号 | 必填,最长 200 字符 |
password |
密码 | 必填。网页端对密码做了前端加密后提交,服务端先解密再校验 |
captchaId |
滑块验证通过后的验证码 ID | 开启滑块验证时必填 |
rememberMe |
是否记住我 | 可选,需服务端启用「记住我」 |
成功时 data 包含:
| 字段 | 说明 |
|---|---|
token |
登录令牌。调用其他接口时放在请求头 satoken 中 |
userInfo |
用户信息:userName、account、email、mobile、sex、isAdmin、roles |
passwordExpired |
密码是否已过期,需强制修改 |
passwordMessage |
密码过期或即将过期的提示 |
注意:
password字段要求前端加密后的密文,不是明文,登录接口是给平台自己的登录页使用的,不适合第三方系统直接调用。第三方系统请使用签名免登。
相关的无需登录接口:
| 接口 | 方法 | 说明 |
|---|---|---|
/api/auth/loginConfig |
GET | 登录页配置:是否需要滑块验证 slideValidate、是否提供记住我 rememberMeEnabled、密码找回渠道 passwordRecovery |
/api/auth/captcha |
GET | 生成滑块验证码 |
/api/auth/captcha/verify |
POST | 校验滑块轨迹 |
/api/auth/logout |
GET/POST | 退出登录 |
第三方系统免登
| 场景 | 做法 |
|---|---|
| 在业务系统页面里嵌入报表 | 服务端用 appSecret 生成签名,拼到嵌入地址的 _s 参数上,用户无需登录平台。见签名免登与报表嵌入 |
| 业务系统账号自动对应到平台账号 | 首次嵌入访问时,系统按签名里的账号自动建号,见三方集成应用 |
| 让平台账号沿用企业目录密码 | 在「身份验证」里选 LDAP 或 HTTP 认证 |
示例
企业已有 AD 域,希望员工用域账号密码登录 Sight Report:
- 在
系统 > 用户管理 > 「用户同步」中新建一个 LDAP 同步,把域用户同步进来,参见用户同步。 - 打开「身份验证」,展开「同步用户的认证方式」,选择「LDAP 认证」。
- 「快速配置」选 Active Directory,填写「服务器地址」「Base DN」「绑定DN」「绑定密码」。
- 「高级设置」保持「拒绝登录」,保存后点击「测试认证」,输入一个域账号验证。
预期:同步来的用户登录时由 AD 校验密码。