如何解决使用特定的 Maven 配置文件运行 Spring Boot 应用程序时如何禁用 Keycloak 身份验证?
我有一个minimal Spring Boot based application。它旨在作为开发实际应用程序的模板。也就是说,人们应该克隆这个项目并在其上构建真正的应用程序。
在生产中使用时,端点应使用 Keycloak 进行保护。在本地开发期间,应禁用此身份验证。
为了实现这一点,我创建了一个配置文件 local-dev
并在 pom.xml 中激活它:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<profiles>
<profile>local-dev</profile>
</profiles>
</configuration>
</plugin>
</plugins>
</build>
使用 local-dev
配置文件运行时,应遵循以下 security configuration:
@Configuration
@Slf4j
@Profile("local-dev")
public class DevSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
log.warn("Using configuration Dev Security Conf");
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
http.cors();
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/**");
}
@Bean
@Scope(scopeName = WebApplicationContext.ScopE_REQUEST,proxyMode = ScopedProxyMode.TARGET_CLASS)
public Accesstoken accesstoken() {
Accesstoken accesstoken = new Accesstoken();
accesstoken.setSubject("abc");
accesstoken.setName("Tester");
return accesstoken;
}
}
但是,如果
- 我使用
mvn clean spring-boot:run
和 启动应用程序
- 在浏览器中打开 http://localhost:8092/test/,
我看到以下错误:
java.lang.IllegalArgumentException: You did not supply enough values to fill path parameters
at org.keycloak.common.util.KeycloakUriBuilder.buildFromValues(KeycloakUriBuilder.java:577) ~[keycloak-common-11.0.2.jar:11.0.2]
at org.keycloak.common.util.KeycloakUriBuilder.build(KeycloakUriBuilder.java:571) ~[keycloak-common-11.0.2.jar:11.0.2]
at org.keycloak.adapters.KeycloakDeployment.setAuthServerBaseUrl(KeycloakDeployment.java:142) ~[keycloak-adapter-core-11.0.2.jar:11.0.2]
at org.keycloak.adapters.KeycloakDeploymentBuilder.internalBuild(KeycloakDeploymentBuilder.java:139) ~[keycloak-adapter-core-11.0.2.jar:11.0.2]
at org.keycloak.adapters.KeycloakDeploymentBuilder.build(KeycloakDeploymentBuilder.java:202) ~[keycloak-adapter-core-11.0.2.jar:11.0.2]
这意味着 Keycloak 没有完全关闭。
如何确保在使用 local-dev
配置文件运行应用程序时禁用 Keycloak?
a similar question 的大部分答案都没有帮助。
更新 1:我通过以下方式更改了代码:
- 已删除
autoconfigure:
exclude = org.keycloak.adapters.springboot.KeycloakAutoConfiguration
来自application-local-dev.yml
。
- 已删除
security.basic.enabled: false
management.security.enabled: false
来自application-local-dev.yml
。
- 已添加
keycloak:
enabled: false
到application-local-dev.yml
。
此后Keycloak相关的异常消失,浏览器的错误信息变为
Whitelabel Error Page
This application has no explicit mapping for /error,so you
are seeing this as a fallback.
Fri Feb 19 09:59:11 CET 2021
There was an unexpected error (type=Not Found,status=404).
解决方法
我个人所做的,我没有在项目本身中包含任何安全性或其他配置,我只是在 CICD 过程中从 GitLab 环境变量或从其他路径/存储库获取它们。因此,就我而言,所有应用/微服务都在开箱即用的非安全模式下运行,以方便开发人员使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。