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