public void cleanup(boolean fromCacheClientProxy) {
    // for old security model
    for (UserAuthAttributes userAuth : uniqueIdVsUserAuth.values()) {
      // isDurable is checked for multiuser in CQ
      if (!fromCacheClientProxy && !userAuth.isDurable()) {
        // from serverConnection class
        cleanUserAuth(userAuth);
      } else if (fromCacheClientProxy && userAuth.isDurable()) {
        // from CacheClientProxy class
        cleanUserAuth(userAuth);
      }
    }

    // for integrated security, doesn't matter if this is called from proxy
    // or from the connection, we are closing the client connection
    synchronized (this) {
      for (final Long subjectId : uniqueIdVsSubjects.keySet()) {
        removeSubject(subjectId);
      }
    }
  }
This is per ServerConnection or per CacheClientProxy, corresponding to only one client
connection.
Credentials should usually be just one, only multiple in multi-user case.
geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientUserAuths.java