本文档描述了 Stirling-PDF 中的用户管理系统,详细介绍了用户如何被创建、认证、管理以及他们的权限如何被控制。该系统支持多种认证方法、基于角色的访问控制以及用户管理方面的管理功能。
有关具体认证方法的更多信息,请参阅 认证方法。
来源:src/main/java/stirling/software/SPDF/config/security/UserService.java33-486 src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java45-317
来源:src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java45-317 src/main/java/stirling/software/SPDF/controller/api/UserController.java42-384 src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java48-448
来源:src/main/java/stirling/software/SPDF/config/security/UserService.java33-486 src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java48-448
Stirling-PDF 支持通过配置启用或禁用多种认证方法
用户名/密码认证:
OAuth2 身份验证:
SAML2 认证:
API 密钥身份验证:
来源:src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java109-290 src/main/java/stirling/software/SPDF/controller/api/UserController.java356-383
来源:src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java109-290 src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java72-198
用户可以通过以下方式创建:
系统使用特定模式验证用户名
^<FileRef file-url="https://github.com/Stirling-Tools/Stirling-PDF/blob/c388ba73/a-zA-Z0-9" undefined file-path="a-zA-Z0-9">Hii</FileRef>[a-zA-Z0-9@._+-]{1,48}[a-zA-Z0-9]$^(?=.{1,320}$)(?=.{1,64}@)<FileRef file-url="https://github.com/Stirling-Tools/Stirling-PDF/blob/c388ba73/A-Za-z0-9" undefined file-path="A-Za-z0-9">Hii</FileRef>?@[^-][A-Za-z0-9-]+(?:\\.[A-Za-z0-9-]+)*(?:\\.[A-Za-z]{2,})$来源:src/main/java/stirling/software/SPDF/config/security/UserService.java358-374 src/main/java/stirling/software/SPDF/controller/api/UserController.java62-76 src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java36-95
用户可以通过以下功能管理其账户:
| 功能 | 描述 | 自助服务 | 仅管理员 |
|---|---|---|---|
| 更改用户名 | 更新用户名(需要密码验证) | ✓ | |
| 更改密码 | 更新密码(需要旧密码验证) | ✓ | |
| 查看/复制 API 密钥 | 获取用于程序化访问的 API 密钥 | ✓ | |
| 刷新 API 密钥 | 生成新的 API 密钥 | ✓ | |
| 首次登录更改密码 | 强制首次登录更改密码 | ✓ | |
| 更改用户角色 | 修改用户的角色和权限 | ✓ | |
| 启用/禁用用户 | 切换用户账户激活状态 | ✓ | |
| 删除用户 | 移除用户账户 | ✓ | |
| 同步设置 | 将浏览器设置与账户同步 | ✓ |
来源:src/main/java/stirling/software/SPDF/controller/api/UserController.java77-353 src/main/resources/templates/account.html29-253
管理界面提供了用户管理功能
管理界面还显示了以下统计数据:
来源:src/main/java/stirling/software/SPDF/controller/api/UserController.java192-353 src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java200-336
该系统实施了基于角色的访问控制,主要角色如下:
| 角色 | 描述 | 权限 |
|---|---|---|
| ROLE_ADMIN | 管理员 | 拥有完整的系统访问权限、用户管理和配置权限 |
| ROLE_USER | 标准用户 | 可以访问 PDF 操作和个人账户管理 |
| ROLE_DEMO_USER | 演示用户 | 访问受限,无法更改凭据或使用 API 密钥 |
| ROLE_INTERNAL_API_USER | 系统 API 用户 | 用于内部 API 访问,在管理界面中不可见 |
来源:src/main/java/stirling/software/SPDF/config/security/UserService.java192-232 src/main/java/stirling/software/SPDF/controller/api/UserController.java216-230
来源:src/main/java/stirling/software/SPDF/controller/api/UserController.java62-353 src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java180-209
Stirling-PDF 提供了 API 密钥功能,用于程序的访问
X-API-KEY 标头传递来源:src/main/java/stirling/software/SPDF/config/security/UserService.java112-168 src/main/java/stirling/software/SPDF/controller/api/UserController.java356-383 src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java119-143
系统实现了全面的会话管理
来源: src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java147-180 src/main/java/stirling/software/SPDF/config/security/UserService.java399-418
首次启动时,系统执行初始安全设置
默认管理员用户:如果不存在,则创建默认管理员用户
admin,密码 stirling基于配置的管理员:或者根据 application properties 中的设置创建管理员
security.initialLogin.username 和 security.initialLogin.password内部 API 用户:为内部 API 操作创建一个特殊的系统用户
数据库备份/恢复:如果存在备份,则导入数据库,而不是创建默认用户
来源: src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java36-95
系统允许浏览器设置和用户账户设置之间的同步
来源: src/main/resources/templates/account.html254-348 src/main/java/stirling/software/SPDF/controller/api/UserController.java177-190
用户管理系统实现了多项安全措施
来源: src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java98-317 src/main/java/stirling/software/SPDF/config/security/UserService.java98-168