# 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限制或类似措施