0

Alexa signature version migration (AWS Signature V2 to V4)

Hey everyone!

Just a heads up that Alexa Web Information Service (AWIS) is in the process of deprecating the AWS Signature Version 2 (SigV2) for authentication of api requests. Requests using SigV2 will no longer be supported after February 6, 2019 and require migration to the SigV4 method. We will be performing our migration, to support the SigV4 method, on February 6, 2019.

There are some things that we are unable to update for you and need action on your part.

 

Changes you need to take action on:

IMPORTANT: Please reconfigure your existing Alexa datasources using the instructions below and double-check that any Klips/Metrics using Alexa datasources work as expected.

  • Under General section of a given datasource, select Reconfigure Connection.
  • If you see Switch to Basic settings  (Recommended) option when directed to the reconfigure screen (on the lower left side), follow instructions #1; otherwise, follow instructions #2.

 

Instructions #1

  1. Upon selecting Switch to Basic settings (Recommended), you’ll be directed to the following screen.
  2. Double-check that the fields are populated correctly and click Submit, and continue to save the datasource once a response is returned.

 

Instructions #2

  1. If you do not see the Switch to Basic settings (Recommended), change your query to AWIS using SigV4 method as outlined below.
  2. Your previous AWIS query (using SigV2) may resemble the following (input parameters specific to your account/query are shown in bold):

    http://awis.amazonaws.com/?AWSAccessKeyId=<yourAccessKeyID>&Action=UrlInfo&ResponseGroup=Rank&SignatureMethod=HmacSHA1&SignatureVersion=2&Timestamp={date.addMinutes(10).tz('UTC').format("yyyy-MM-dd'T'HH'%3A'mm'%3A'ss'Z'");}&Url=<yourUrl>&Signature={hash.append("GET").appendNewLine().append("awis.amazonaws.com").appendNewLine().append("/").appendNewLine().append("AWSAccessKeyId=<yourAccessKeyID>&Action=UrlInfo&ResponseGroup=Rank&SignatureMethod=HmacSHA1&SignatureVersion=2&Timestamp="+date.addMinutes(10).tz('UTC').format("yyyy-MM-dd'T'HH'%3A'mm'%3A'ss'Z'")+"&Url=<yourURL>").encodeHmacSha1("<yourSecretAccessKey>").encodeBase64().encodeURL().printDigest();}

  3. Copy and paste your previous query to a text editor to easily access account specific input parameters.
  4. Change your base url from http://awis.amazonaws.com/? to https://awis.amazonaws.com/api?. Changes are highlighted in bold.
  5. Remove parameters that are related to generating SigV2 from your previous query. In the example above, this corresponds to: AWSAccessKeyId, SignatureMethod, SignatureVersion, Timestamp and Signature.
  6. Once the parameters generating SigV2 are removed, ensure that the remaining parameters are currently supported by the query endpoint. For more information about Alexa endpoints please go here.
  7. Rearrange the remaining parameters in alphabetical order. In the example above, the new structure would be as follows:

    https://awis.amazonaws.com/api?Action=UrlInfo&ResponseGroup=Rank&Url=<yourUrl>

  8. Under the Query Parameters section, include header parameters as shown in the image below.
  9. For X-Amz-Date parameter, input the following value (this is common for all AWIS queries): {date.tz("utc").today.format("yyyyMMdd'T'HHmmss'Z'")}
  10. Construct the Authorization parameter (SigV4 method) by filling out the sections highlighted in bold and input it to the value field:

    AWS4-HMAC-SHA256 Credential=<yourAccessKeyID>/{date.tz("utc").today.format("yyyyMMdd")}/us-west-1/awis/aws4_request, SignedHeaders=host;x-amz-date, Signature={hash.signAWSv4Request("<yourSecretAccessKey>","<QueryString>",date.tz("utc").today.format("yyyyMMdd'T'HHmmss'Z'"),"awis.us-west-1.amazonaws.com", "/api", "", "us-west-1")}

  11. In step #10, <QueryString> corresponds to everything in the query URL after “/api?”. For the example shown above, <QueryString> corresponds to “Action=UrlInfo&ResponseGroup=Rank&Url=<yourUrl>”. Please note that Klipfolio currently does not support signatures which include query URLs with Klipfolio date parameters.
  12. Ensure Type is set to Header and click Submit.
  13. Continue to save the datasource once a response is returned.

 

Let us know if you have any questions, we are here to help!

1 comment

  • 0
    Avatar
    Meggan King

    Note - other services from Amazon which also use AWS Signature version 2 may be affected by this change and be required to switch to SigV4 method. 

Please sign in to leave a comment.