84 lines
2.1 KiB
Markdown
84 lines
2.1 KiB
Markdown
# NTLM认证API集成
|
||
|
||
RDPGW支持通过API集成NTLM认证,允许使用您自己的用户管理系统进行认证。
|
||
|
||
## API模式
|
||
|
||
API支持两种模式:
|
||
|
||
1. **验证模式(verify)**:验证用户凭据是否有效
|
||
2. **密码获取模式(getpassword)**:获取用户的明文密码,用于NTLM挑战-响应计算
|
||
|
||
## API要求
|
||
|
||
### 1. 验证模式
|
||
|
||
用于验证用户凭据是否有效。
|
||
|
||
**请求格式**:
|
||
```
|
||
GET https://your-api-server/api/checkperm/?username=<用户名>&password=<密码>&mode=verify
|
||
```
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"status": "success"
|
||
}
|
||
```
|
||
|
||
### 2. 密码获取模式
|
||
|
||
用于获取用户的明文密码,这是NTLM认证所必需的。
|
||
|
||
**请求格式**:
|
||
```
|
||
GET https://your-api-server/api/checkperm/?username=<用户名>&mode=getpassword
|
||
```
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"status": "success",
|
||
"password": "用户的明文密码"
|
||
}
|
||
```
|
||
|
||
## 配置
|
||
|
||
在`rdpgw-auth.yaml`中配置API认证:
|
||
|
||
```yaml
|
||
apiauth:
|
||
enabled: true
|
||
apiurl: "https://your-api-server/api/checkperm/"
|
||
```
|
||
|
||
## 安全考虑
|
||
|
||
1. **密码安全**:API必须通过HTTPS提供,并且在内部网络中运行以确保安全性
|
||
|
||
2. **密码存储**:您的API服务必须能够以某种形式获取或计算用户密码,这需要安全的密码存储机制
|
||
|
||
3. **替代方案**:如果不想暴露明文密码,请考虑使用其他认证方式,如OpenID Connect或基本认证
|
||
|
||
## NTLM认证流程
|
||
|
||
1. 客户端(如FreeRDP)发送NTLM协商消息到RDPGW
|
||
2. RDPGW生成挑战并发送回客户端
|
||
3. 客户端计算响应并发送认证消息
|
||
4. RDPGW调用API以`getpassword`模式获取用户密码
|
||
5. RDPGW使用获取的密码计算期望的响应并与客户端响应比较
|
||
6. 如果匹配,认证成功;否则,认证失败
|
||
|
||
## 优势
|
||
|
||
- 保持标准NTLM认证流程,客户端无需修改
|
||
- 与您的用户管理系统集成
|
||
- 支持所有NTLM客户端,包括标准Windows远程桌面客户端
|
||
|
||
## 注意事项
|
||
|
||
- 您的API必须能够安全地存储和提供用户密码
|
||
- 明文密码传输存在固有的安全风险,即使在加密通道中也是如此
|
||
- 确保API服务器仅对RDPGW服务器可访问,并考虑实施IP限制或类似措施 |