在KMIP(密钥管理互操作性协议)中定位并获得单一操作

时间:2018-11-19 06:20:47

标签: java kmip

有人在单个kmip请求中使用了定位和获取操作。由于难以同时进行操作,因此出现错误。 如您所见,我正在向服务器发送kmip请求。

<RequestMessage>
  <RequestHeader>
    <ProtocolVersion>
      <ProtocolVersionMajor type="Integer" value="1"/>
      <ProtocolVersionMinor type="Integer" value="2"/>
    </ProtocolVersion>
    <Authentication>
      <Credential>
        <CredentialType type="Enumeration" value="UsernameAndPassword"/>
        <CredentialValue>
          <Username type="TextString" value="vijans"/>
          <Password type="TextString" value="asdf1234"/>
        </CredentialValue>
      </Credential>
    </Authentication>
    <BatchOrderOption type="Boolean" value="1"/>
    <BatchCount type="Integer" value="2"/>
  </RequestHeader>
  <BatchItem>
    <Operation type="Enumeration" value="Locate"/>
    <UniqueBatchItemID type="ByteString" value="31303030303031"/>
    <RequestPayload>
      <Attribute>
        <AttributeName type="TextString" value="Name"/>
        <AttributeValue>
          <NameValue type="TextString" value="new_ss_nv"/>
          <NameType type="Enumeration" value="UninterpretedTextString"/>
        </AttributeValue>
      </Attribute>
    </RequestPayload>
  </BatchItem>
  <BatchItem>
    <Operation type="Enumeration" value="Get"/>
    <UniqueBatchItemID type="ByteString" value="31303030303032"/>
    <RequestPayload/>
  </BatchItem>
</RequestMessage>

这是无效的,因为get操作不会演变为使用唯一标识符。可以帮助别人吗?

1 个答案:

答案 0 :(得分:1)

您的KMIP服务器必须实现ID占位符机制。这是一个临时的唯一标识符变量,用于在请求中的批处理项目之间缓存标识符 (请参阅规范中的Client-to-Server Operations部分)。

您可以看到每个操作如何使用或保存此ID占位符。 Locate operation的摘录:

  

服务器返回找到的对象的唯一标识符的列表,   然后可以使用Get操作来检索。 [...]。如果一个   唯一的唯一标识符返回给客户端,然后服务器返回   应将此操作返回的唯一标识符复制到   ID占位符变量。如果“定位”操作匹配多个   一个对象,并且在请求中省略了“最大项目数”值,或者   设置为大于1的值,则服务器应清空ID   占位符,导致随后进行的所有批处理操作   定位,并且没有明确指定唯一标识符,   失败。

在“获取”操作中,Get Request Payload table指定不需要唯一标识符,并描述:

  

如果省略,则ID占位符值由服务器用作   唯一标识符。

然后进行 Locate操作,如果使用单个唯一标识符定位结果,则服务器必须将该值缓存在ID占位符中(与下一个操作无关),否则必须清空ID占位符。

最后对于 Get操作,如果请求中未定义唯一标识符,则服务器必须使用ID占位符进行操作。如果ID占位符为空,则操作必须失败,并显示类似“无效字段”的结果(我不确定该结果的原因,但这对我来说很有意义)。