Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

aws sts get-session-token ... --token-code ... fails with InvalidClientTokenId, but MFA console login working

Tags:

I am trying to retrieve session token on the AWS CLI like so:

aws sts get-session-token --serial-number arn-string --token-code mfacode

where

  • arn-string is copied from the IAM management console, security credentials for the assigned MFA device,format like arn:aws:iam:<number>:mfa/<name>
  • mfacode is taken from the registered virtual mfa device

error:

An error occurred (InvalidClientTokenId) when calling the GetSessionToken operation: The security token included in the request is invalid.

However, I use that MFA device to login to the console in the browser just fine

I have only a default profile in my ~/.aws/, but I don't see how this would have any influence.

tried this:

  1. try multiple time to ensure no mfa flip-over has happened
  2. delete MFA device assignment and reassign device -- same error
  3. ommitting --token-code in hope to have it prompt me for the MFA device token -- same error
  4. using the arn:aws:iam:<number>:user/<name> -- same error as can be expected since the aws get-session-id help clearly states it needs to be the arn of the mfa device

I figure this has to do with arn-string rather than the token, but what ? Any idea on what causes this problem most welcome.

Regards, Olaf

like image 378
onouv Avatar asked Jul 12 '20 10:07

onouv


People also ask

How do I resolve the error the security token included in the request is expired?

You must refresh the credentials before they expire. Another reason for expiration is using the incorrect time. A consistent and accurate time reference is crucial for many server tasks and processes. If your instance's date and time aren't set correctly, the AWS credentials are rejected.

How do you fix the security token included in the request is invalid?

The error "the Security Token included in the Request in Invalid" can occur for multiple reasons: The user's credentials are inactive. Open the IAM console, click on the user, and in the Security Credentials tab, make sure the security credentials of the user are active.

How do I get my AWS session token?

How do I get my AWS access token? AWS Access Tokens are necessary to access AWS resources. You can generate an access token by using the AWS Management Console, the AWS Command Line Interface, or the AWS SDKs. The easiest way to generate an access token is to use the AWS Management Console.

How long are STS tokens valid for?

Temporary security credentials for IAM users are requested using the AWS Security Token Service (AWS STS) service. Temporary credentials created with the AssumeRole API action last for one hour by default. After temporary credentials expire, they can't be reused.


1 Answers

Solved. maafk's comment nails it down. For the records and to the next poor soul stumbling into this problem:

The profile used must have themfa_serial entry. In my case added the arn-string for the mfa-device to my local default profile in ~/.aws/config like so:

[default]

region = eu-central-1

mfa_serial = arn:aws:iam:<number>:mfa/<name>

This string can be found in the console, IAM service under the user, security credentials.

like image 138
onouv Avatar answered Oct 20 '22 04:10

onouv