java—在运行带有特定maven概要文件的spring引导应用程序时,如何禁用KeyClope身份验证?

pes8fvy9  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(272)

我有一个最小的基于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).
gtlvzcf8

gtlvzcf81#

我个人的做法是,我不在项目本身中包含任何安全性或其他配置,我只是在cicd过程中从gitlab环境变量或从其他路径/repo获取它们。因此,在我的例子中,所有的应用程序/微服务都是在非安全模式下运行的,以方便开发者。

相关问题