Class SignerProperty<T>

  • Type Parameters:
    T - The type of the property.

    @SdkPublicApi
    @Immutable
    @ThreadSafe
    public final class SignerProperty<T>
    extends Object
    A strongly-typed property for input to an HttpSigner.

    Signer properties are used to configure signing behavior by passing parameters to signers through AuthSchemeOptions. Common properties include signing region, service name, and signing algorithm parameters.

    Common Built-in Properties

    The SDK provides several built-in AWS V4 signer properties:

    • AwsV4FamilyHttpSigner.SERVICE_SIGNING_NAME - The service name to use in the signature
    • AwsV4FamilyHttpSigner.REGION_NAME - The AWS region for signing
    • AwsV4FamilyHttpSigner.DOUBLE_URL_ENCODE - Whether to double URL-encode the path
    • AwsV4FamilyHttpSigner.NORMALIZE_PATH - Whether to normalize the request path
    • AwsV4FamilyHttpSigner.PAYLOAD_SIGNING_ENABLED - Whether to indicate that a payload is signed or not.

    Overriding Properties via AuthSchemeProvider

    To override signer properties, implement a custom AuthSchemeProvider that wraps the default provider and modifies the properties on resolved AuthSchemeOptions.

    Example - Overriding service signing name: {@snippet : S3AsyncClient s3 = S3AsyncClient.builder() .region(Region.US_WEST_2) .credentialsProvider(CREDENTIALS) .authSchemeProvider(new CustomSigningNameAuthSchemeProvider()) .build(); public class CustomSigningNameAuthSchemeProvider implements S3AuthSchemeProvider { private final S3AuthSchemeProvider delegate; public CustomSigningNameAuthSchemeProvider() { this.delegate = S3AuthSchemeProvider.defaultProvider(); }

    See Also:
    HttpSigner, AuthSchemeOption, AuthSchemeProvider
    • Method Detail

      • create

        public static <T> SignerProperty<T> create​(Class<?> namespace,
                                                   String name)
        Create a property.
        Type Parameters:
        T - the type of the property.
        Parameters:
        namespace - the class *where* the property is being defined
        name - the name for the property
        Throws:
        IllegalArgumentException - if a property with this namespace and name already exist
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object