SpringCloud integra el centro de configuración de nacos y configura los permisos de nacos

1. Preparación del entorno

La versión springcloud debe ser compatible con la versión springboot, de lo contrario no se puede ejecutar, nacos es una subsidiaria de springcloud alibaba, y la versión correspondiente a la springcloud original es diferente de la springcloud ecológica original. La versión de ejemplo en este artículo es la
siguiente

  • nube de primavera: Hoxton.SR9
  • springcloud alibaba: 2.2.3.LIBERAR
  • springboot:2.3.5.LIBERAR
  • nacos:2.2.3.LIBERAR

Introduce las siguientes dependencias en el proyecto springcloud

	<dependencyManagement>
        <dependencies>
            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- springCloud alibaba -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
	</dependencyManagement>

	<dependencies>
		<!-- nacos注册中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- nacos配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!-- bootstrap 集成配置中心需要用bootstrap 配置文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.0</version>
        </dependency>
	</dependencies>

2. Archivo de configuración de Bootstrap

Springcloud integra el centro de configuración de nacos. Necesita leer el archivo de configuración de nacos y debe usar el archivo de configuración de arranque. Springboot necesita introducir la dependencia de arranque para leer el archivo de configuración de arranque. Como se mencionó anteriormente, el centro de configuración de arranque de configuración de nacos es como sigue:

#指定开发环境
spring.config.activate.on-profile=dev
#指定微服务名
spring.application.name=gateway-service
#服务器地址
spring.cloud.nacos.config.server-addr=localhost:8848,localhost:8850
#默认为Public命名空间,不需要写,如果加上的话会导致加载不到配置文件
spring.cloud.nacos.config.namespace=cb3f7a6e-ec92-4de0-b616-ef0d311ac4c3
#文件名 -- 如果没有配置则默认为 ${spring.appliction.name}
spring.cloud.nacos.config.prefix=item-service
#指定文件后缀
spring.cloud.nacos.config.file-extension=yaml
#指定分组信息
spring.cloud.nacos.config.group=DEFAULT_GROUP
# 注册中心地址
spring.cloud.nacos.discovery.server-addr=localhost:8848,localhost:8850
#默认为Public命名空间,不需要写,如果加上的话会导致加载不到配置文件
spring.cloud.nacos.discovery.namespace=cb3f7a6e-ec92-4de0-b616-ef0d311ac4c3

Descripción de parámetro importante:

  • spring.cloud.nacos.config.server-addr : dirección del centro de configuración de Nacos (los clústeres usan comas para separar cada máquina)
  • spring.cloud.nacos.config.namespace : Id. de espacio de nombres del centro de configuración de Nacos, el valor predeterminado es público (si es público, puede omitirlo; de lo contrario, no se cargará)
  • spring.cloud.nacos.config.prefix : el nombre del archivo de configuración del servicio en el centro de configuración (si no está configurado, el valor predeterminado es ${spring.application.name})
  • spring.cloud.nacos.config.file-extension : el sufijo del archivo de configuración del servicio en el centro de configuración (el valor predeterminado es propiedades si no hay configuración)
  • spring.cloud.nacos.config.group : Agrupación de archivos de configuración (si no está escrito, el valor predeterminado es DEFAULT_GROUP)

Para evitar algunos errores inexplicables durante el tiempo de ejecución, la configuración anterior debe configurarse en el arranque tanto como sea posible, y cualquier otra configuración puede configurarse en el centro de configuración de nacos.

3. Archivo de configuración de configuración del centro de configuración de Nacos

Después de configurar el centro de configuración de nacos en el código de ingeniería del proyecto, puede establecer el archivo de configuración en el centro de configuración de nacos.
Primero, ingrese la interfaz visual de nacos ip: número de puerto/nacos . Después de ingresar, deberá ingresar la contraseña de la cuenta. El valor predeterminado es nacos / nacos inserte la descripción de la imagen aquí
new namespace, los proyectos en línea a menudo deben dividirse en entornos, o varios sistemas comparten un conjunto de nacos. Para facilitar la distinción, se puede establecer un espacio de comando separado para cada sistema o entorno

