{"repo":"hang666/EasyUKey","free":true,"listed":false,"github":"https://github.com/hang666/EasyUKey","clone":"git clone https://github.com/hang666/EasyUKey.git","description":"一个基于USB设备的开源高安全性认证服务解决方案，提供简易U盾实现。将任何U盘变为您的专属安全密钥 (U盾)，无需特定硬件，即插即用。","language":"Go","stars":74,"topics":["mfa","usb-key","authentication"],"license":"MIT","category":"auth-billing-email","readme_excerpt":"EasyUKey 将任何U盘变为您的专属安全密钥 (U盾)，无需特定硬件，即插即用。 EasyUKey 是一个基于USB设备的开源高安全性认证服务解决方案，提供简易U盾实现。采用客户端-服务器架构，使用实时WebSocket通信，集成多重加密保护和TOTP双因子认证。 ⚠️ 提醒 ：本项目目前仍在开发阶段，基本功能已经实现，但功能和安全性依旧持续改进中，请谨慎用于生产环境。 ✨ 核心亮点 极致便利 ：将您随身携带的任何U盘转变为一个硬件U盾。无需购买或等待特定硬件。 高安全性 ：为您的敏感操作提供一层坚固的物理安全保障，有效防止未经授权的访问。 开源透明 ：所有代码完全开源，由社区驱动，安全、可信赖。 易于集成 ：可以轻松地集成到您现有的服务或应用中，作为多因素认证（MFA）的一环。 🚀 工作原理 EasyUKey 通过在您的U盘上创建一个唯一的、经过加密的密钥文件来识别您的身份。 1. 初始化 : 在您的U盘上生成一个安全的密钥。 2. 认证 : 当需要进行安全认证时，系统会提示您插入U盘。 3. 验证 : EasyUKey 会验证U盘上的密钥是否有效，验证通过后即可完成操作。 整个过程就像使用银行U盾一样简单，但硬件载体却是您最常见的U盘。 📋 认证流程 1. 应用系统发起认证 ：第三方应用向EasyUKey服务器提交认证请求 2. 服务器转发请求 ：EasyUKey服务器将认证请求转发给对应的USB客户端 3. 双重硬件识别 ：系统同时验证U盘分区序列号和设备序列号，确保硬件唯一性 4. 生成认证密钥 ：客户端基于硬件信息和OnceKey生成认证密钥 5. 返回认证结果 ：认证结果通过加密通道返回给EasyUKey服务器 6. OnceKey交换确认 ：客户端与服务器进行新的一次性密钥交换，更新防复制密钥 7. 确认成功 ：客户端向服务器发送确认请求，服务器确认成功 8. 异步回调通知 ：服务器向应用系统发送认证结果的回调通知 🔧 快速开始 环境要求 数据库 ：MySQL 5.7+ 依赖 ：Go, Git, Make Docker部署 ：Docker, Docker Compose 服务端安装 方式一：Docker部署（推荐） 1. 克隆项目 (或直接下载docker-compose.yml文件) 2. 配置环境变量 3. 启动服务 使用外部MySQL（生产环境推荐）： 使用内置MySQL（开发测试推荐）： 4. 验证部署 服务启动后可访问： 管理页面 方式二：传统部署 1. 构建服务器 2. 配置服务器 3. 运行服务器 客户端安装 1. 构建客户端 2. 部署到USB设备 将构建好的客户端复制到USB设备 在USB设备上运行客户端程序即可使用 需在管理后台添加用户将设备与用户绑定 如遇到Linux无权限问题，请在终端使用以下方法重新挂载U盘并运行： 🎯 使用场景 企业级应用 OA系统登录 ：替代传统密码登录方式 财务系统 ：高安全性的金融交易认证 数据中心 ：服务器和设备的物理访问控制 开发集成 Web应用 ：集成到现有的Web应用认证流程 桌面应用 ：本地应用程序的安全认证 📝 TODO [ ] 实现Macos客户端支持 [ ] 优化认证流程细节 [ ] 完善文档 🤝 贡献指南 我们欢迎社区贡献！请遵循以下步骤： 1. Fork 本项目 2. 创建特性分支 ( git checkout -b feature/AmazingFeature ) 3. 提交更改 ( git commit -m 'feat: Add some A","default_branch":null,"files":null,"tree":[],"storefront":"/r/hang666","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/hang666/EasyUKey/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}