Sfoglia il codice sorgente

:sparkles: 添加新特性:Spring Boot Admin访问控制

lishangbu 6 anni fa
parent
commit
5f85aa99d8

+ 6 - 0
pigx-config/src/main/resources/config/pigx-monitor-dev.yml

@@ -0,0 +1,6 @@
+spring:
+  # 安全配置
+  security:
+    user:
+      name: ENC(rZHA4LW5hHmhLAAzJoFNag==)
+      password: ENC(bjeyh+Aeii3kHXkoo00ZUw==)

+ 1 - 1
pigx-upms/pigx-upms-biz/src/test/java/com/pig4cloud/pigx/admin/PigxAdminApplicationTest.java

@@ -36,7 +36,7 @@ public class PigxAdminApplicationTest {
 		StringEncryptor stringEncryptor = new DefaultLazyEncryptor(new StandardEnvironment());
 
 		//加密方法
-		System.out.println(stringEncryptor.encrypt("pig"));
+		System.out.println(stringEncryptor.encrypt("pigx"));
 
 		//解密方法
 		System.out.println(stringEncryptor.decrypt("ltJPpR50wT0oIY9kfOe1Iw==="));

+ 5 - 0
pigx-visual/pigx-monitor/pom.xml

@@ -61,6 +61,11 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-undertow</artifactId>
 		</dependency>
+		<!--security-->
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-security</artifactId>
+		</dependency>
 	</dependencies>
 
 	<build>

+ 66 - 0
pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/config/WebSecurityConfigurer.java

@@ -0,0 +1,66 @@
+/*
+ *
+ *      Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the pig4cloud.com developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: lengleng (wangiegie@gmail.com)
+ *
+ */
+
+package com.pig4cloud.pigx.monitor.config;
+
+import de.codecentric.boot.admin.server.config.AdminServerProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
+import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
+
+/**
+ * WebSecurityConfigurer
+ *
+ * @author: lishangbu
+ * @date: 2018/10/8
+ */
+@Configuration
+public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
+	private final String adminContextPath;
+
+	public WebSecurityConfigurer(AdminServerProperties adminServerProperties) {
+		this.adminContextPath = adminServerProperties.getContextPath();
+	}
+
+	@Override
+	protected void configure(HttpSecurity http) throws Exception {
+		// @formatter:off
+        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
+        successHandler.setTargetUrlParameter("redirectTo");
+        successHandler.setDefaultTargetUrl(adminContextPath + "/");
+
+        http.authorizeRequests()
+            .antMatchers(adminContextPath + "/assets/**").permitAll()
+            .antMatchers(adminContextPath + "/login").permitAll()
+            .anyRequest().authenticated()
+            .and()
+        .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
+        .logout().logoutUrl(adminContextPath + "/logout").and()
+        .httpBasic().and()
+        .csrf()
+            .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
+            .ignoringAntMatchers(
+                adminContextPath + "/instances",
+                adminContextPath + "/actuator/**"
+            );
+        // @formatter:on
+	}
+}