Guía Rápida de Operaciones del Conector

Esta página proporciona detalles sobre cómo comenzar con el connector operations API.

Interfaz OperableConnector

Antes de comenzar, asegúrese de que los conectores que desea operar implementen el OperableConnector interfaz. Sin esto, la API no se pueden realizar operaciones sobre ellos.

public interface OperableConnector {

    /**
     * Retrieve name of the connector.
     */
    String getName();

    /**
     * Starts the connector.
     */
    void start();

    /**
     * Starts the connector's health check procedure.
     */
    void startHealthCheck();

    ConnectorHealth getHealth();

    /**
     * Shuts down the connector.
     *
     * @param reason the reason for shutdown
     */
    CompletionStage<Void> shutdown(ShutdownReason reason);

    /**
     * Returns the connector's running status
     */
    boolean isRunning();

    /**
     * Returns the connector's configuration.
     */
    ConnectorConfig getConfig();

    /**
     * Returns all the connector's transports.
     */
    List<? extends OperableConnectorTransport> getTransports();

    /**
     * Abstraction of a connector's configuration.
     */
    interface ConnectorConfig {

        String getConfigRoot();
    }
}

Introducción

Para registrar el controlador, simplemente incluya lo siguiente Maven dependency. La auto-configuración de Spring realizará la rest

(Nota: para las aplicaciones construidas por el cliente, la versión provendrá del BOM para la versión que usted está utilizando).

 <dependency>
    <groupId>com.iconsolutions.ipf.core.connector</groupId>
    <artifactId>connector-operations-api</artifactId>
</dependency>

Enmascaramiento de Configuración Sensible

Este componente tiene la siguiente configuración que se puede establecer para enmascarar claves sensibles.

Por defecto, heredará de la IPF Platform configuración de enmascaramiento, consulte Configuración de enmascaramiento para más detalles.
ipf.connector.config.masking.sensitive-values = ${? ipf.config.masking.sensitive-values} {
  enabled = true
  replacement-value = "******"
  keys-to-mask = ["password", "secret"] # replace a key's value if this token exists in the key
}

Auditoría

Esta sección trata sobre cómo configurar el registro de auditoría en los puntos finales del operador de conector.

Requisitos previos

Auditoría de solicitudes a la connector operations API asume que el contexto de seguridad de Spring ha sido configurado y que solo los usuarios autenticados pueden realizar solicitudes a recursos protegidos. Sin un usuario autenticado, es difícil auditar quién realizó la solicitud.

Configuración de Web Reactiva

La auditoría se implementa con el Spring framework la pila web reactiva de. Se puede añadir una etapa de filtro de auditoría como parte del manejo de solicitudes implementando el WebFilter interfaz y anotándola con @Component. Un ejemplo de esto se muestra a continuación.

@Slf4j
@Component
public class AuditLogFilter implements WebFilter {

    private final ServerWebExchangeMatcher matcher;

    public AuditLogFilter() {
        webExchangeMatcher = ServerWebExchangeMatchers.pathMatchers("/connectors/**"); (1)
    }

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
        ServerHttpRequest request = exchange.getRequest();
        return webExchangeMatcher.matches(exchange)
                .filter(ServerWebExchangeMatcher. MatchResult::isMatch)
                .flatMap(m -> exchange.getPrincipal()
                    .doOnNext(principal -> logPrincipal(request, principal))) (2)
                .then(chain.filter(exchange));
    }

    private void logPrincipal(ServerHttpRequest request, Principal principal) { (3)
        log.info("{} {} principal.name: {}",
            request.getMethod(),
            request.getPath(),
            principal.getName());
    }
}
1 El filtro de intercambio web nos permite iniciar sesión únicamente en puntos finales específicos.
2 El principal solo se registrará si está configurado en el intercambio, de lo contrario, no ocurrirá nada.
3 El registro puede ser customized, en este ejemplo se registra el método de solicitud y la ruta con el nombre del principal.

Configuración de Bloqueo Web

Los servidores web de bloqueo tradicionales deben ser configurados de manera diferente. Afortunadamente, esto también es bastante simple, ya que Spring ha implementado un Filtro que puede ser utilizado para registrar solicitudes. Esto también puede configurarse para funcionar únicamente en puntos finales específicos si se requiere.

El fragmento de código a continuación muestra cómo se puede configurar esto registrando un par de beans en una clase de configuración.

@Configuration
public class AuditLogConfig {
    @Bean
    public FilterRegistrationBean<AbstractRequestLoggingFilter> (1)
    loggingFilterRegistration(AbstractRequestLoggingFilter requestLoggingFilter) {
        var registration = new FilterRegistrationBean<>(requestLoggingFilter);
        registration.addUrlPatterns("/connectors/*");
        return registration;
    }

    @Bean
    public AbstractRequestLoggingFilter requestLoggingFilter() { (2)
        CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter();
        loggingFilter.setIncludeClientInfo(true);
        loggingFilter.setIncludeQueryString(true);
        loggingFilter.setIncludePayload(true);
        loggingFilter.setMaxPayloadLength(64000);
        return loggingFilter;
    }
}
1 El registro del filtro bean se puede configurar para registrar únicamente las solicitudes que coincidan con los patrones de URL proporcionados.
2 Aquí, se configura el filtro de registro. A custom implementación de la AbstractRequestLoggingFilter podría utilizarse en su lugar si se requiere un mayor control sobre el comportamiento.