You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过curl对接配置mod_auth_openidc/mod_oauth2的Apache AD认证服务?

利用Apache mod_auth_openidc完成程序化认证(curl方式)

这种方式完全可行,而且确实是更安全的做法——让Apache保管客户端密钥,你只需要通过curl模拟浏览器的认证流程,获取Apache生成的会话凭证后就能访问受保护资源,不需要直接对接AD认证服务器暴露密钥。

之前访问受保护URI被重定向到AD登录页,是因为curl默认没有携带认证会话的Cookie,Apache检测到未认证,就触发了OIDC的授权码流程重定向。下面是具体的操作步骤:

步骤1:触发认证流程,获取AD登录地址

先请求受保护的URI,拿到AD的授权跳转地址:

curl -v https://你的Apache受保护URI

从响应的Location头中复制AD的授权URL,里面包含client_id、state、nonce等必要参数,格式大概是:
https://AD认证服务器地址/authorize?client_id=xxx&redirect_uri=xxx&state=yyy&nonce=zzz&response_type=code&scope=openid

步骤2:模拟用户登录AD,提交凭证

AD的登录页面是表单提交,需要找到表单的提交地址(通常从登录页面的HTML里找action属性),然后用curl发送POST请求,带上用户名密码和之前获取的state参数,同时保存Cookie:

curl -v -c cookies.txt -X POST https://AD登录表单提交地址 \
-d "username=你的AD账号&password=你的AD密码&state=步骤1中的state值&session_state=xxx"

注意:session_state等其他参数可能需要从AD登录页面的表单里提取,根据实际情况调整。

步骤3:跟随回调,获取Apache的会话Cookie

AD验证通过后会重定向回Apache的OIDC回调URI(就是步骤1里redirect_uri参数的值),此时用curl跟随重定向,带上之前保存的Cookie:

curl -v -L -b cookies.txt https://Apache的回调URI?code=xxx&state=步骤1中的state值

这一步中,Apache会自动用授权码code向AD换取访问令牌和ID令牌,然后给你的curl会话设置一个认证Cookie(通常叫oidc_session之类的)。

步骤4:使用会话Cookie访问受保护资源

现在拿着保存的Cookie,直接请求受保护URI就能成功访问了:

curl -b cookies.txt https://你的Apache受保护URI

额外注意事项

  • 如果是自签名HTTPS证书,curl需要加-k参数跳过证书验证(生产环境不建议这么做,最好配置可信证书)。
  • 所有步骤要确保Cookie的正确保存和携带,-c是保存Cookie到文件,-b是从文件读取Cookie。
  • 确认Apache的mod_auth_openidc配置中,OIDCRedirectURI已经正确设置,并且AD认证服务器上已经注册了这个回调地址。

内容的提问来源于stack exchange,提问作者olddirewolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 10:42:45