1212import org .elasticsearch .action .ActionListener ;
1313import org .elasticsearch .action .support .DestructiveOperations ;
1414import org .elasticsearch .common .settings .Settings ;
15- import org .elasticsearch .common .ssl .SslConfiguration ;
16- import org .elasticsearch .common .util .Maps ;
1715import org .elasticsearch .common .util .concurrent .AbstractRunnable ;
1816import org .elasticsearch .common .util .concurrent .EsExecutors ;
1917import org .elasticsearch .common .util .concurrent .RunOnce ;
3432import org .elasticsearch .transport .TransportResponseHandler ;
3533import org .elasticsearch .transport .TransportService ;
3634import org .elasticsearch .transport .TransportService .ContextRestoreResponseHandler ;
37- import org .elasticsearch .xpack .core .XPackSettings ;
3835import org .elasticsearch .xpack .core .security .SecurityContext ;
3936import org .elasticsearch .xpack .core .security .authc .CrossClusterAccessSubjectInfo ;
4037import org .elasticsearch .xpack .core .security .transport .ProfileConfigurations ;
4744import org .elasticsearch .xpack .security .authz .AuthorizationUtils ;
4845import org .elasticsearch .xpack .security .authz .PreAuthorizationUtils ;
4946
50- import java .util .Collections ;
5147import java .util .Map ;
5248import java .util .Optional ;
5349import java .util .concurrent .Executor ;
5450import java .util .function .Function ;
5551
5652import static org .elasticsearch .core .Strings .format ;
57- import static org .elasticsearch .transport .RemoteClusterPortSettings .REMOTE_CLUSTER_PROFILE ;
58- import static org .elasticsearch .transport .RemoteClusterPortSettings .REMOTE_CLUSTER_SERVER_ENABLED ;
5953
6054public class SecurityServerTransportInterceptor implements TransportInterceptor {
6155
@@ -120,7 +114,6 @@ public SecurityServerTransportInterceptor(
120114 this .crossClusterAccessAuthcService = crossClusterAccessAuthcService ;
121115 this .licenseState = licenseState ;
122116 this .remoteClusterCredentialsResolver = remoteClusterCredentialsResolver ;
123- this .profileFilters = initializeProfileFilters (destructiveOperations );
124117 this .remoteClusterTransportInterceptor = new CrossClusterAccessTransportInterceptor (
125118 crossClusterAccessAuthcService ,
126119 authcService ,
@@ -131,6 +124,7 @@ public SecurityServerTransportInterceptor(
131124 settings ,
132125 remoteClusterCredentialsResolver
133126 );
127+ this .profileFilters = initializeProfileFilters (destructiveOperations );
134128 }
135129
136130 @ Override
@@ -285,47 +279,7 @@ public <T extends TransportRequest> TransportRequestHandler<T> interceptHandler(
285279 private Map <String , ServerTransportFilter > initializeProfileFilters (DestructiveOperations destructiveOperations ) {
286280 final Map <String , SslProfile > profileConfigurations = ProfileConfigurations .get (settings , sslService , false );
287281
288- Map <String , ServerTransportFilter > profileFilters = Maps .newMapWithExpectedSize (profileConfigurations .size () + 1 );
289-
290- final boolean transportSSLEnabled = XPackSettings .TRANSPORT_SSL_ENABLED .get (settings );
291- final boolean remoteClusterPortEnabled = REMOTE_CLUSTER_SERVER_ENABLED .get (settings );
292- final boolean remoteClusterServerSSLEnabled = XPackSettings .REMOTE_CLUSTER_SERVER_SSL_ENABLED .get (settings );
293-
294- for (Map .Entry <String , SslProfile > entry : profileConfigurations .entrySet ()) {
295- final String profileName = entry .getKey ();
296- final SslProfile sslProfile = entry .getValue ();
297- final SslConfiguration profileConfiguration = sslProfile .configuration ();
298- assert profileConfiguration != null : "Ssl Profile [" + sslProfile + "] for [" + profileName + "] has a null configuration" ;
299- final boolean useRemoteClusterProfile = remoteClusterPortEnabled && profileName .equals (REMOTE_CLUSTER_PROFILE );
300- if (useRemoteClusterProfile ) {
301- profileFilters .put (
302- profileName ,
303- new CrossClusterAccessServerTransportFilter (
304- crossClusterAccessAuthcService ,
305- authzService ,
306- threadPool .getThreadContext (),
307- remoteClusterServerSSLEnabled && SSLService .isSSLClientAuthEnabled (profileConfiguration ),
308- destructiveOperations ,
309- securityContext ,
310- licenseState
311- )
312- );
313- } else {
314- profileFilters .put (
315- profileName ,
316- new ServerTransportFilter (
317- authcService ,
318- authzService ,
319- threadPool .getThreadContext (),
320- transportSSLEnabled && SSLService .isSSLClientAuthEnabled (profileConfiguration ),
321- destructiveOperations ,
322- securityContext
323- )
324- );
325- }
326- }
327-
328- return Collections .unmodifiableMap (profileFilters );
282+ return remoteClusterTransportInterceptor .getProfileFilters (profileConfigurations , destructiveOperations );
329283 }
330284
331285 public static class ProfileSecuredRequestHandler <T extends TransportRequest > implements TransportRequestHandler <T > {
0 commit comments