Skip to content

Commit ff6ba5c

Browse files
committed
[#9885] Apply ConditionalOnProperties to BasicLogin module
1 parent 99deca7 commit ff6ba5c

File tree

4 files changed

+36
-20
lines changed

4 files changed

+36
-20
lines changed

basic-login/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
# pinpoint-basic-login
2+
3+
Use `-Dpinpoint.modules.web.login=basicLogin` to enable basic login.

basic-login/pom.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@
3939
<groupId>org.springframework.security</groupId>
4040
<artifactId>spring-security-config</artifactId>
4141
</dependency>
42+
<dependency>
43+
<groupId>org.springframework.boot</groupId>
44+
<artifactId>spring-boot-autoconfigure</artifactId>
45+
</dependency>
4246
<dependency>
4347
<groupId>javax.servlet</groupId>
4448
<artifactId>javax.servlet-api</artifactId>
@@ -77,7 +81,7 @@
7781
<groupId>org.apache.logging.log4j</groupId>
7882
<artifactId>log4j-core</artifactId>
7983
</dependency>
80-
</dependencies>
84+
</dependencies>
8185

8286
<build>
8387
<plugins>

basic-login/src/main/java/com/navercorp/pinpoint/login/basic/PinpointBasicLoginConfig.java

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,46 +22,56 @@
2222
import com.navercorp.pinpoint.login.basic.service.JwtRequestFilter;
2323
import com.navercorp.pinpoint.login.basic.service.PreAuthenticationCheckFilter;
2424
import com.navercorp.pinpoint.login.basic.service.SaveJwtTokenAuthenticationSuccessHandler;
25+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
2526
import org.springframework.context.annotation.Bean;
2627
import org.springframework.context.annotation.Configuration;
2728
import org.springframework.context.annotation.Import;
28-
import org.springframework.context.annotation.Profile;
2929
import org.springframework.security.authentication.AuthenticationManager;
30+
import org.springframework.security.authentication.AuthenticationProvider;
3031
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
32+
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
3133
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
3234
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
33-
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
3435
import org.springframework.security.config.http.SessionCreationPolicy;
36+
import org.springframework.security.core.Authentication;
37+
import org.springframework.security.core.AuthenticationException;
3538
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
3639
import org.springframework.security.crypto.password.PasswordEncoder;
40+
import org.springframework.security.web.SecurityFilterChain;
3741
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
3842
import org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter;
3943

4044
import java.util.Objects;
4145

46+
import static org.springframework.security.web.util.matcher.AntPathRequestMatcher.antMatcher;
47+
4248
/**
4349
* @author Taejin Koo
4450
*/
4551
@Configuration
4652
@EnableWebSecurity
4753
@Import(BasicLoginConfiguration.class)
48-
@Profile("basicLogin")
49-
public class PinpointBasicLoginConfig extends WebSecurityConfigurerAdapter {
54+
@ConditionalOnProperty(name = "pinpoint.modules.web.login", havingValue = "basicLogin")
55+
public class PinpointBasicLoginConfig {
5056

5157
private final BasicLoginService basicLoginService;
5258

5359
public PinpointBasicLoginConfig(BasicLoginService basicLoginService) {
5460
this.basicLoginService = Objects.requireNonNull(basicLoginService, "basicLoginService");
5561
}
5662

57-
@Override
58-
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
63+
64+
@Bean
65+
public AuthenticationManager authenticationManager(HttpSecurity http) throws Exception {
66+
AuthenticationManagerBuilder auth = http.getSharedObject(AuthenticationManagerBuilder.class);
67+
5968
auth.eraseCredentials(false);
6069
auth.userDetailsService(basicLoginService.getUserDetailsService());
70+
return auth.build();
6171
}
6272

63-
@Override
64-
protected void configure(HttpSecurity http) throws Exception {
73+
@Bean
74+
public SecurityFilterChain configure(HttpSecurity http) throws Exception {
6575
// for common
6676
http
6777
.csrf().disable()
@@ -76,28 +86,23 @@ protected void configure(HttpSecurity http) throws Exception {
7686
.deleteCookies(BasicLoginConstants.PINPOINT_JWT_COOKIE_NAME);
7787

7888
// for admin
79-
http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN")
89+
http.authorizeHttpRequests().requestMatchers(antMatcher("/admin/**")).hasRole("ADMIN")
8090
.and()
8191
.exceptionHandling()
8292
.accessDeniedPage(BasicLoginConstants.URI_NOT_AUTHORIZED);
8393

8494
// for user
85-
http.authorizeRequests().anyRequest().authenticated();
95+
http.authorizeHttpRequests().anyRequest().authenticated();
8696

8797
http.addFilterBefore(new JwtRequestFilter(basicLoginService), UsernamePasswordAuthenticationFilter.class);
8898

8999
http.addFilterBefore(new PreAuthenticationCheckFilter(), DefaultLoginPageGeneratingFilter.class);
100+
return http.build();
90101
}
91102

92103
@Bean
93104
public PasswordEncoder passwordEncoder() {
94105
return new BCryptPasswordEncoder();
95106
}
96107

97-
@Override
98-
@Bean
99-
public AuthenticationManager authenticationManagerBean() throws Exception {
100-
return super.authenticationManagerBean();
101-
}
102-
103-
}
108+
}

web/src/main/resources/application.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,10 @@ server:
1414
whitelabel:
1515
enabled: true
1616

17-
# github or url
18-
pinpoint.modules.web.install.type: github
17+
pinpoint.modules.web:
18+
# github or url
19+
install.type: github
20+
# basicLogin
21+
login:
22+
23+

0 commit comments

Comments
 (0)