diff --git a/pigx-config/src/main/resources/config/pigx-monitor-dev.yml b/pigx-config/src/main/resources/config/pigx-monitor-dev.yml new file mode 100644 index 000000000..39e609042 --- /dev/null +++ b/pigx-config/src/main/resources/config/pigx-monitor-dev.yml @@ -0,0 +1,6 @@ +spring: + # 安全配置 + security: + user: + name: ENC(rZHA4LW5hHmhLAAzJoFNag==) + password: ENC(bjeyh+Aeii3kHXkoo00ZUw==) diff --git a/pigx-upms/pigx-upms-biz/src/test/java/com/pig4cloud/pigx/admin/PigxAdminApplicationTest.java b/pigx-upms/pigx-upms-biz/src/test/java/com/pig4cloud/pigx/admin/PigxAdminApplicationTest.java index 022b64f2a..554ab1f1c 100644 --- a/pigx-upms/pigx-upms-biz/src/test/java/com/pig4cloud/pigx/admin/PigxAdminApplicationTest.java +++ b/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===")); diff --git a/pigx-visual/pigx-monitor/pom.xml b/pigx-visual/pigx-monitor/pom.xml index b1359ca98..2eb40ceb9 100644 --- a/pigx-visual/pigx-monitor/pom.xml +++ b/pigx-visual/pigx-monitor/pom.xml @@ -61,6 +61,11 @@ org.springframework.boot spring-boot-starter-undertow + + + org.springframework.cloud + spring-cloud-starter-security + diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/config/WebSecurityConfigurer.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/config/WebSecurityConfigurer.java new file mode 100644 index 000000000..0360680ce --- /dev/null +++ b/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 + } +}