aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/docs/content/zh/manual/features/authentication.mdx
blob: cd5b6224f1149870be7a40534ae07f1c3cb8d9d7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
---
title: 身份验证
description: DropOut 中的 Microsoft OAuth 和离线身份验证
---

# 身份验证

DropOut 支持两种身份验证方法:Microsoft 账户(用于官方 Minecraft)和离线模式(用于测试和离线游玩)。

## Microsoft 身份验证

### 概述

DropOut 使用 **Device Code Flow** 进行 Microsoft 身份验证,具有以下特点:
- 无需重定向 URL(无需浏览器集成)
- 适用于任何拥有浏览器的设备
- 提供简单的基于代码的身份验证
- 完全符合 Microsoft OAuth 2.0 标准

### 身份验证流程

身份验证链包含多个步骤。DropOut 自动处理这些复杂的交换过程,包括与 Microsoft、Xbox Live 和 Minecraft 服务的交互。如果您对详细的 API 实现感兴趣,请参阅[内部实现](/docs/development/implementation#1-身份验证系统-authentication)。

### 令牌管理

**访问令牌:**
- 短期有效(通常为 1 小时)
- 用于游戏身份验证
- 过期时自动刷新

**刷新令牌:**
- 长期有效(通常为 90 天)
- 安全存储在 `accounts.json` 中
- 用于获取新的访问令牌

**自动刷新:**
令牌过期时,DropOut 会在您启动游戏时尝试使用刷新令牌自动更新您的登录状态,确保您可以无缝开始游玩。

### 安全考虑

- 令牌存储在平台特定的应用数据目录中
- 所有 API 调用仅使用 HTTPS
- 不存储凭据(仅存储令牌)
- 需要 User-Agent 标头(绕过 MS WAF)

### Microsoft 登录故障排除

**"Device code expired"(设备代码已过期)**
- 代码在 15 分钟后过期
- 重新开始登录流程

**"Authorization pending"(授权待处理)**
- 在等待阶段很正常
- 在浏览器中完成授权

**"Invalid token"(无效令牌)**
- 令牌可能已过期
- 登出后重新登录

**"You don't own Minecraft"(您不拥有 Minecraft)**
- 验证您的 Microsoft 账户拥有 Minecraft Java Edition
- 在 https://www.minecraft.net/profile 检查

## 离线身份验证

### 概述

离线模式创建一个不需要互联网连接或 Microsoft 账户的本地账户。这对以下情况很有用:
- 测试和开发
- 无网络游玩
- LAN 多人游戏
- Mod 开发

### 创建离线账户

1. 在登录屏幕单击"离线模式"
2. 输入用户名(3-16 个字符)
3. 单击"创建账户"

### 工作原理

**UUID 生成:**
离线模式使用基于用户名的确定性 UUID 生成算法(UUID v3)。这意味着在同一个启动器实例中,相同的用户名始终会获得相同的 UUID,从而保持单人游戏存档的一致性。

- 确定性:相同的用户名 = 相同的 UUID
- 无需网络请求

**身份验证:**
- 返回 `"null"` 作为访问令牌
- Minecraft 在离线模式下接受空令牌
- 用户名和 UUID 本地存储

### 限制

- 无法加入在线服务器
- 不支持皮肤
- 不支持披风
- 无法使用 Microsoft 账户功能

## 账户管理

### 切换账户

目前 DropOut 一次只支持一个活跃账户。多账户支持正在规划中。

**切换账户的步骤:**
1. 登出当前账户
2. 使用新账户登录

### 账户存储

账户数据存储在应用文件夹的 `accounts.json` 中。该文件包含已登录账户的加密令牌、过期时间和基本的个人资料信息。

### 删除账户

删除账户的步骤:
1. 打开设置
2. 导航到账户
3. 单击"登出"
4. 或手动删除 `accounts.json`

## API 参考

关于身份验证的底层实现、OAuth 2.0 流程细节以及相关的 Tauri 命令接口,请参考开发文档:[实现细节:身份验证](../development/implementation.mdx#1-身份验证系统-authentication)。

## 最佳实践

1. **对官方服务器使用 Microsoft 账户**:为了能够加入官方服务器并使用正版皮肤,请务必使用 Microsoft 账户。
2. **保护令牌安全**:不要向他人分享 `accounts.json` 文件或其内容,因为其中包含您的登录凭据。
3. **定期刷新令牌**:长时间未使用的离线账户或过期的 Microsoft 令牌可以通过重新登录或启动游戏来刷新。
4. **仅在测试时使用离线模式**:离线模式不支持皮肤和部分多人游戏功能。