这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

12 KiB

账户安全策略

**本文档中引用的文件** - [IdentitySettingNames.cs](file://aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Settings/IdentitySettingNames.cs) - [SettingAppService.cs](file://aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/SettingAppService.cs) - [UserSettingAppService.cs](file://aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/UserSettingAppService.cs) - [AccountAppService.cs](file://aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountAppService.cs) - [SecurityLogManager.cs](file://aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/SecurityLogManager.cs) - [MySecurityLogAppService.cs](file://aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MySecurityLogAppService.cs) - [DefaultTotpService.cs](file://aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain/LINGYUN/Abp/Identity/Security/DefaultTotpService.cs)

目录

  1. 引言
  2. 密码强度策略
  3. 账户锁定机制
  4. 双因素认证
  5. 密码重置流程
  6. 安全审计日志
  7. 会话管理与并发登录控制
  8. 异常登录检测
  9. 配置选项与默认值
  10. 合规性扩展

引言

本文档详细阐述了ABP框架中的账户安全策略实现机制。系统提供了全面的安全功能,包括密码强度验证、账户锁定、双因素认证、安全审计等,旨在保护用户账户免受未经授权的访问和攻击。通过灵活的配置选项,管理员可以根据业务需求调整安全策略,确保系统既安全又易于使用。

密码强度策略

系统实现了严格的密码强度策略,通过多维度验证确保用户密码的安全性。密码策略包含长度要求、字符类型要求以及唯一字符数量要求等多个方面。

flowchart TD
Start([开始设置密码]) --> LengthCheck["检查密码长度 ≥ 8"]
LengthCheck --> DigitCheck["检查是否包含数字"]
DigitCheck --> LowercaseCheck["检查是否包含小写字母"]
LowercaseCheck --> UppercaseCheck["检查是否包含大写字母"]
UppercaseCheck --> SpecialCharCheck["检查是否包含特殊字符"]
SpecialCharCheck --> UniqueCharCheck["检查唯一字符数量 ≥ 1"]
UniqueCharCheck --> PeriodicChange["检查是否需要定期更改密码"]
PeriodicChange --> End([密码设置成功])
LengthCheck --> |不满足| Error1[提示: 密码长度不足]
DigitCheck --> |不满足| Error2[提示: 需包含数字]
LowercaseCheck --> |不满足| Error3[提示: 需包含小写字母]
UppercaseCheck --> |不满足| Error4[提示: 需包含大写字母]
SpecialCharCheck --> |不满足| Error5[提示: 需包含特殊字符]
UniqueCharCheck --> |不满足| Error6[提示: 唯一字符数量不足]
Error1 --> End
Error2 --> End
Error3 --> End
Error4 --> End
Error5 --> End
Error6 --> End

图源

  • SettingAppService.cs

本节来源

  • SettingAppService.cs
  • IdentitySettingNames.cs

账户锁定机制

系统实现了智能的账户锁定机制,防止暴力破解攻击。当用户连续多次输入错误密码时,账户将被临时锁定,增加攻击者破解账户的难度。

stateDiagram-v2
[*] --> Active
Active --> FailedAttempt : 登录失败
FailedAttempt --> FailedAttempt : 连续失败
FailedAttempt --> Locked : 达到最大失败次数
Locked --> Unlocked : 锁定时间到期
Unlocked --> Active : 自动解锁
Active --> Success : 登录成功
FailedAttempt --> Success : 登录成功
Success --> Active : 继续活动
note right of Locked
锁定期间所有登录尝试均失败
防止暴力破解攻击
end note

图源

  • SettingAppService.cs

本节来源

  • SettingAppService.cs
  • IdentitySettingNames.cs

双因素认证

系统支持基于TOTP(基于时间的一次性密码)算法的双因素认证机制,为账户提供额外的安全层。用户在登录时除了输入密码外,还需要提供通过身份验证应用程序生成的动态验证码。

sequenceDiagram
participant User as 用户
participant System as 系统
participant Authenticator as 身份验证器
User->>System : 输入用户名和密码
System->>System : 验证凭据
System-->>User : 请求双因素验证码
Authenticator->>User : 生成6位动态码
User->>System : 提交动态验证码
System->>System : 使用TOTP算法验证验证码
alt 验证成功
System-->>User : 允许登录
else 验证失败
System-->>User : 拒绝登录
end

图源

  • DefaultTotpService.cs
  • AccountAppService.cs

本节来源

  • DefaultTotpService.cs
  • AccountAppService.cs

密码重置流程

系统提供了安全的密码重置流程,通过手机号验证来确认用户身份,确保只有合法用户才能重置密码。该流程结合了短信验证码和TOTP算法,提高了安全性。

flowchart TD
A([请求密码重置]) --> B["输入注册手机号"]
B --> C["生成TOTP验证码"]
C --> D["发送短信验证码"]
D --> E["用户输入收到的验证码"]
E --> F["验证验证码有效性"]
F --> G{"验证成功?"}
G --> |是| H["生成密码重置Token"]
G --> |否| I["拒绝重置请求"]
H --> J["允许用户设置新密码"]
J --> K["更新用户密码"]
K --> L["记录安全日志"]
L --> M([密码重置完成])
I --> M

图源

  • AccountAppService.cs

本节来源

  • AccountAppService.cs
  • SecurityTokenCacheItem.cs

安全审计日志

系统集成了全面的安全审计日志功能,记录所有与安全相关的操作,包括登录尝试、密码更改、双因素认证状态变更等。这些日志可用于安全分析、故障排除和合规性审计。

classDiagram
class SecurityLogInfo {
+string ApplicationName
+string Identity
+string Action
+Guid? UserId
+string UserName
+string ClientId
+string ClientIpAddress
+string CorrelationId
+DateTime CreationTime
}
class SecurityLog {
+Guid Id
+string ApplicationName
+string Identity
+string Action
+Guid? UserId
+string UserName
+string ClientId
+string ClientIpAddress
+string CorrelationId
+DateTime CreationTime
}
class IdentitySecurityLogRepository {
+Task InsertAsync(IdentitySecurityLog log)
+Task GetListAsync(...)
+Task GetCountAsync(...)
+Task DeleteAsync(Guid id)
}
class SecurityLogManager {
+Task SaveAsync(SecurityLogInfo info)
+Task GetListAsync(...)
+Task GetCountAsync(...)
+Task DeleteAsync(Guid id)
}
SecurityLogInfo --> SecurityLog : 映射
SecurityLog --> IdentitySecurityLogRepository : 存储
SecurityLogManager --> IdentitySecurityLogRepository : 依赖
SecurityLogManager --> SecurityLogInfo : 创建

图源

  • SecurityLogManager.cs
  • MySecurityLogAppService.cs

本节来源

  • SecurityLogManager.cs
  • MySecurityLogAppService.cs

会话管理与并发登录控制

系统提供了会话管理功能,支持对用户并发登录行为的控制。管理员可以配置策略,限制同一用户在不同设备上的同时登录数量,增强账户安全性。

本节来源

  • IdentitySettingNames.cs

异常登录检测

系统通过安全审计日志和账户锁定机制实现异常登录检测。当检测到短时间内大量失败的登录尝试时,系统会自动触发保护机制,锁定相关账户以防止暴力破解攻击。

本节来源

  • SecurityLogManager.cs
  • SettingAppService.cs

配置选项与默认值

系统提供了丰富的安全策略配置选项,允许管理员根据组织的安全需求进行定制。以下是主要安全配置项及其默认值:

配置项 描述 默认值 类型
Abp.Identity.Password.RequiredLength 密码最小长度 8 数字
Abp.Identity.Password.RequireDigit 是否需要包含数字 true 布尔值
Abp.Identity.Password.RequireLowercase 是否需要包含小写字母 true 布尔值
Abp.Identity.Password.RequireUppercase 是否需要包含大写字母 true 布尔值
Abp.Identity.Password.RequireNonAlphanumeric 是否需要包含特殊字符 true 布尔值
Abp.Identity.Password.RequiredUniqueChars 所需唯一字符的最小数量 1 数字
Abp.Identity.Lockout.AllowedForNewUsers 新用户是否允许被锁定 true 布尔值
Abp.Identity.Lockout.MaxFailedAccessAttempts 最大失败访问尝试次数 5 数字
Abp.Identity.Lockout.LockoutDuration 锁定持续时间(分钟) 5 数字
Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword 是否强制用户定期更改密码 false 布尔值
Abp.Identity.Password.PasswordChangePeriodDays 密码更改周期(天) 90 数字

本节来源

  • IdentitySettingNames.cs
  • SettingAppService.cs

合规性扩展

系统设计考虑了合规性需求,提供了可扩展的安全策略框架。通过自定义安全日志管理器和事件处理程序,可以集成到SIEM(安全信息和事件管理)系统,满足GDPR、HIPAA等法规的审计要求。

本节来源

  • SecurityLogManager.cs
  • DefaultSecurityLogManager.cs