我需要通过对Active Roles Server的 SPMLv2 SOAP 请求来维护 Active Directory 服务。
我正在尝试做一些表面上简单的事情:从对象中删除电话号码属性。我以前从未听说过 SPML,所以我花了一些时间试图了解OASIS 开放标准列表中可用的规范。
如果值是已知的,我已经想出了如何做到这一点。例如,下面的有效负载将删除telephoneNumber 属性,如果它匹配值'12345',但不匹配任何其他值。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:oasis:names:tc:SPML:2:0">
<soapenv:Header/>
<soapenv:Body>
<urn:modifyRequest xmlns:spml="urn:oasis:names:tc:SPML:2:0">
<urn:psoID ID="CN=Some User,OU=User,OU=Accounts,DC=someorganisation,DC=org"/>
<urn:modification>
<modification name="telephoneNumber" operation="delete" xmlns="urn:oasis:names:tc:DSML:2:0:core">
<value>12345</value>
</modification>
</urn:modification>
</urn:modifyRequest>
</soapenv:Body>
</soapenv:Envelope>
我想不通的是如何为未指定的值执行此操作,即在删除它之前我不在乎该值是什么,我只想删除它。我怀疑这与 SelectionType 有关,我只需要使用“匹配任何内容”选择器,但我无法理解规范。
有任何想法吗?
编辑:为了增加混乱,我看到我们正在使用 DSMLv2 命名空间进行修改。我刚刚从 Active Roles SPML 服务文档的示例中提取了这个,所以我不知道它是如何/为什么工作的。SPML 规范确实提到了 DSML,但据我所知,它没有给出任何关于其使用的上下文。它实际上可能是供应商特定的实现。