Spring Boot KeyCloak覆盖ClientIdAndSecretCredentialsProvider不起作用 [英] Spring Boot KeyCloak Override ClientIdAndSecretCredentialsProvider not working

查看:26
本文介绍了Spring Boot KeyCloak覆盖ClientIdAndSecretCredentialsProvider不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试覆盖KeyCloak Spring Boot中的ClientIdAndSecretCredentialsProvider。下面是我尝试过的代码。

public class CustomClientCredentialsProvider extends ClientIdAndSecretCredentialsProvider {

    public static final String PROVIDER_ID = CredentialRepresentation.SECRET;

    private String clientSecret;

    @Override
    public String getId() {
        return PROVIDER_ID;
    }

    @Override
    public void init(KeycloakDeployment deployment, Object config) {
        clientSecret = (String) config;
    }

    @Override
    public void setClientCredentials(KeycloakDeployment deployment, Map<String, String> requestHeaders, Map<String, String> formParams) {
        String clientId = deployment.getResourceName();

        if (!deployment.isPublicClient()) {
            if (clientSecret != null) {
                // do something else
            }
        } else {
            formParams.put(OAuth2Constants.CLIENT_ID, clientId);
        }
    }
}

但是,即使在覆盖之后,我仍然可以看到控件转到现有Spring Boot的ClientIdAndSecretCredentialsProvider,而不是我的。

如何才能将控件放到我的控件中,而不是Spring Boot的控件中?是否还有其他需要设置的内容??

推荐答案

我认为您必须将CustomClientCredentialsProvider的实例传递给适配器部署。
请参见AdapterDeploymentContext#setClientAuthenticator(ClientCredentialsProvider clientAuthenticator)

这篇关于Spring Boot KeyCloak覆盖ClientIdAndSecretCredentialsProvider不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