我有一个最小的基于spring引导的应用程序。它是用来开发实际应用程序的模板。也就是说,人们应该克隆这个项目,并在上面构建真正的应用程序。
在生产环境中使用时,应该使用keydrope保护端点。在本地开发期间,应该禁用此身份验证。
为此,我创建了一个配置文件 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
配置文件,应应用以下安全配置:
@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/测试/在浏览器中,
我看到以下错误:
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]
这意味着key斗篷没有完全关闭。
如何确保在使用 local-dev
轮廓?
对一个类似问题的大多数回答都没有帮助。
更新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
.
此后,keydepot相关的异常消失,浏览器中的错误消息更改为
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).
1条答案
按热度按时间gtlvzcf81#
我个人的做法是,我不在项目本身中包含任何安全性或其他配置,我只是在cicd过程中从gitlab环境变量或从其他路径/repo获取它们。因此,在我的例子中,所有的应用程序/微服务都是在非安全模式下运行的,以方便开发者。