inserte la descripción de la imagen aquí
Una vez establecido el espacio de nombres, puede ir al espacio de nombres especificado en la gestión de configuración para agregar archivos de configuración.
inserte la descripción de la imagen aquí
Aquí hay dos lugares a los que debe prestar atención.
El nombre del archivo de configuración es dataId. Springcloud carga el centro de configuración de nacos de acuerdo con
$ Formato {spring.cloud.nacos.config .prefix}-${spring.config.activate.on-profile}.${spring.cloud.nacos.config.file-extension} y ${spring.cloud.nacos.config .group} para hacer coincidir Data Id y Group y cargar el archivo de configuración. Por lo tanto, en el mismo espacio de nombres, Data Id + Group es único. Spring.config.activate.on-profile de Data Id puede estar vacío. Si está vacío , siga el formato ${spring.cloud
.nacos.config.prefix}.$ {spring.cloud.nacos.config.file-extension} para que coincida

Después de crear un nuevo archivo de configuración, puede configurar las propiedades en el archivo de configuración de operación.Después de
inserte la descripción de la imagen aquí
configurar las configuraciones anteriores, puede iniciar el proyecto
inserte la descripción de la imagen aquí

4. Nacos establece permisos

Después de completar la configuración anterior, nacos se puede usar normalmente, pero todavía hay un problema de seguridad. Si se comparten varios sistemas, obviamente es necesario dividir los permisos. El operador de cada sistema solo puede operar la configuración de su propio sistema. Nacos no habilita el control de permisos de forma predeterminada
Sí, para habilitar el control de permisos, debe modificar el archivo de configuración de la siguiente manera:
inserte la descripción de la imagen aquí
configure nacos.core.auth.enabled en la aplicación nacos como verdadero

En la interfaz visual de nacos, podemos ver la columna de control de permisos. Esta columna solo la pueden configurar los usuarios administradores, es decir, los usuarios de nacos. Primero,
creamos usuarios
inserte la descripción de la imagen aquí
, luego creamos roles y vinculamos usuarios.
inserte la descripción de la imagen aquí
Finalmente, agregamos permisos a los roles. , permisos de usuario Proviene del naranja al que está vinculado.
inserte la descripción de la imagen aquí
En el ejemplo de la imagen, creé el usuario cgdata y otorgué los permisos de lectura y escritura del espacio de nombres cg, y no se pueden operar otros espacios.

En este momento, usamos el usuario cgdata para iniciar sesión en el espacio de nombres de desarrollo y la autenticación de autoridad falla.
inserte la descripción de la imagen aquí
En este momento, nuestra configuración de autoridad está configurada, pero informamos 403 cuando comenzamos el proyecto nuevamente.

com.alibaba.nacos.api.exception.NacosException: <html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p><div id='created'>Tue May 03 20:01:24 CST 2022</div><div>There was an unexpected error (type=Forbidden, status=403).</div><div>unknown user!</div></body></html>
	at com.alibaba.nacos.client.config.impl.ClientWorker.getServerConfig(ClientWorker.java:330) ~[nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.config.NacosConfigService.getConfigInner(NacosConfigService.java:149) ~[nacos-client-1.3.3.jar:na]
	at com.alibaba.nacos.client.config.NacosConfigService.getConfig(NacosConfigService.java:97) ~[nacos-client-1.3.3.jar:na]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder.loadNacosData(NacosPropertySourceBuilder.java:85) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder.build(NacosPropertySourceBuilder.java:74) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosPropertySource(NacosPropertySourceLocator.java:204) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosDataIfPresent(NacosPropertySourceLocator.java:191) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadApplicationConfiguration(NacosPropertySourceLocator.java:142) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.locate(NacosPropertySourceLocator.java:103) [spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar:2.2.3.RELEASE]
	at org.springframework.cloud.bootstrap.config.PropertySourceLocator.locateCollection(PropertySourceLocator.java:52) [spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.cloud.bootstrap.config.PropertySourceLocator.locateCollection(PropertySourceLocator.java:47) [spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:98) [spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:626) [spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE]
	at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:370) [spring-boot-2.3.5.RELEASE.jar:2.3.5.RELEASE]

Después de agregar la administración de permisos, debemos agregar la configuración de la contraseña de la cuenta al centro de configuración y al centro de registro, de la siguiente manera:

# 配置中心账号密码
spring.cloud.nacos.config.username=cgdata
spring.cloud.nacos.config.password=cgdata1234
# 注册中心账号密码
spring.cloud.nacos.discovery.username=cgdata
spring.cloud.nacos.discovery.password=cgdata1234

Supongo que te gusta

Origin blog.csdn.net/weixin_44947701/article/details/124554156
Recomendado
Clasificación