diff --git a/archetypes/archetype-app-quickstart/README.md b/archetypes/archetype-app-quickstart/README.md
index 2c95d96ff8b7..5611e454b06b 100755
--- a/archetypes/archetype-app-quickstart/README.md
+++ b/archetypes/archetype-app-quickstart/README.md
@@ -8,7 +8,7 @@ a dependency of [AWS Java SDK 2.x][aws-java-sdk-v2].
The generated application has the following features:
-- Uses [Bill of Materials](BOM) to manage SDK dependencies
+- Uses [Bill of Materials][BOM] to manage SDK dependencies
- Contains the code to create the SDK client
- Out-of-box support of GraalVM Native Image when `nativeImage` is enabled
@@ -37,25 +37,27 @@ mvn archetype:generate \
-DhttpClient=apache-client \
-DartifactId=sample-project \
-Dservice=s3 \
- -DinteractiveMode=false
+ -DinteractiveMode=false \
+ -DcredentialProvider=default
```
### Parameters
-Parameter Name | Default Value | Description
----|---|---
-`service` (required) | n/a | Specifies the service client to be used in the application, eg: s3, dynamodb. Only one service should be provided. You can find available services [here][java-sdk-v2-services].
-`groupId`(required) | n/a | Specifies the group ID of the project
-`artifactId`(required) | n/a | Specifies the artifact ID of the project
-`nativeImage`(required) | n/a | Specifies whether GraalVM Native Image configuration should be included
-`httpClient`(required) | n/a | Specifies the http client to be used by the SDK client. Available options are `url-connection-client` (sync), `apache-client` (sync), `netty-nio-client` (async). See [http clients][sdk-http-clients]
-`javaSdkVersion` | Same version as the archetype version | Specifies the version of the AWS Java SDK 2.x to be used
-`version` | 1.0-SNAPSHOT | Specifies the version of the project
-`package` | ${groupId} | Specifies the package name for the classes
-
+| Parameter Name | Default Value | Description |
+|-------------------------|---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `service` (required) | n/a | Specifies the service client to be used in the application, eg: s3, dynamodb. Only one service should be provided. You can find available services [here][java-sdk-v2-services]. |
+| `groupId`(required) | n/a | Specifies the group ID of the project |
+| `artifactId`(required) | n/a | Specifies the artifact ID of the project |
+| `nativeImage`(required) | n/a | Specifies whether GraalVM Native Image configuration should be included |
+| `httpClient`(required) | n/a | Specifies the http client to be used by the SDK client. Available options are `url-connection-client` (sync), `apache-client` (sync), `netty-nio-client` (async). See [http clients][sdk-http-clients] |
+| `credentialProvider` | default | Specify the credential-provider to be used by the SDK client and imports relevant dependencies. Available options are `default` which uses the [default credential provider chain](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html), or `identity-center` whi uses [IAM Identity Center](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html) |
+| `javaSdkVersion` | Same version as the archetype version | Specifies the version of the AWS Java SDK 2.x to be used |
+| `version` | 1.0-SNAPSHOT | Specifies the version of the project |
+| `package` | ${groupId} | Specifies the package name for the classes |
[aws-java-sdk-v2]: https://github.com/aws/aws-sdk-java-v2
[java-sdk-v2-services]: https://github.com/aws/aws-sdk-java-v2/tree/master/services
[sdk-http-clients]: https://github.com/aws/aws-sdk-java-v2/tree/master/http-clients
[maven-archetype-usage]: https://maven.apache.org/archetype/maven-archetype-plugin/usage.html
[graalvm]: https://www.graalvm.org/docs/getting-started/#native-images
+[bom]: https://github.com/aws/aws-sdk-java-v2/blob/master/bom
\ No newline at end of file
diff --git a/archetypes/archetype-app-quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml b/archetypes/archetype-app-quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml
index ced7dbdba15b..aa78ae12e998 100644
--- a/archetypes/archetype-app-quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/archetypes/archetype-app-quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -42,5 +42,8 @@
(true|false)
+
+ (default|identity-center)
+
diff --git a/archetypes/archetype-app-quickstart/src/main/resources/archetype-resources/pom.xml b/archetypes/archetype-app-quickstart/src/main/resources/archetype-resources/pom.xml
index 7574db920ff2..68f6c4ab79ee 100644
--- a/archetypes/archetype-app-quickstart/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/archetype-app-quickstart/src/main/resources/archetype-resources/pom.xml
@@ -50,6 +50,18 @@
+#if( $credentialProvider == 'identity-center')
+
+ software.amazon.awssdk
+ sso
+
+
+
+ software.amazon.awssdk
+ ssooidc
+
+
+#end
software.amazon.awssdk
${httpClient}
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/apachehttpclient/archetype.properties b/archetypes/archetype-app-quickstart/src/test/resources/projects/apachehttpclient/archetype.properties
index 0af6b84ce1aa..c28c1ebaa993 100644
--- a/archetypes/archetype-app-quickstart/src/test/resources/projects/apachehttpclient/archetype.properties
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/apachehttpclient/archetype.properties
@@ -5,4 +5,5 @@ package=software.amazonaws.test
service=s3
httpClient=apache-client
javaSdkVersion=2.11.0
-nativeImage=true
\ No newline at end of file
+nativeImage=true
+credentialProvider=default
\ No newline at end of file
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/apachehttpclientwithoutnativeimage/archetype.properties b/archetypes/archetype-app-quickstart/src/test/resources/projects/apachehttpclientwithoutnativeimage/archetype.properties
index 79cc885e1603..b60e2a1ef5df 100644
--- a/archetypes/archetype-app-quickstart/src/test/resources/projects/apachehttpclientwithoutnativeimage/archetype.properties
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/apachehttpclientwithoutnativeimage/archetype.properties
@@ -5,4 +5,5 @@ package=software.amazonaws.test
service=s3
httpClient=apache-client
javaSdkVersion=2.11.0
-nativeImage=false
\ No newline at end of file
+nativeImage=false
+credentialProvider=default
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/archetype.properties b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/archetype.properties
new file mode 100644
index 000000000000..e262cb2b49a0
--- /dev/null
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/archetype.properties
@@ -0,0 +1,9 @@
+groupId=software.amazonaws.test
+artifactId=test-apache-artifact
+version=1.0-SNAPSHOT
+package=software.amazonaws.test
+service=s3
+httpClient=apache-client
+javaSdkVersion=2.11.0
+nativeImage=true
+credentialProvider=identity-center
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/goal.txt b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/goal.txt
new file mode 100644
index 000000000000..4a1a71d3364c
--- /dev/null
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/goal.txt
@@ -0,0 +1 @@
+verify
\ No newline at end of file
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/README.md b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/README.md
new file mode 100644
index 000000000000..d17e94244e89
--- /dev/null
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/README.md
@@ -0,0 +1,53 @@
+# App
+
+This project contains a maven application with [AWS Java SDK 2.x](https://github.com/aws/aws-sdk-java-v2) dependencies.
+
+## Prerequisites
+- Java 1.8+
+- Apache Maven
+- GraalVM Native Image (optional)
+
+## Development
+
+Below is the structure of the generated project.
+
+```
+├── src
+│ ├── main
+│ │ ├── java
+│ │ │ └── package
+│ │ │ ├── App.java
+│ │ │ ├── DependencyFactory.java
+│ │ │ └── Handler.java
+│ │ └── resources
+│ │ └── simplelogger.properties
+│ └── test
+│ └── java
+│ └── package
+│ └── HandlerTest.java
+```
+
+- `App.java`: main entry of the application
+- `DependencyFactory.java`: creates the SDK client
+- `Handler.java`: you can invoke the api calls using the SDK client here.
+
+#### Building the project
+```
+mvn clean package
+```
+
+#### Building the native image
+
+Note that it requires `native-image` installed in your environment
+
+```
+mvn clean package -P native-image
+```
+After it finishes, you can find the generated native image in the `target
+` folder.
+
+You can run the following command to execute it.
+
+```
+target/test-apache-artifact
+```
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/pom.xml b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/pom.xml
new file mode 100644
index 000000000000..97bb28f4d33a
--- /dev/null
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/pom.xml
@@ -0,0 +1,144 @@
+
+
+ 4.0.0
+
+ software.amazonaws.test
+ test-apache-artifact
+ 1.0-SNAPSHOT
+ jar
+
+ UTF-8
+ 1.8
+ 1.8
+ 3.2.1
+ 3.6.1
+ 1.6.0
+ 2.11.0
+ 1.7.28
+ 0.9.6
+ 5.8.1
+
+
+
+
+
+ software.amazon.awssdk
+ bom
+ ${aws.java.sdk.version}
+ pom
+ import
+
+
+
+
+
+
+ software.amazon.awssdk
+ s3
+
+
+ software.amazon.awssdk
+ netty-nio-client
+
+
+ software.amazon.awssdk
+ apache-client
+
+
+
+
+
+ software.amazon.awssdk
+ sso
+
+
+
+ software.amazon.awssdk
+ ssooidc
+
+
+
+ software.amazon.awssdk
+ apache-client
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
+
+
+ org.slf4j
+ slf4j-simple
+ ${slf4j.version}
+
+
+
+
+ org.slf4j
+ jcl-over-slf4j
+ ${slf4j.version}
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter
+ ${junit5.version}
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven.compiler.plugin.version}
+
+
+
+
+
+
+ native-image
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+ ${graalvm.native.maven.plugin.version}
+
+
+ build-native
+
+ build
+
+ package
+
+
+
+ test-apache-artifact
+ software.amazonaws.test.App
+
+
+ --verbose
+ --no-fallback
+ --initialize-at-build-time=org.slf4j
+
+
+
+
+
+
+
+
+
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/java/software/amazonaws/test/App.java b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/java/software/amazonaws/test/App.java
new file mode 100644
index 000000000000..b587b851e90e
--- /dev/null
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/java/software/amazonaws/test/App.java
@@ -0,0 +1,16 @@
+package software.amazonaws.test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class App {
+ private static final Logger logger = LoggerFactory.getLogger(App.class);
+
+ public static void main(String... args) {
+ logger.info("Application starts");
+
+ Handler handler = new Handler();
+ handler.sendRequest();
+
+ logger.info("Application ends");
+ }
+}
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/java/software/amazonaws/test/DependencyFactory.java b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/java/software/amazonaws/test/DependencyFactory.java
new file mode 100644
index 000000000000..113edb683c85
--- /dev/null
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/java/software/amazonaws/test/DependencyFactory.java
@@ -0,0 +1,22 @@
+
+package software.amazonaws.test;
+
+import software.amazon.awssdk.http.apache.ApacheHttpClient;
+import software.amazon.awssdk.services.s3.S3Client;
+
+/**
+ * The module containing all dependencies required by the {@link Handler}.
+ */
+public class DependencyFactory {
+
+ private DependencyFactory() {}
+
+ /**
+ * @return an instance of S3Client
+ */
+ public static S3Client s3Client() {
+ return S3Client.builder()
+ .httpClientBuilder(ApacheHttpClient.builder())
+ .build();
+ }
+}
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/java/software/amazonaws/test/Handler.java b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/java/software/amazonaws/test/Handler.java
new file mode 100644
index 000000000000..fd15451b80fd
--- /dev/null
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/java/software/amazonaws/test/Handler.java
@@ -0,0 +1,16 @@
+package software.amazonaws.test;
+
+import software.amazon.awssdk.services.s3.S3Client;
+
+
+public class Handler {
+ private final S3Client s3Client;
+
+ public Handler() {
+ s3Client = DependencyFactory.s3Client();
+ }
+
+ public void sendRequest() {
+ // TODO: invoking the api calls using s3Client.
+ }
+}
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/resources/simplelogger.properties b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/resources/simplelogger.properties
new file mode 100644
index 000000000000..0e6cb98a68ad
--- /dev/null
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/main/resources/simplelogger.properties
@@ -0,0 +1,24 @@
+# SLF4J's SimpleLogger configuration file
+# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err.
+
+# Default logging detail level for all instances of SimpleLogger.
+# Must be one of ("trace", "debug", "info", "warn", or "error").
+# If not specified, defaults to "info".
+org.slf4j.simpleLogger.defaultLogLevel=info
+
+# Log SDK requests
+org.slf4j.simpleLogger.log.software.amazon.awssdk.request=debug
+org.slf4j.simpleLogger.showDateTime=true
+org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z
+
+# Set to true if you want to output the current thread name.
+# Defaults to true.
+org.slf4j.simpleLogger.showThreadName=true
+
+# Set to true if you want the Logger instance name to be included in output messages.
+# Defaults to true.
+#org.slf4j.simpleLogger.showLogName=true
+
+# Set to true if you want the last component of the name to be included in output messages.
+# Defaults to false.
+org.slf4j.simpleLogger.showShortLogName=false
\ No newline at end of file
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/test/java/software/amazonaws/test/HandlerTest.java b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/test/java/software/amazonaws/test/HandlerTest.java
new file mode 100644
index 000000000000..9837081757f2
--- /dev/null
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/identitycenter/reference/src/test/java/software/amazonaws/test/HandlerTest.java
@@ -0,0 +1,7 @@
+package software.amazonaws.test;
+
+import org.junit.jupiter.api.Test;
+
+public class HandlerTest {
+ //TODO add tests here
+}
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/nettyclient/archetype.properties b/archetypes/archetype-app-quickstart/src/test/resources/projects/nettyclient/archetype.properties
index 16b16eac4f8d..35abf666459e 100644
--- a/archetypes/archetype-app-quickstart/src/test/resources/projects/nettyclient/archetype.properties
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/nettyclient/archetype.properties
@@ -5,4 +5,5 @@ package=software.amazonaws.test
service=s3
httpClient=netty-nio-client
javaSdkVersion=2.11.0
-nativeImage=true
\ No newline at end of file
+nativeImage=true
+credentialProvider=default
diff --git a/archetypes/archetype-app-quickstart/src/test/resources/projects/urlhttpclient/archetype.properties b/archetypes/archetype-app-quickstart/src/test/resources/projects/urlhttpclient/archetype.properties
index 931670cc7cee..d12eb4adaa8c 100644
--- a/archetypes/archetype-app-quickstart/src/test/resources/projects/urlhttpclient/archetype.properties
+++ b/archetypes/archetype-app-quickstart/src/test/resources/projects/urlhttpclient/archetype.properties
@@ -5,4 +5,5 @@ package=software.amazonaws.test
service=dynamodb
httpClient=url-connection-client
javaSdkVersion=2.11.0
-nativeImage=true
\ No newline at end of file
+nativeImage=true
+credentialProvider=default