public static void checkAndEnrichSourceAuthentication(
      final ConfigNodeProcedureEnv env, final Map<String, String> extractorAttributes) {
    if (Objects.isNull(extractorAttributes)) {
      return;
    }
    final PipeParameters extractorParameters = new PipeParameters(extractorAttributes);

    final String pluginName =
        extractorParameters
            .getStringOrDefault(
                Arrays.asList(
                    PipeExtractorConstant.EXTRACTOR_KEY, PipeExtractorConstant.SOURCE_KEY),
                BuiltinPipePlugin.IOTDB_EXTRACTOR.getPipePluginName())
            .toLowerCase();

    if (!pluginName.equals(BuiltinPipePlugin.IOTDB_EXTRACTOR.getPipePluginName())
        && !pluginName.equals(BuiltinPipePlugin.IOTDB_SOURCE.getPipePluginName())) {
      return;
    }

    if (extractorParameters.hasAttribute(PipeExtractorConstant.EXTRACTOR_IOTDB_USER_KEY)
        || extractorParameters.hasAttribute(PipeExtractorConstant.SOURCE_IOTDB_USER_KEY)
        || extractorParameters.hasAttribute(PipeExtractorConstant.EXTRACTOR_IOTDB_USERNAME_KEY)
        || extractorParameters.hasAttribute(PipeExtractorConstant.SOURCE_IOTDB_USERNAME_KEY)) {
      final String hashedPassword =
          env.getConfigManager()
              .getPermissionManager()
              .login4Pipe(
                  extractorParameters.getStringByKeys(
                      PipeExtractorConstant.EXTRACTOR_IOTDB_USER_KEY,
                      PipeExtractorConstant.SOURCE_IOTDB_USER_KEY,
                      PipeExtractorConstant.EXTRACTOR_IOTDB_USERNAME_KEY,
                      PipeExtractorConstant.SOURCE_IOTDB_USERNAME_KEY),
                  extractorParameters.getStringByKeys(
                      PipeExtractorConstant.EXTRACTOR_IOTDB_PASSWORD_KEY,
                      PipeExtractorConstant.SOURCE_IOTDB_PASSWORD_KEY));
      if (Objects.isNull(hashedPassword)) {
        throw new PipeException("Authentication failed.");
      }
      extractorParameters.addOrReplaceEquivalentAttributes(
          new PipeParameters(
              Collections.singletonMap(
                  PipeExtractorConstant.SOURCE_IOTDB_PASSWORD_KEY, hashedPassword)));
    }
  }
Check the {@link PipePlugin} configuration in Pipe. If there is an error, throw {@link
PipeException}. If there is a Pipe with the same name and there is no IfNotExists condition in
{@link #createPipeRequest}, throw {@link PipeException}. If there is an IfNotExists condition,
return {@code false}. If there is no Pipe with the same name, return {@code true}.

@param env the environment for the procedure
@return {@code true} The pipeline does not exist {@code false} The pipeline already exists and
    satisfies the IfNotExists condition
@throws PipeException
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/task/CreatePipeProcedureV2.java