72 lines
2.4 KiB
Markdown
72 lines
2.4 KiB
Markdown
# DCAuth Windows 客户端
|
||
|
||
三个系统共用的设备认证客户端,通过 `dcauth://` 协议被浏览器唤起。
|
||
|
||
## 构建
|
||
|
||
```bash
|
||
cd apps/dcauth
|
||
GOOS=windows GOARCH=amd64 go build -trimpath -ldflags "-H windowsgui -s -w" -o dist/DCAuth.exe .
|
||
```
|
||
|
||
ARM64:
|
||
|
||
```bash
|
||
GOOS=windows GOARCH=arm64 go build -trimpath -ldflags "-H windowsgui -s -w" -o dist/DCAuth-arm64.exe .
|
||
```
|
||
|
||
## 首次运行
|
||
|
||
直接双击 exe 会:
|
||
|
||
- 注册 `dcauth://` 协议到当前 Windows 用户。
|
||
- 生成 Ed25519 设备密钥,使用 Windows DPAPI 加密保存在 `%LOCALAPPDATA%\DCAuth\device.key`。
|
||
- 显示设备码和机器码,并复制到剪贴板。
|
||
|
||
## macOS 开发调试
|
||
|
||
Mac 上不需要安装 Windows exe,也不需要注册自定义协议。登录页在开发模式会显示一条 `dcauth://...` 链接,复制后执行:
|
||
|
||
```bash
|
||
cd apps/dcauth
|
||
go run . "dcauth://authorize?app=order_site&challenge_id=...&challenge=...&api=http%3A%2F%2Flocalhost%3A5173"
|
||
```
|
||
|
||
客户端会提示确认,然后直接调用本地 Vite 代理的 `/api/dcauth/authorize`,完成本机签名。
|
||
|
||
如果只是测后台业务,不想每次都走短信和设备验证,可以在“后台用户”里把测试账号设为 **技术测试**。该账号只使用账号密码登录;正式账号仍必须走短信 + DCAuth。
|
||
|
||
## 浏览器联动
|
||
|
||
登录页创建 challenge 后跳转:
|
||
|
||
```text
|
||
dcauth://authorize?app=order_site&challenge_id=...&challenge=...&api=https%3A%2F%2Forder.khhao.com
|
||
```
|
||
|
||
客户端校验 app 和 api 白名单后,弹出确认框,签名并提交到:
|
||
|
||
```text
|
||
POST /api/dcauth/authorize
|
||
```
|
||
|
||
浏览器轮询 challenge 状态,拿到一次性 ticket 后完成登录。
|
||
|
||
## 支持的应用
|
||
|
||
| app | 生产入口 |
|
||
|---|---|
|
||
| `order_site` | `https://order.khhao.com` |
|
||
| `live_hub` | `https://live.khhao.com` |
|
||
| `affiliate_dash` | `https://skin.khhao.com` |
|
||
|
||
本地开发入口已内置在 `main.go` 的 `appRegistry` 中,包括 `http://localhost`、`http://127.0.0.1`、`http://192.168.10.6` 及对应 Vite 端口。
|
||
|
||
## 安全说明
|
||
|
||
- 私钥不离开本机,使用 DPAPI 保护。
|
||
- 服务端只保存公钥和机器码哈希/脱敏值。
|
||
- 机器码采集主板 UUID、MachineGuid、主板/BIOS/系统盘序列号、CPU ID,不上传原始序列号。
|
||
- 正式分发前建议使用代码签名证书,避免 SmartScreen 和杀毒软件误报。
|
||
- 如果要做到 token 也不能复制,需要后续让 exe 对每次 API 请求签名,或把 exe 作为唯一客户端。
|