private Object getSubjectOrPrincipal(final ClientRegistrationMetadata clientRegistrationMetadata,
      final DistributedMember member, final DistributedSystem system, final String authenticator) {
    final Object subjectOrPrincipal;

    // in multi-user case, this would be null
    if (clientRegistrationMetadata.getClientCredentials() != null) {
      secureLogger.debug("CacheClientNotifier: verifying credentials for proxyID: "
          + clientRegistrationMetadata.getClientProxyMembershipID());
      subjectOrPrincipal = Handshake
          .verifyCredentials(authenticator,
              clientRegistrationMetadata.getClientCredentials(),
              system.getSecurityProperties(),
              logWriter, securityLogWriter, member,
              cache.getSecurityService());
    } else {
      subjectOrPrincipal = null;
    }

    return subjectOrPrincipal;
  }
notify interested clients of the given cache event using the given update message. The event
should have routing information in it that determines which clients will receive the event.
geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientNotifier.java