1 /* 2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"). 5 * You may not use this file except in compliance with the License. 6 * A copy of the License is located at 7 * 8 * http://aws.amazon.com/apache2.0 9 * 10 * or in the "license" file accompanying this file. This file is distributed 11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 12 * express or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package software.amazon.awssdk.auth.credentials; 17 18 import java.util.Optional; 19 import software.amazon.awssdk.annotations.SdkPublicApi; 20 import software.amazon.awssdk.auth.credentials.internal.SystemSettingsCredentialsProvider; 21 import software.amazon.awssdk.utils.SystemSetting; 22 import software.amazon.awssdk.utils.ToString; 23 24 /** 25 * {@link AwsCredentialsProvider} implementation that loads credentials from the aws.accessKeyId, aws.secretAccessKey and 26 * aws.sessionToken system properties. 27 */ 28 @SdkPublicApi 29 public final class SystemPropertyCredentialsProvider extends SystemSettingsCredentialsProvider { 30 SystemPropertyCredentialsProvider()31 private SystemPropertyCredentialsProvider() { 32 } 33 create()34 public static SystemPropertyCredentialsProvider create() { 35 return new SystemPropertyCredentialsProvider(); 36 } 37 38 @Override loadSetting(SystemSetting setting)39 protected Optional<String> loadSetting(SystemSetting setting) { 40 // CHECKSTYLE:OFF - Customers should be able to specify a credentials provider that only looks at the system properties, 41 // but not the environment variables. For that reason, we're only checking the system properties here. 42 return Optional.ofNullable(System.getProperty(setting.property())); 43 // CHECKSTYLE:ON 44 } 45 46 @Override toString()47 public String toString() { 48 return ToString.create("SystemPropertyCredentialsProvider"); 49 } 50 } 51