# account-keeper **Repository Path**: dwarfeng/account-keeper ## Basic Information - **Project Name**: account-keeper - **Description**: 密码维护与登录验证的解决方案 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2020-02-12 - **Last Updated**: 2025-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # account-keeper Account Keeper (简称 Acckeeper) 是一个功能全面的账户管理服务,主要提供了账户的注册销毁、登陆登出等操作。 ## 特性 1. Subgrade 架构支持。 2. 支持账户注册、销毁、登陆、登出等操作,账户密码使用 `jbcrypt` 算法进行加密存储。 3. 支持账户保护器,基于 SPI 扩展,轻松实现特殊的保护需求(如 10 秒内连续输错密码超 3 次,锁定账户 10 分钟)。 4. 支持动态登录(短期登录+延迟过期方法)和静态登录(长期登录)。 5. 支持登录状态的派生(基于已有的登录状态派生新的登录状态),支持多种授权方式。 6. 支持登录状态的指令(如登录状态的查询、销毁),可方便地销毁特定账户的登录状态,轻松实现一端登录多端登出。 7. 登录和派生操作进行历史记录,可追踪与登录状态相关的所有操作。 8. 提供 QoS 运维平台,能够在前端页面、GUI 尚未开发完成的环境下使用本服务的功能,并进行运维操作。 9. 关键数据支持数据标记,为运维调试、数据迁移、数据追溯提供一定的辅助作用。 ## 文档 该项目的文档位于 [docs](./docs) 目录下,包括: ### wiki wiki 为项目的开发人员为本项目编写的详细文档,包含不同语言的版本,主要入口为: 1. [简介](./docs/wiki/zh_CN/Introduction.md) - 镜像的 `README.md`,与本文件内容基本相同。 2. [目录](./docs/wiki/zh_CN/Contents.md) - 文档目录。 ## 机制 ### 账户 账户是 Acckeeper 的核心对象,它用于存储用户的基本信息,如用户名、密码、注册时间等;同时,它还用于存储用户状态信息, 如 序列版本号、登录计数、派生计数等。 账户拥有使能状态,可以禁用账户,禁用后,账户将无法登录,同时会清除该账户当前的所有登录状态。 由于该服务着重维护账户的登录等状态,因此账户除了拥有最常见的 `displayName` 和 `remark` 等显示信息外,没有其它过多的信息。 如果需要存储更多的账户信息,可以使用其它服务进行存储。 账户的密码是加密存储的,使用了 `BCrypt` 算法进行加密,可以调整 `conf/acckeeper/register.properties` 中的参数调整加密强度。 ```properties # 用户注册时加密密码时盐生成的复杂度,值越高,安全性越强,但是速度越慢。最高为30。 register.password.salt_log_rounds=10 ``` ## 安装说明 1. 下载源码 使用 git 进行源码下载: ```shell git clone git@github.com:DwArFeng/account-keeper.git ``` 对于中国用户,可以使用 gitee 进行高速下载: ```shell git clone git@gitee.com:dwarfeng/account-keeper.git ``` 2. 项目打包 进入项目根目录,执行 maven 命令: ```shell mvn clean package ``` 3. 解压 找到打包后的目标文件: ``` account-keeper-node/target/acckeeper-[version]-release.tar.gz ``` 将其解压至 windows 系统或者 linux 系统。 4. 配置 1. 修改 conf 文件夹下的配置文件,着重修改各连接的 url 与密码。 5. enjoy it ## 分布式说明 该项目使用`dubbo`作为RPC框架,本身支持分布式,您可以在实际使用时,部署该项目任意数量,以进行分布式运算。