private Callback<Void> securityPostProcessRequestCallback(BlobId blobId) {
      return buildCallback(metrics.headBlobSecurityPostProcessRequestMetrics, result -> {
        GetOption getOption = getGetOption(restRequest, frontendConfig.defaultRouterGetOption);
        // inject encryption metrics if need be
        if (BlobId.isEncrypted(blobId.getID())) {
          RestRequestMetrics requestMetrics =
              metrics.headBlobMetricsGroup.getRestRequestMetrics(restRequest.isSslUsed(), true);
          restRequest.getMetricsTracker().injectMetrics(requestMetrics);
        }
        router.getBlob(blobId.getID(), new GetBlobOptionsBuilder().operationType(GetBlobOptions.OperationType.BlobInfo)
            .getOption(getOption)
            .restRequest(restRequest)
            .build(), routerCallback(), QuotaUtils.buildQuotaChargeCallback(restRequest, quotaManager, false));
      }, restRequest.getUri(), LOGGER, finalCallback);
    }
After {@link SecurityService#postProcessRequest} finishes, call {@link Router#getBlob} to dget
the blob info from the storage layer.
@param blobId the {@link BlobId} to get info
@return a {@link Callback} to be used with {@link SecurityService#postProcessRequest}.
ambry-frontend/src/main/java/com/github/ambry/frontend/HeadBlobHandler.java