/* * Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.amazonaws.auth; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * Simple implementation AWSCredentials that reads in AWS access keys from a * properties file. The AWS access key is expected to be in the "accessKey" * property and the AWS secret key id is expected to be in the "secretKey" * property. */ public class PropertiesCredentials implements AWSCredentials { private final String accessKey; private final String secretAccessKey; /** * Reads the specified file as a Java properties file and extracts the AWS * access key from the "accessKey" property and AWS secret access key from * the "secretKey" property. If the specified file doesn't contain the AWS * access keys an IOException will be thrown. * * @param file The file from which to read the AWS credentials properties. * @throws FileNotFoundException If the specified file isn't found. * @throws IOException If any problems are encountered reading the AWS * access keys from the specified file. * @throws IllegalArgumentException If the specified properties file does * not contain the required keys. */ public PropertiesCredentials(File file) throws FileNotFoundException, IOException, IllegalArgumentException { if (!file.exists()) { throw new FileNotFoundException("File doesn't exist: " + file.getAbsolutePath()); } FileInputStream stream = new FileInputStream(file); try { Properties accountProperties = new Properties(); accountProperties.load(stream); if (accountProperties.getProperty("accessKey") == null || accountProperties.getProperty("secretKey") == null) { throw new IllegalArgumentException( "The specified file (" + file.getAbsolutePath() + ") doesn't contain the expected properties 'accessKey' " + "and 'secretKey'."); } accessKey = accountProperties.getProperty("accessKey"); secretAccessKey = accountProperties.getProperty("secretKey"); } finally { try { stream.close(); } catch (IOException e) { } } } /** * Reads the specified input stream as a stream of Java properties file * content and extracts the AWS access key ID and secret access key from the * properties. * * @param inputStream The input stream containing the AWS credential * properties. * @throws IOException If any problems occur while reading from the input * stream. */ public PropertiesCredentials(InputStream inputStream) throws IOException { Properties accountProperties = new Properties(); try { accountProperties.load(inputStream); } finally { try { inputStream.close(); } catch (Exception e) { } } if (accountProperties.getProperty("accessKey") == null || accountProperties.getProperty("secretKey") == null) { throw new IllegalArgumentException("The specified properties data " + "doesn't contain the expected properties 'accessKey' and 'secretKey'."); } accessKey = accountProperties.getProperty("accessKey"); secretAccessKey = accountProperties.getProperty("secretKey"); } /* * (non-Javadoc) * @see com.amazonaws.auth.AWSCredentials#getAWSAccessKeyId() */ @Override public String getAWSAccessKeyId() { return accessKey; } /* * (non-Javadoc) * @see com.amazonaws.auth.AWSCredentials#getAWSSecretKey() */ @Override public String getAWSSecretKey() { return secretAccessKey; } }