use of com.aliyun.oss.common.auth.DefaultCredentials in project aliyun-oss-java-sdk by aliyun.
the class ProfileConfigFile method refresh.
/**
* Reread data from disk.
*/
public void refresh() {
if (credentials == null || profileFile.lastModified() > profileFileLastModified) {
profileFileLastModified = profileFile.lastModified();
Map<String, String> profileProperties = null;
try {
profileProperties = profileLoader.loadProfile(profileFile);
} catch (IOException e) {
LogUtils.logException("ProfilesConfigFile.refresh Exception:", e);
return;
}
String accessKeyId = StringUtils.trim(profileProperties.get(AuthUtils.OSS_ACCESS_KEY_ID));
String secretAccessKey = StringUtils.trim(profileProperties.get(AuthUtils.OSS_SECRET_ACCESS_KEY));
String sessionToken = StringUtils.trim(profileProperties.get(AuthUtils.OSS_SESSION_TOKEN));
if (StringUtils.isNullOrEmpty(accessKeyId)) {
throw new InvalidCredentialsException("Access key id should not be null or empty.");
}
if (StringUtils.isNullOrEmpty(secretAccessKey)) {
throw new InvalidCredentialsException("Secret access key should not be null or empty.");
}
credentials = new DefaultCredentials(accessKeyId, secretAccessKey, sessionToken);
}
}
use of com.aliyun.oss.common.auth.DefaultCredentials in project aliyun-oss-java-sdk by aliyun.
the class SwitchCredentialsAndEndpointTest method restoreDefaultCredentials.
private static void restoreDefaultCredentials() {
Credentials credentials = new DefaultCredentials(OSS_TEST_ACCESS_KEY_ID, OSS_TEST_ACCESS_KEY_SECRET);
ossClient.switchCredentials(credentials);
}
use of com.aliyun.oss.common.auth.DefaultCredentials in project aliyun-oss-java-sdk by aliyun.
the class SwitchCredentialsAndEndpointTest method testSwitchEndpointSynchronously.
@Test
public void testSwitchEndpointSynchronously() throws Exception {
/* Ensure endpoint switching prior to endpoint verification at first time */
final Object ensureSwitchFirst = new Object();
final Object verifySynchronizer = new Object();
final Object switchSynchronizer = new Object();
// Verify whether endpoint switching work as expected
Thread verifyThread = new Thread(new Runnable() {
@Override
public void run() {
synchronized (ensureSwitchFirst) {
if (!switchStarted) {
try {
ensureSwitchFirst.wait();
} catch (InterruptedException e) {
}
}
}
int l = 0;
do {
// Wait for endpoint switching completion
synchronized (verifySynchronizer) {
try {
verifySynchronizer.wait();
} catch (InterruptedException e) {
}
}
CredentialsProvider credsProvider = ossClient.getCredentialsProvider();
Credentials currentCreds = credsProvider.getCredentials();
String loc = ossClient.getBucketLocation(bucketName);
assertEquals(OSS_TEST_REGION, loc);
assertEquals(OSS_TEST_ACCESS_KEY_ID, currentCreds.getAccessKeyId());
assertEquals(OSS_TEST_ACCESS_KEY_SECRET, currentCreds.getSecretAccessKey());
/*
* Since the default OSSClient is the same as the second OSSClient, let's
* do a simple verification.
*/
String secondLoc = ossClient.getBucketLocation(bucketName);
assertEquals(loc, secondLoc);
assertEquals(OSS_TEST_REGION, secondLoc);
CredentialsProvider secondCredsProvider = ossClient.getCredentialsProvider();
Credentials secondCreds = secondCredsProvider.getCredentials();
assertEquals(OSS_TEST_ACCESS_KEY_ID, secondCreds.getAccessKeyId());
assertEquals(OSS_TEST_ACCESS_KEY_SECRET, secondCreds.getSecretAccessKey());
// Notify endpoint switching
synchronized (switchSynchronizer) {
restoreDefaultCredentials();
restoreDefaultEndpoint();
switchSynchronizer.notify();
}
} while (++l < loopTimes);
}
});
// Switch endpoint synchronously
Thread switchThread = new Thread(new Runnable() {
@Override
public void run() {
int l = 0;
boolean firstSwitch = false;
do {
/*
* Switch both credentials and endpoint, now the default OSSClient is the same as
* the second OSSClient actually.
*/
Credentials secondCreds = new DefaultCredentials(OSS_TEST_ACCESS_KEY_ID, OSS_TEST_ACCESS_KEY_SECRET);
ossClient.switchCredentials(secondCreds);
ossClient.setEndpoint(OSS_TEST_ENDPOINT);
if (!firstSwitch) {
synchronized (ensureSwitchFirst) {
switchStarted = true;
ensureSwitchFirst.notify();
}
firstSwitch = true;
}
try {
Thread.sleep(switchInterval);
} catch (InterruptedException e) {
}
/*
* Notify credentials verification and wait for next credentials switching.
* TODO: The two synchronized clauses below should be combined as atomic operation.
*/
synchronized (verifySynchronizer) {
verifySynchronizer.notify();
}
synchronized (switchSynchronizer) {
try {
switchSynchronizer.wait();
} catch (InterruptedException e) {
}
}
} while (++l < loopTimes);
}
});
verifyThread.start();
switchThread.start();
verifyThread.join();
switchThread.join();
restoreDefaultCredentials();
restoreDefaultEndpoint();
}
use of com.aliyun.oss.common.auth.DefaultCredentials in project aliyun-oss-java-sdk by aliyun.
the class SwitchCredentialsAndEndpointTest method testSwitchValidCredentialsAndEndpoint.
@Ignore
public void testSwitchValidCredentialsAndEndpoint() {
CredentialsProvider credsProvider = ossClient.getCredentialsProvider();
Credentials defaultCreds = credsProvider.getCredentials();
assertEquals(OSS_TEST_ACCESS_KEY_ID, defaultCreds.getAccessKeyId());
assertEquals(OSS_TEST_ACCESS_KEY_SECRET, defaultCreds.getSecretAccessKey());
// Verify default credentials under default endpoint
try {
String loc = ossClient.getBucketLocation(bucketName);
assertEquals(OSS_TEST_REGION, loc);
} catch (OSSException ex) {
fail("Unable to get bucket location with default credentials.");
}
// Switch to another default credentials that belongs to the same user acount.
Credentials defaultCreds2 = new DefaultCredentials(OSS_TEST_ACCESS_KEY_ID_1, OSS_TEST_ACCESS_KEY_SECRET_1);
ossClient.switchCredentials(defaultCreds2);
defaultCreds2 = credsProvider.getCredentials();
assertEquals(OSS_TEST_ACCESS_KEY_ID_1, defaultCreds2.getAccessKeyId());
assertEquals(OSS_TEST_ACCESS_KEY_SECRET_1, defaultCreds2.getSecretAccessKey());
// Verify another default credentials under default endpoint
try {
String loc = ossClient.getBucketLocation(bucketName);
assertEquals(OSS_TEST_REGION, loc);
} catch (OSSException ex) {
restoreDefaultCredentials();
fail("Unable to get bucket location with another default credentials.");
}
// Switch to second credentials that belongs to another user acount,
// Note that the default credentials are only valid under default endpoint
// and the second credentials are only valid under second endpoint.
Credentials secondCreds = new DefaultCredentials(OSS_TEST_ACCESS_KEY_ID, OSS_TEST_ACCESS_KEY_SECRET);
ossClient.switchCredentials(secondCreds);
secondCreds = credsProvider.getCredentials();
assertEquals(OSS_TEST_ACCESS_KEY_ID, secondCreds.getAccessKeyId());
assertEquals(OSS_TEST_ACCESS_KEY_SECRET, secondCreds.getSecretAccessKey());
// Verify second credentials under default endpoint
try {
ossClient.getBucketLocation(bucketName);
fail("Should not be able to get bucket location with second credentials.");
} catch (OSSException ex) {
assertEquals(OSSErrorCode.INVALID_ACCESS_KEY_ID, ex.getErrorCode());
}
// Switch to second endpoint
ossClient.setEndpoint(OSS_TEST_ENDPOINT);
// Verify second credentials under second endpoint
try {
assertEquals(OSS_TEST_ENDPOINT, ossClient.getEndpoint().toString());
String loc = ossClient.getBucketLocation(bucketName);
assertEquals(OSS_TEST_REGION, loc);
// After switching both credentials and endpoint, the default OSSClient is the same
// as the second OSSClient actually.
assertEquals(OSS_TEST_ENDPOINT, ossClient.getEndpoint().toString());
loc = ossClient.getBucketLocation(bucketName);
assertEquals(OSS_TEST_REGION, loc);
} catch (OSSException ex) {
fail("Unable to create bucket with second credentials.");
} finally {
restoreDefaultCredentials();
restoreDefaultEndpoint();
}
}
use of com.aliyun.oss.common.auth.DefaultCredentials in project aliyun-oss-java-sdk by aliyun.
the class TestBase method getOSSClient.
public static OSSClient getOSSClient() {
if (ossClient == null) {
resetTestConfig();
ClientConfiguration conf = new ClientConfiguration().setSupportCname(false);
Credentials credentials = new DefaultCredentials(TestConfig.OSS_TEST_ACCESS_KEY_ID, TestConfig.OSS_TEST_ACCESS_KEY_SECRET);
ossClient = new OSSClient(TestConfig.OSS_TEST_ENDPOINT, new DefaultCredentialProvider(credentials), conf);
}
return ossClient;
}
Aggregations