Sample code for 30+ languages & platforms
Java

AWS Security Token Service (STS) AssumeRole

See more AWS Security Token Service Examples

Returns a set of temporary security credentials that you can use to access AWS resources. These temporary credentials consist of an access key ID, a secret access key, and a security token. Typically, you use AssumeRole within your account or for cross-account access.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.AuthAws;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Rest;
import com.chilkatsoft.chilkat2.Xml;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Rest rest = new Rest();

        // Connect to the Amazon AWS REST server.
        // such as https://sts.us-west-2.amazonaws.com/
        boolean bTls = true;
        int port = 443;
        boolean bAutoReconnect = true;
        rest.connect("sts.us-west-2.amazonaws.com", port, bTls, bAutoReconnect);

        // Provide AWS credentials for the REST call.
        AuthAws authAws = new AuthAws();
        authAws.setAccessKey("AWS_ACCESS_KEY");
        authAws.setSecretKey("AWS_SECRET_KEY");
        // the region should match our URL above..
        // See https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html
        authAws.setRegion("us-west-2");
        authAws.setServiceName("sts");

        rest.setAuthAws(authAws);

        // Sample Request
        // https://sts.amazonaws.com/
        // ?Version=2011-06-15
        // &Action=AssumeRole
        // &RoleSessionName=testAR
        // &RoleArn=arn:aws:iam::123456789012:role/demo
        // &PolicyArns.member.1.arn=arn:aws:iam::123456789012:policy/demopolicy1
        // &PolicyArns.member.2.arn=arn:aws:iam::123456789012:policy/demopolicy2
        // &Policy={"Version":"2012-10-17","Statement":[{"Sid":"Stmt1",
        // "Effect":"Allow","Action":"s3:*","Resource":"*"}]}
        // &DurationSeconds=3600
        // &Tags.member.1.Key=Project
        // &Tags.member.1.Value=Pegasus
        // &Tags.member.2.Key=Team
        // &Tags.member.2.Value=Engineering
        // &Tags.member.3.Key=Cost-Center
        // &Tags.member.3.Value=12345
        // &TransitiveTagKeys.member.1=Project
        // &TransitiveTagKeys.member.2=Cost-Center
        // &ExternalId=123ABC
        // &SourceIdentity=Alice
        // &AUTHPARAMS

        rest.addQueryParam("Version", "2011-06-15");
        rest.addQueryParam("Action", "AssumeRole");
        rest.addQueryParam("DurationSeconds", "3600");

        rest.addQueryParam("RoleSessionName", "testAR");
        rest.addQueryParam("RoleArn", "arn:aws:iam::123456789012:role/demo");
        rest.addQueryParam("PolicyArns.member.1.arn", "arn:aws:iam::123456789012:policy/demopolicy1");
        rest.addQueryParam("PolicyArns.member.2.arn", "arn:aws:iam::123456789012:policy/demopolicy2");
        rest.addQueryParam("Policy", "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Stmt1\",\"Effect\":\"Allow\",\"Action\":\"s3:*\",\"Resource\":\"*\"}]}");
        rest.addQueryParam("Tags.member.1.Key", "Project");
        rest.addQueryParam("Tags.member.1.Value", "Pegasus");
        rest.addQueryParam("Tags.member.2.Key", "Team");
        rest.addQueryParam("Tags.member.2.Value", "Engineering");
        rest.addQueryParam("Tags.member.3.Key", "Cost-Center");
        rest.addQueryParam("Tags.member.3.Value", "12345");
        rest.addQueryParam("TransitiveTagKeys.member.1", "Project");
        rest.addQueryParam("TransitiveTagKeys.member.2", "Cost-Center");
        rest.addQueryParam("ExternalId", "123ABC");
        rest.addQueryParam("SourceIdentity", "Alice");

        String responseXml;
        try {
            responseXml = rest.fullRequestNoBody("GET", "/");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // A successful response will have a status code equal to 200.
        if (rest.getResponseStatusCode() != 200) {
            System.out.println("response status code = " + rest.getResponseStatusCode());
            System.out.println("response status text = " + rest.getResponseStatusText());
            System.out.println("response header: " + rest.getResponseHeader());
            System.out.println("response body: " + responseXml);
            return;
        }

        // Examine the successful XML response (shown below)
        Xml xml = new Xml();
        xml.loadXml(responseXml);
        System.out.println(xml.getXml());

        // Sample response:

        // <AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
        //   <AssumeRoleResult>
        //   <SourceIdentity>Alice</SourceIdentity>
        //     <AssumedRoleUser>
        //       <Arn>arn:aws:sts::123456789012:assumed-role/demo/TestAR</Arn>
        //       <AssumedRoleId>ARO123EXAMPLE123:TestAR</AssumedRoleId>
        //     </AssumedRoleUser>
        //     <Credentials>
        //       <AccessKeyId>ASIAIOSFODNN7EXAMPLE</AccessKeyId>
        //       <SecretAccessKey>wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY</SecretAccessKey>
        //       <SessionToken>
        //        AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
        //        LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
        //        QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
        //        9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
        //        +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
        //       </SessionToken>
        //       <Expiration>2019-11-09T13:34:41Z</Expiration>
        //     </Credentials>
        //     <PackedPolicySize>6</PackedPolicySize>
        //   </AssumeRoleResult>
        //   <ResponseMetadata>
        //     <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
        //   </ResponseMetadata>
        // </AssumeRoleResponse>

        // Sample parse code:

        String AssumeRoleResponse_xmlns = xml.getAttrValue("xmlns");
        String SourceIdentity = xml.getChildContent("AssumeRoleResult|SourceIdentity");
        String Arn = xml.getChildContent("AssumeRoleResult|AssumedRoleUser|Arn");
        String AssumedRoleId = xml.getChildContent("AssumeRoleResult|AssumedRoleUser|AssumedRoleId");
        String AccessKeyId = xml.getChildContent("AssumeRoleResult|Credentials|AccessKeyId");
        String SecretAccessKey = xml.getChildContent("AssumeRoleResult|Credentials|SecretAccessKey");
        String SessionToken = xml.getChildContent("AssumeRoleResult|Credentials|SessionToken");
        String Expiration = xml.getChildContent("AssumeRoleResult|Credentials|Expiration");
        int PackedPolicySize = xml.getChildIntValue("AssumeRoleResult|PackedPolicySize");
        String RequestId = xml.getChildContent("ResponseMetadata|RequestId");

        // Save the session token XML to a file for use by another Chilkat example..
        xml.saveXml("qa_data/tokens/aws_session_token.xml");
    }
}