如何在Ruby的Faraday库中设置NTLM协议的授权请求头
Faraday 配置 NTLM 授权请求头方案
可以实现该需求。Faraday 核心库未内置 NTLM 认证支持,可通过第三方中间件 faraday-ntlm 完成对应配置。
具体配置流程
1. 安装依赖
- 全局安装命令:
gem install faraday-ntlm - 若使用 Bundler 管理项目依赖,在 Gemfile 中添加如下配置后执行
bundle install即可:
gem 'faraday-ntlm'
2. 初始化带 NTLM 认证的 Faraday 连接
配置示例如下,发起请求时中间件会自动处理 NTLM 握手流程并携带对应授权头:
require 'faraday' require 'faraday/ntlm' # 替换为目标服务的基础地址 conn = Faraday.new('https://target-service-domain.com') do |config| # NTLM 认证参数,domain 和 workstation 为可选参数,仅目标服务要求时填写 config.ntlm('your_username', 'your_password', domain: 'your_service_domain', workstation: 'your_workstation_name') # 其他自定义配置,如适配器、解析中间件等 config.adapter Faraday.default_adapter end # 正常发起请求即可 response = conn.get('/your-request-path')
3. 注意事项
- NTLM 是基于连接的认证协议,建议搭配
faraday-net_http_persistent适配器开启持久连接,减少重复握手的性能开销 - 若请求返回 401 状态码,优先校验用户名、密码、域参数是否匹配目标服务要求,同时确认目标服务确实开启了 NTLM 认证支持
- 访问 HTTPS 站点时若遇到证书校验错误,测试环境可临时添加
config.ssl.verify = false跳过校验,生产环境必须开启证书校验保证安全
内容的提问来源于stack exchange,提问作者user3517175
相关产品推荐
相关产品推荐

