Экстернализация jmix.security.oauth2

Я использую в своих проектах экстернализацию настроек, чтобы можно было одну и ту же сборку разворачивать на разных стендах (локальный, тестовый, продакшн и т.п.) и применялись соответствующие этому стенду настройки без их хардкода в application.properties.

В случае с настройками подключения к базе данных проблема решилась достаточно легко:

    @Bean
    @Primary
    @ConfigurationProperties( "main.datasource" )
    DataSourceProperties dataSourceProperties() {
        DataSourceProperties dbProperties = new DataSourceProperties();

        DBConfig dbConfig = LocalConfigStore.get( DBConfig.class ); // логика загрузки локального конфига

        dbProperties.setUrl( dbConfig.getDataSourceUrl() );
        dbProperties.setUsername( dbConfig.getDataSourceUsername() );
        dbProperties.setPassword( dbConfig.getDataSourcePassword() );
        dbProperties.setDriverClassName( dbProperties.determineDriverClassName() );

        return dbProperties;
    }

В случае с настройками подключения по API я не могу определиться, какой бин нужно настроить, чтобы можно было программно выставить client_id и secret_key. Возможно ли это?

Добрый день.

ID и secret клиента выставляются в классе OAuth2AuthorizationServerConfigurer. Так просто переопределением бина там вроде бы не отделаться.

А почему вам не подходит вариант с установкой нужных вам свойств приложения через environment variables на различных стендах?

на разных стендах можно разные application.properties иметь, которые будут перекрывать хардкод в application.properties
Externalized Configuration