Assine cada requisição da API do AI Guardrails com seu AccessKey secret para autenticar a chamada. Os algoritmos HMAC-SHA1 (padrão) e HMAC-SM3 são compatíveis.
Os SDKs do AI Guardrails assinam as requisições automaticamente. Se você usa um SDK, ignore esta página. Para instruções de configuração do SDK, consulte os guias de Java , Python , PHP , Go e .NET .
Como funciona
Ambos os algoritmos seguem o mesmo fluxo de quatro etapas. A única diferença está na etapa 3: o HMAC-SHA1 inclui o cabeçalho Content-MD5 na string a ser assinada; o HMAC-SM3 não.
# Step 1 – Serialize x-acs-* headers (both algorithms)
SerializedHeaders = sort_alphabetically(x-acs-headers)
formatted as "<name>:<value>\n" each
# Step 2 – Serialize URI (both algorithms)
SerializedURI = uri + "?clientInfo=" + JSON(clientInfo)
# Step 3 – Build string-to-sign
# HMAC-SHA1
StringToSign = "POST\n" + "application/json\n" + ContentMD5 + "\n"
+ "application/json\n" + Date + "\n"
+ SerializedHeaders + "\n" + SerializedURI
# HMAC-SM3 (no ContentMD5 line)
StringToSign = "POST\n" + "application/json\n" + Date + "\n"
+ SerializedHeaders + "\n" + SerializedURI
# Step 4 – Generate signature (both algorithms)
HMACValue = HMAC-<ALGORITHM>(key=AccessKeySecret, data=StringToSign)
Signature = Base64(HMACValue)
Authorization = "acs " + AccessKeyId + ":" + Signature
Assinar com HMAC-SHA1
Etapa 1: Serializar os cabeçalhos da requisição
Crie uma string com todos os cabeçalhos HTTP cujos nomes começam com x-acs-:
Extraia todos os cabeçalhos HTTP cujo nome comece com
x-acs-.Ordene os cabeçalhos extraídos em ordem alfabética.
Formate cada cabeçalho como
<header-name>:<header-value>\n.Concatene todos os cabeçalhos formatados em uma única string.
Etapa 2: Serializar a URI e os parâmetros de consulta
Concatene a URI e o parâmetro de consulta clientInfo no seguinte formato:
uri + "?clientInfo=" + <JSON string of clientInfo>
Não aplique codificação URL nesta string.
Etapa 3: Construir a string a ser assinada
Concatene os campos abaixo, separando cada um por um caractere de nova linha (\n):
POST ← HTTP method
application/json ← Content-Type
<Value of Content-MD5 header> ← Content-MD5 hash of the request body
application/json ← Accept header
<Value of Date header> ← Request timestamp
<Serialized request headers> ← Output from step 1
<Serialized URI and parameters> ← Output from step 2
Exemplo — string a ser assinada para uma chamada síncrona de moderação de imagem:
POST
application/json
C+5Y0crpO4sYgC2DNjycug==
application/json
Tue, 14 Mar 2017 06:29:50 GMT
x-acs-signature-method:HMAC-SHA1
x-acs-signature-nonce:339497c2-d91f-4c17-a0a3-1192ee9e2202
x-acs-signature-version:1.0
x-acs-version:2018-05-09
/green/image/scan?clientInfo={"ip":"127.xxx.xxx.2","userId":"12023xxxx","userNick":"Mike","userType":"others"}
Etapa 4: Gerar a string de assinatura
Calcule o valor HMAC-SHA1 da string a ser assinada usando seu AccessKey secret como chave. O resultado é um array de bytes. Não o transforme antes da próxima etapa.
Codifique o array de bytes em Base64 para obter a string de assinatura.
-
Defina o cabeçalho
Authorizationcomo:Há um único espaço entre
acse<AccessKeyId>.acs <AccessKeyId>:<signature>
Assinar com HMAC-SM3
Etapa 1: Serializar os cabeçalhos da requisição
Crie uma string com todos os cabeçalhos HTTP cujos nomes começam com x-acs-:
Extraia todos os cabeçalhos HTTP cujo nome comece com
x-acs-.Ordene os cabeçalhos extraídos em ordem alfabética.
Formate cada cabeçalho como
<header-name>:<header-value>\n.Concatene todos os cabeçalhos formatados em uma única string.
Etapa 2: Serializar a URI e os parâmetros de consulta
Concatene a URI e o parâmetro de consulta clientInfo no seguinte formato:
uri + "?clientInfo=" + <JSON string of clientInfo>
Não aplique codificação URL nesta string.
Etapa 3: Construir a string a ser assinada
A string a ser assinada do HMAC-SM3 não inclui uma linha Content-MD5. Concatene os campos abaixo, separando cada um por um caractere de nova linha (\n):
POST ← HTTP method
application/json ← Content-Type
<Value of Date header> ← Request timestamp
<Serialized request headers> ← Output from step 1
<Serialized URI and parameters> ← Output from step 2
Exemplo — string a ser assinada para uma chamada síncrona de moderação de imagem:
POST
application/json
application/json
Wed,29Mar202301:44:08GMT
x-acs-content-sm3:690c6c542ac53eaa1e2ad724f34d60e689d11db88a2d89469be1fdb2f20fc35c
x-acs-signature-method:HMAC-SM3
x-acs-signature-nonce:339497c2-d91f-4c17-a0a3-1192ee9e2202
x-acs-signature-version:1.0
x-acs-version:2018-05-09
/green/image/scan?clientInfo={"ip":"127.xxx.xxx.2","userId":"12023xxxx","userNick":"Mike","userType":"others"}
Etapa 4: Gerar a string de assinatura
Calcule o valor HMAC-SM3 da string a ser assinada usando seu AccessKey secret como chave. O resultado é um array de bytes. Não o transforme antes da próxima etapa.
Codifique o array de bytes em Base64 para obter a string de assinatura.
-
Defina o cabeçalho
Authorizationcomo:Há um único espaço entre
acse<AccessKeyId>.acs <AccessKeyId>:<signature>