Search in sources :

Example 6 with Signer

use of com.amazonaws.auth.Signer in project aws-sdk-android by aws-amplify.

the class DefaultSigningMethodTest method testSignAnonymously.

private static void testSignAnonymously(AmazonS3Client s3) {
    final Request<?> fakeGetObjectRequest = createFakeGetObjectRequest(s3);
    final Signer signer = s3.createSigner(fakeGetObjectRequest, FAKE_BUCKET, FAKE_KEY);
    signer.sign(fakeGetObjectRequest, new AnonymousAWSCredentials());
}
Also used : Signer(com.amazonaws.auth.Signer) AWSS3V4Signer(com.amazonaws.services.s3.internal.AWSS3V4Signer) AWS4Signer(com.amazonaws.auth.AWS4Signer) AnonymousAWSCredentials(com.amazonaws.auth.AnonymousAWSCredentials)

Example 7 with Signer

use of com.amazonaws.auth.Signer in project aws-sdk-android by aws-amplify.

the class AmazonWebServiceClient method setSignerRegionOverride.

/**
 * An internal method used to explicitly override the internal signer region
 * computed by the default implementation. This method is not expected to be
 * normally called except for AWS internal development purposes.
 * @param signerRegionOverride  the signer region override.
 */
@SuppressWarnings("checkstyle:hiddenfield")
public final void setSignerRegionOverride(final String signerRegionOverride) {
    final Signer signer = computeSignerByURI(endpoint, signerRegionOverride, true);
    synchronized (this) {
        this.signer = signer;
        this.signerRegionOverride = signerRegionOverride;
    }
}
Also used : Signer(com.amazonaws.auth.Signer) RegionAwareSigner(com.amazonaws.auth.RegionAwareSigner)

Example 8 with Signer

use of com.amazonaws.auth.Signer in project aws-sdk-android by aws-amplify.

the class AmazonHttpClientTest method testTemporaryRedirect.

@Test
public void testTemporaryRedirect() throws IOException, URISyntaxException {
    HttpResponse redirectResponse = HttpResponse.builder().statusCode(307).header("Location", "https://www.redirect.com").build();
    HttpResponse successfulResponse = HttpResponse.builder().statusCode(200).content(null).build();
    final Request<?> request = new DefaultRequest<String>(new AmazonWebServiceRequest() {
    }, "TestService");
    request.setHttpMethod(HttpMethodName.GET);
    request.setEndpoint(new URI("https://www.test.com"));
    request.setResourcePath("/test/table");
    HttpResponseHandler<AmazonWebServiceResponse<String>> responseHandler = new HttpResponseHandler<AmazonWebServiceResponse<String>>() {

        @Override
        public AmazonWebServiceResponse<String> handle(HttpResponse response) throws Exception {
            AmazonWebServiceResponse<String> awsResponse = new AmazonWebServiceResponse<String>();
            awsResponse.setResult("Result");
            return awsResponse;
        }

        @Override
        public boolean needsConnectionLeftOpen() {
            return false;
        }
    };
    ExecutionContext ec = EasyMock.createMock(ExecutionContext.class);
    EasyMock.reset(httpClient, ec);
    final List<Boolean> signerCalled = new ArrayList<Boolean>();
    EasyMock.expect(ec.getAwsRequestMetrics()).andReturn(new AWSRequestMetrics()).anyTimes();
    EasyMock.expect(ec.getContextUserAgent()).andReturn("TestUserAgent").anyTimes();
    EasyMock.expect(ec.getCredentials()).andReturn(new AnonymousAWSCredentials());
    EasyMock.expect(ec.getSignerByURI(EasyMock.anyObject(URI.class))).andReturn(new Signer() {

        @Override
        public void sign(Request<?> requestToSign, AWSCredentials credentials) {
            assertSame(request, requestToSign);
            assertTrue(credentials instanceof AnonymousAWSCredentials);
            signerCalled.add(true);
        }
    });
    EasyMock.expect(httpClient.execute(EasyMock.<HttpRequest>anyObject())).andReturn(redirectResponse);
    Capture<HttpRequest> capture = new Capture<HttpRequest>();
    EasyMock.expect(httpClient.execute(EasyMock.capture(capture))).andReturn(successfulResponse);
    EasyMock.replay(httpClient, ec);
    Response<String> response = client.executeHelper(request, responseHandler, null, ec);
    assertEquals(response.getAwsResponse(), "Result");
    assertEquals(signerCalled.size(), 2);
    assertTrue(signerCalled.get(0));
    assertTrue(signerCalled.get(1));
    assertEquals(capture.getValue().getUri().toString(), "https://www.redirect.com/");
    EasyMock.verify(httpClient, ec);
}
Also used : DefaultRequest(com.amazonaws.DefaultRequest) AWSRequestMetrics(com.amazonaws.util.AWSRequestMetrics) ArrayList(java.util.ArrayList) AnonymousAWSCredentials(com.amazonaws.auth.AnonymousAWSCredentials) AmazonWebServiceResponse(com.amazonaws.AmazonWebServiceResponse) AmazonWebServiceRequest(com.amazonaws.AmazonWebServiceRequest) URI(java.net.URI) AnonymousAWSCredentials(com.amazonaws.auth.AnonymousAWSCredentials) AWSCredentials(com.amazonaws.auth.AWSCredentials) Capture(org.easymock.Capture) Signer(com.amazonaws.auth.Signer) Test(org.junit.Test)

