Skip to content

Commit 80c7d12

Browse files
authored
Fix FIPS configuration handling (#3501)
Fix bug in FIPS configuration handling where setting a non-FIPS region clears the setting.
1 parent 39c704b commit 80c7d12

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "bugfix",
3+
"category": "WS SDK for Java v2",
4+
"contributor": "",
5+
"description": "Fix bug in FIPS configuration handling where setting a non-FIPS region clears the setting."
6+
}

core/aws-core/src/main/java/software/amazon/awssdk/awscore/client/builder/AwsDefaultClientBuilder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ private DefaultsMode resolveDefaultsMode(SdkClientConfiguration config) {
294294
defaultsMode = autoDefaultsModeDiscovery.discover(config.option(AwsClientOption.AWS_REGION));
295295
DefaultsMode finalDefaultsMode = defaultsMode;
296296
log.debug(() -> String.format("Resolved %s client's AUTO configuration mode to %s", serviceName(),
297-
finalDefaultsMode));
297+
finalDefaultsMode));
298298
}
299299

300300
return defaultsMode;
@@ -389,7 +389,9 @@ public final BuilderT region(Region region) {
389389
}
390390

391391
clientConfiguration.option(AwsClientOption.AWS_REGION, regionToSet);
392-
clientConfiguration.option(AwsClientOption.FIPS_ENDPOINT_ENABLED, fipsEnabled);
392+
if (fipsEnabled != null) {
393+
clientConfiguration.option(AwsClientOption.FIPS_ENDPOINT_ENABLED, fipsEnabled);
394+
}
393395
return thisBuilder();
394396
}
395397

core/aws-core/src/test/java/software/amazon/awssdk/awscore/client/builder/DefaultAwsClientBuilderTest.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,25 @@ public void buildWithRegionShouldHaveCorrectEndpointAndSigningRegion() {
105105
}
106106

107107
@Test
108-
public void buildWithFipsRegionThenNonFipsFipsEnabledFlagUnset() {
108+
public void buildWithFipsRegionThenNonFipsFipsEnabledRemainsSet() {
109109
TestClient client = testClientBuilder()
110110
.region(Region.of("us-west-2-fips")) // first call to setter sets the flag
111111
.region(Region.of("us-west-2"))// second call should clear
112112
.build();
113113

114114
assertThat(client.clientConfiguration.option(AwsClientOption.AWS_REGION)).isEqualTo(Region.US_WEST_2);
115-
assertThat(client.clientConfiguration.option(AwsClientOption.FIPS_ENDPOINT_ENABLED)).isNull();
115+
assertThat(client.clientConfiguration.option(AwsClientOption.FIPS_ENDPOINT_ENABLED)).isTrue();
116+
}
117+
118+
@Test
119+
public void buildWithSetFipsTrueAndNonFipsRegionFipsEnabledRemainsSet() {
120+
TestClient client = testClientBuilder()
121+
.fipsEnabled(true)
122+
.region(Region.of("us-west-2"))
123+
.build();
124+
125+
assertThat(client.clientConfiguration.option(AwsClientOption.AWS_REGION)).isEqualTo(Region.US_WEST_2);
126+
assertThat(client.clientConfiguration.option(AwsClientOption.FIPS_ENDPOINT_ENABLED)).isTrue();
116127
}
117128

118129
@Test

0 commit comments

Comments
 (0)