
Repositorio de Spring Cloud Gateway que demuestra la explotación de CVE-2022-22947 para pruebas de seguridad de API y análisis de vulnerabilidades.
//// NO EDITE ESTE ARCHIVO. FUE GENERADO. Los cambios manuales en este archivo se perderán cuando se genere de nuevo. Edite los archivos del directorio src/main/asciidoc/ en su lugar. ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master"] image::https://api.codacy.com/project/badge/Grade/a6885a06921e4f72a0df0b7aabd6d118["Codacy code quality", link="https://www.codacy.com/app/spring-cloud/spring-cloud-gateway?utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-gateway&utm_campaign=Badge_Grade"]
Este proyecto proporciona una puerta de enlace de API (API Gateway) construida sobre el ecosistema Spring, que incluye: Spring 5, Spring Boot 2 y Project Reactor. Spring Cloud Gateway tiene como objetivo proporcionar una forma sencilla pero eficaz de enrutar hacia las API y de aplicarles preocupaciones transversales, como: seguridad, monitoreo/métricas y resiliencia.
== Características
DiscoveryClient para configurar rutas== Compilación
:jdkversion: 1.8
=== Compilación y pruebas básicas
Para compilar el código fuente deberá instalar JDK {jdkversion}.
Spring Cloud usa Maven para la mayoría de las actividades relacionadas con la compilación, y debería poder ponerse en marcha con bastante rapidez clonando el proyecto que le interese y escribiendo
NOTA: También puede instalar Maven (>=3.3.3) por su cuenta y ejecutar el comando mvn
en lugar de ./mvnw en los ejemplos siguientes. Si hace eso, también
podría necesitar agregar -P spring si su configuración local de Maven no
contiene declaraciones de repositorio para los artefactos de prelanzamiento de Spring.
NOTA: Tenga en cuenta que es posible que necesite aumentar la cantidad de memoria
disponible para Maven estableciendo una variable de entorno MAVEN_OPTS con
un valor como -Xmx512m -XX:MaxPermSize=128m. Intentamos cubrir esto en
la configuración de .mvn, así que si encuentra que tiene que hacerlo para que la
compilación tenga éxito, abra un ticket para que se agreguen los ajustes al
control de fuentes.
Los proyectos que requieren middleware (es decir, Redis) para las pruebas generalmente requieren que una instancia local de Docker esté instalada y en ejecución.
=== Documentación
El módulo spring-cloud-build tiene un perfil "docs" y, si lo activa,
intentará compilar las fuentes asciidoc desde
src/main/asciidoc. Como parte de ese proceso, buscará un
README.adoc y lo procesará cargando todos los includes, pero sin
analizarlo ni renderizarlo, solo copiándolo a ${main.basedir}
(por defecto ${basedir}, es decir, la raíz del proyecto). Si hay
cambios en el README, aparecerán después de una compilación de Maven como
un archivo modificado en el lugar correcto. Solo haga commit y envíe el cambio.
=== Trabajar con el código
Si no tiene preferencia por un IDE, le recomendamos que use https://www.springsource.com/developer/sts[Spring Tools Suite] o https://eclipse.org[Eclipse] cuando trabaje con el código. Usamos el complemento de Eclipse https://eclipse.org/m2e/[m2eclipse] para el soporte de Maven. Otros IDE y herramientas también deberían funcionar sin problemas siempre que usen Maven 3.3.3 o superior.
==== Activar el perfil de Maven de Spring
Los proyectos de Spring Cloud requieren que el perfil de Maven 'spring' esté activado para resolver los repositorios de hitos (milestones) y snapshots de Spring. Use su IDE preferido para activar este perfil; de lo contrario, podría experimentar errores de compilación.
==== Importar en Eclipse con m2eclipse
Recomendamos el complemento de Eclipse https://eclipse.org/m2e/[m2eclipse] cuando trabaje con Eclipse. Si aún no tiene m2eclipse instalado, está disponible en el "eclipse marketplace".
NOTA: Las versiones antiguas de m2e no admiten Maven 3.3, por lo que, una vez
importados los proyectos en Eclipse, también deberá indicarle a
m2eclipse que use el perfil correcto para los proyectos. Si ve
muchos errores diferentes relacionados con los POM de los proyectos, verifique
que tenga una instalación actualizada. Si no puede actualizar m2e,
agregue el perfil "spring" a su settings.xml. Alternativamente, puede
copiar la configuración del repositorio del perfil "spring" del pom
principal en su settings.xml.
==== Importar en Eclipse sin m2eclipse
Si prefiere no usar m2eclipse, puede generar los metadatos del proyecto de Eclipse con el siguiente comando:
$ ./mvnw eclipse:eclipse
Los proyectos de Eclipse generados se pueden importar seleccionando import existing projects
en el menú file.
== Contribuciones
:spring-cloud-build-branch: master
Spring Cloud se publica bajo la licencia Apache 2.0, no restrictiva, y sigue un proceso de desarrollo de Github muy estándar, usando el rastreador de Github para los problemas y fusionando las pull requests en master. Si quiere contribuir incluso con algo trivial, no lo dude, pero siga las pautas a continuación.
=== Firmar el Acuerdo de Licencia del Colaborador
Antes de aceptar un parche o pull request no trivial, necesitaremos que firme el https://cla.pivotal.io/sign/spring[Contributor License Agreement]. Firmar el acuerdo del colaborador no otorga a nadie derechos de commit en el repositorio principal, pero sí significa que podemos aceptar sus contribuciones y recibirá un crédito de autor si lo hacemos. Es posible que se pida a los colaboradores activos que se unan al equipo central y se les dé la capacidad de fusionar pull requests.
=== Código de Conducta
Este proyecto se adhiere al https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[código de conducta] del Contributor Covenant. Al participar, se espera que cumpla este código. Informe cualquier comportamiento inaceptable a [email protected].
=== Convenciones de código y mantenimiento
Ninguna de estas es esencial para una pull request, pero todas ayudan. También pueden agregarse después de la pull request original, pero antes de una fusión (merge).