Example 9 with Signer

use of com.amazonaws.auth.Signer in project aws-sdk-android by aws-amplify.

the class ApiClientFactory method getHandler.

/**
 * Gets an invocation handler for the given API.
 *
 * @param endpoint Request endpoint
 * @param apiName API class name
 * @return an invocation handler
 */
@SuppressWarnings("checkstyle:hiddenfield")
ApiClientHandler getHandler(String endpoint, String apiName) {
    final Signer signer = provider == null ? null : getSigner(getRegion(endpoint));
    // Ensure we always pass a configuration to the handler
    final ClientConfiguration configuration = (clientConfiguration == null) ? new ClientConfiguration() : clientConfiguration;
    return new ApiClientHandler(endpoint, apiName, signer, provider, apiKey, configuration);
}
Also used : Signer(com.amazonaws.auth.Signer) AWS4Signer(com.amazonaws.auth.AWS4Signer) ClientConfiguration(com.amazonaws.ClientConfiguration)

Example 10 with Signer

use of com.amazonaws.auth.Signer in project aws-sdk-android by aws-amplify.

the class AmazonWebServiceClient method computeSignerByServiceRegion.

/**
 * Returns the signer for the given service name, region id, and the current
 * client configuration.
 * <p>
 * Note, however, the signer returned for S3 is incomplete at this stage as
 * the information on the S3 bucket and key is not yet known.
 *
 * @param regionId the region for sending AWS requests
 * @param signerRegionOverride the overriding signer region; or null if
 *            there is none.
 * @param isRegionIdAsSignerParam true if the "regionId" is used to
 *            configure the signer if applicable; false if this method is
 *            called for the purpose of purely setting the communication end
 *            point of this AWS client, and therefore the "regionId"
 *            parameter will not be used directly for configuring the
 *            signer.
 */
@SuppressWarnings("checkstyle:hiddenfield")
private Signer computeSignerByServiceRegion(final String serviceName, final String regionId, final String signerRegionOverride, final boolean isRegionIdAsSignerParam) {
    final String signerType = clientConfiguration.getSignerOverride();
    final Signer signer = signerType == null ? SignerFactory.getSigner(serviceName, regionId) : SignerFactory.getSignerByTypeAndService(signerType, serviceName);
    if (signer instanceof RegionAwareSigner) {
        // Overrides the default region computed
        final RegionAwareSigner regionAwareSigner = (RegionAwareSigner) signer;
        // when used in the external release
        if (signerRegionOverride != null) {
            regionAwareSigner.setRegionName(signerRegionOverride);
        } else if (regionId != null && isRegionIdAsSignerParam) {
            regionAwareSigner.setRegionName(regionId);
        }
    }
    synchronized (this) {
        this.region = Region.getRegion(regionId);
    }
    return signer;
}
Also used : Signer(com.amazonaws.auth.Signer) RegionAwareSigner(com.amazonaws.auth.RegionAwareSigner) RegionAwareSigner(com.amazonaws.auth.RegionAwareSigner)

Aggregations

Signer (com.amazonaws.auth.Signer)15 AWSS3V4Signer (com.amazonaws.services.s3.internal.AWSS3V4Signer)6 URI (java.net.URI)5 RegionAwareSigner (com.amazonaws.auth.RegionAwareSigner)4 AWS4Signer (com.amazonaws.auth.AWS4Signer)3 AWSCredentials (com.amazonaws.auth.AWSCredentials)3 HttpMethodName (com.amazonaws.http.HttpMethodName)3 Test (org.junit.Test)3 AmazonClientException (com.amazonaws.AmazonClientException)2 AmazonWebServiceResponse (com.amazonaws.AmazonWebServiceResponse)2 AnonymousAWSCredentials (com.amazonaws.auth.AnonymousAWSCredentials)2 Presigner (com.amazonaws.auth.Presigner)2 Regions (com.amazonaws.regions.Regions)2 S3QueryStringSigner (com.amazonaws.services.s3.internal.S3QueryStringSigner)2 S3Signer (com.amazonaws.services.s3.internal.S3Signer)2 GetObjectRequest (com.amazonaws.services.s3.model.GetObjectRequest)2 AWSRequestMetrics (com.amazonaws.util.AWSRequestMetrics)2 Date (java.util.Date)2 HashMap (java.util.HashMap)2 LinkedHashMap (java.util.LinkedHashMap)2