代码之家  ›  专栏  ›  技术社区  ›  this_is_om_vm

在KMIP(密钥管理互操作性协议)中定位和获取单个操作

  •  0
  • this_is_om_vm  · 技术社区  · 6 年前

    有人在一个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操作没有发展unique的使用标识符.can帮助某人?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Xamrix    6 年前

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

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

    服务器返回找到的对象的唯一标识符列表, 然后可以使用Get操作检索。[...]. 如果 单个唯一标识符返回给客户端,然后返回到服务器 将此操作返回的唯一标识符复制到 ID占位符变量。如果定位操作匹配超过 一个对象,并且请求中省略了最大项值,或者 设置为大于1的值,则服务器应清空ID 占位符,导致批处理的任何后续操作 不显式指定唯一标识符的, 失败。

    在Get操作中 Get Request Payload table 指定不需要唯一标识符,并说明:

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

    然后为了 定位操作 ,如果定位结果只有一个唯一标识符,则服务器必须缓存ID占位符中的值(独立于下一个操作),否则必须清空ID占位符。

    最后为了 Get操作 ,如果请求中未定义唯一标识符,则服务器必须使用ID占位符执行操作。如果ID占位符为空,则操作一定会失败,并出现类似“Invalid Field”的结果(我不确定结果的原因,但这对我有意义)。