mvc enablewebsecurity configuration maven repository

configuration - enablewebsecurity - Deshabilitar el repositorio central de Maven



spring security release (7)

Convenido. No se deben permitir descargas directas desde repositorios externos en las versiones de lanzamiento.

La respuesta específica a su pregunta es la segunda parte de mi respuesta :-)

Configurar un administrador de repositorio

Recomiendo configurar un administrador de repositorio local de Maven. Buenas opciones son las siguientes:

Todos estos son capaces de actuar como un proxy de almacenamiento en caché para las jarras centrales Maven disponibles externamente.

También podría estar interesado en la versión de profesión de Nexus. Incluye un paquete de Adquisiciones para administrar bibliotecas externas. También proporciona complementos de Maven para gestionar de forma centralizada el archivo de configuración de Maven, que es la segunda parte de mi respuesta ...

Configuración local de Maven

Actualice el archivo de configuración ubicado en el siguiente directorio:

$ HOME / .m2 / settings.xml

Especifique que todas las solicitudes centrales se deben redirigir al repositorio local de Maven:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <mirrors> <mirror> <id>central-proxy</id> <name>Local proxy of central repo</name> <url>http://<hostname>/central</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ... </settings>

La política de mi empresa no ve con buenos ojos los artefactos que se descargan automáticamente (tienen que ser aprobados), así que para poder usar Maven, necesito deshabilitar el acceso al repositorio central de Maven.

En otras palabras, no quiero que Maven intente descargar desde central.

Sé cómo configurar un repositorio local (en red o no), mi idea es usar una máquina "bendecida" para actualizar el repositorio local.

PD: podría bloquear solicitudes a nivel proxy / red, pero estoy preguntando cómo hacerlo con la configuración de Maven.

ACTUALIZACIÓN Finalmente descubrí cómo hacerlo. En el hogar de maven, en el directorio conf hay un settings.xml global. Puede establecer un mirror en central que apunta a algún servidor interno o simplemente anular su definición.


En el caso de un repositorio de toda la compañía que debe manejar todas y cada una de las solicitudes de artefactos, puede configurar un único repositorio para reflejar todo en su $MAVEN_HOME/conf/settings.xml :

<mirror> <id>internal-repository</id> <name>Maven Repository Manager running on repo.mycompany.com</name> <url>http://repo.mycompany.com/proxy</url> <mirrorOf>*</mirrorOf> </mirror>

Source


En el pasado, descubrí que la solución más robusta es anular manualmente los repositorios integrados. Encontré este enfoque mejor que cambiar el POM principal, settings.xml, mirror o profiles. Para todos los proyectos internos, ponga debajo de la configuración en su POM.

<repositories> <repository> <id>central</id> <url>http://internalrepo</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>snapshots</id> <url>http://internalrepo</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://internalrepo</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>snapshots</id> <url>http://internalrepo</url> <releases> <enabled>false</enabled> </releases> </pluginRepository> </pluginRepositories>


Encontré útil la página Configuración de resolución de artefactos . Establece lo siguiente sobre el "mirror any" -setup.

No use "mirror any" por sí mismo, como su única regla de resolución. Úselo para hacer cumplir cualquier resolución de artefactos que se haga estrictamente a través de Artifactory. La configuración de proxying "espejo cualquiera" funciona para repositorios definidos. Reemplazará, pero no ocultará, los repositorios centrales e instantáneas incorporados, a menos que el usuario lo invalide. Define una regla de proxying de grano grueso que no diferencia entre lanzamientos e instantáneas, y confía en los repositorios definidos para hacer este filtrado de resolución.

El Super POM de Maven define el repositorio central. Aquí se explica cómo puede anular el repositorio central y el repositorio de complementos para versiones e instantáneas:

<repositories> <repository> <id>central</id> <url>http://repo1.maven.org/maven2</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://repo1.maven.org/maven2</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories>

Por supuesto, debe tener un reemplazo configurado, como se establece en la respuesta aceptada.


La forma más simple es usar el parámetro -o que le dice a maven que se ejecute en modo fuera de línea. Por supuesto, deberá asegurarse de que su repositorio local tenga todo lo que necesita, pero esto al menos soluciona cualquier problema de seguridad que pueda tener con la conexión automática a un repositorio no aprobado.


Parece que alguien está intentando activamente hacer cumplir su política de gobierno de código abierto. Eso es bueno escuchar.

De acuerdo con el otro comentario aquí sobre el uso de un administrador de repositorio interno para alojar los componentes necesarios para Maven.

Como menciona Rory, debe asegurarse de tener todo lo que necesita en ese repositorio antes de detener el acceso a Maven Central (The Central Repository) o cualquier otro repositorio público de código abierto.

Mark hace una buena observación sobre las capacidades de adquisición de Nexus. Una vez que el administrador de repo interno esté configurado con todos sus componentes "aprobados", también puede activar la característica Nexus Repository Health Check (es gratis), que informa sobre todas las licencias de componentes, vulnerabilidades de seguridad conocidas, etc. para componentes en tus repositorios

Divulgación completa, trabajo para Sonatype.