【问题标题】:Spring Boot KeyCloak Override ClientIdAndSecretCredentialsProvider not workingSpring Boot KeyCloak 覆盖 ClientIdAndSecretCredentialsProvider 不起作用
【发布时间】:2021-12-16 11:45:13
【问题描述】:

我正在尝试在 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 的?还有什么需要设置的吗??

【问题讨论】:

    标签: spring-boot keycloak


    【解决方案1】:

    我相信您必须将 CustomClientCredentialsProvider 的实例传递给适配器部署。
    AdapterDeploymentContext#setClientAuthenticator(ClientCredentialsProvider clientAuthenticator)

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 1970-01-01
      • 2018-10-21
      • 2020-08-29
      • 2019-11-06
      • 2015-05-01
      • 2017-01-23
      • 2012-01-28
      • 2015-04-07
      相关资源
      最近更新 更多