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

如何编写SPML请求从Adaxes获取所有AD用户详细列表(适配TalenD)

获取所有AD用户的SPML请求(针对Softerra Adaxes)

我之前在使用Adaxes的SPML接口批量拉取AD用户时也踩过坑,确实因为官方文档不够详细走了不少弯路。结合你给出的单个用户查询示例,下面给你整理出能获取所有AD用户的正确SPML请求,还有关键参数的说明和注意事项:

正确的SPML请求代码

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <!-- 若需要身份验证,在此添加认证头(比如Basic Auth的Base64编码内容) -->
    <!-- <Authorization>Basic dXNlcjpwYXNzd29yZA==</Authorization> -->
  </soap:Header>
  <soap:Body>
    <spml:searchRequest xmlns:spml="urn:oasis:names:tc:SPML:2:0" returnData="all">
      <spml:targetID>acme.com</spml:targetID>
      <spml:query xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core">
        <dsml:filter>
          <dsml:equalityMatch name="objectclass">
            <dsml:value>user</dsml:value>
          </dsml:equalityMatch>
        </dsml:filter>
      </spml:query>
    </spml:searchRequest>
  </soap:Body>
</soap:Envelope>

关键参数说明

  • <searchRequest>:替代单个查询的<lookupRequest>,这是SPML 2.0标准的批量搜索操作,专门用于获取符合条件的一组对象
  • returnData="all":指定返回用户的所有属性;如果只需要特定属性(比如CN、uid、email),可以改成returnData="selected",再添加<spml:returnAttribute name="CN"/>这类节点列出需要的属性
  • <targetID>:填写你的实际AD域名称,和你单个查询示例里的acme.com保持一致
  • <dsml:filter>:通过DSML过滤器限定只搜索objectclass=user的对象,避免返回计算机、组等其他AD对象

重要注意事项

  • 权限配置:确保用于SPML请求的Adaxes账号拥有读取所有AD用户的权限,且Adaxes的SPML服务已启用并允许执行search操作
  • 分页处理:如果AD用户数量较多,Adaxes会分页返回结果。响应中会包含<spml:pagedResults>节点,里面有remaining(剩余用户数)和resumeToken,你需要在下一次请求中添加<spml:resumeToken>节点带上这个token,才能获取下一页数据
  • Talend适配:在Talend的SOAP请求组件中,要正确设置SOAP Action为urn:oasis:names:tc:SPML:2:0#search,并使用tXMLMap等组件解析响应中的多个<pso>节点(每个节点对应一个用户的详细信息)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:14:36