HttpRequestAuthedData - Com escopo
. HttpRequestAuthedData() A API fornece métodos para acessar e definir valores em uma solicitação REST ou SOAP assinada.
- HttpRequestData : Crie a solicitação de API.
- AuthCredential : Crie um objeto de credencial ou atualize um objeto existente. Use a credencial para assinar a solicitação por meio do RequestAuthAPI classe.
- RequestAuthAPI : Assine a solicitação e retorne um objeto HttpRequestAuthedData.
- HttpRequestAuthedData : Obter informações sobre a solicitação assinada.
- GlideHTTPRequest : Enviar a solicitação assinada.
Antes de usar essas APIs, você deve configure um algoritmo de autenticação para assinar a solicitação e associá-la à credencial usada para autenticar a solicitação.
Use esta API em scripts com escopo com sn_auth identificador de namespace. Você pode instanciar esta classe usando o construtor ou retornar um objeto HttpRequestAutedData do GenerateAuth() método no RequestAuthAPI classe.
HttpRequestAutedData - HtttpRequestAuthedData()
Instancia um objeto HttpRequestAutedData.
Você pode instanciar esta classe usando o construtor ou retornar um objeto HttpRequestAutedData do GenerateAuth() método no RequestAuthAPI classe.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
HttpRequestAuthedData - addHeader(chave de cadeia de caracteres, valor de cadeia de caracteres)
Adiciona um cabeçalho ao objeto HttpRequestAutedData.
| Nome | Tipo | Descrição |
|---|---|---|
| chave | Cadeia de caracteres | Nome do cabeçalho HTTP. |
| valor | Cadeia de caracteres | Valor do cabeçalho HTTP. |
| Tipo | Descrição |
|---|---|
| vazio |
// Define HttpRequestData
var endpoint= "https://third-party-endpoint";
var httpRequestData = new sn_auth.HttpRequestData();
httpRequestData.setEndpoint(endpoint);
httpRequestData.setService('s3');
httpRequestData.setRegion('us-east-1');
httpRequestData.setHttpMethod("PUT");
var content = "Action=SendMessage&MessageBody=This is a test message";
httpRequestData.setContent(content);
//Get AuthCredential
var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("5b61c16f73533300f662cff8faf6a74b");
// Create RequestAuthAPI and sign the request
var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
var output = signingAPI.generateAuth();
// Update the signed response
output.addHeader('access-rights', 'public-read');
HttpRequestAuthedData - addQueryParam(Chave de cadeia de caracteres, valor da cadeia de caracteres)
Adiciona um parâmetro de consulta ao objeto HttpRequestAutedData.
| Nome | Tipo | Descrição |
|---|---|---|
| chave | Cadeia de caracteres | Nome do parâmetro de consulta. |
| valor | Cadeia de caracteres | Valor do parâmetro de consulta. |
| Tipo | Descrição |
|---|---|
| vazio |
// Define HttpRequestData
var endpoint= "https://third-party-endpoint";
var httpRequestData = new sn_auth.HttpRequestData();
httpRequestData.setEndpoint(endpoint);
httpRequestData.setService('s3');
httpRequestData.setRegion('us-east-1');
httpRequestData.setHttpMethod("PUT");
var content = "Action=SendMessage&MessageBody=This is a test message";
httpRequestData.setContent(content);
//Get AuthCredential
var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("5b61c16f73533300f662cff8faf6a74b");
// Create RequestAuthAPI and sign the request
var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
var output = signingAPI.generateAuth();
// Update the signed response
output.addQueryParameter('api_version', 'v2');
HttpRequestAutedData - getCredentialValue()
Retorna o valor da credencial que foi incluído quando a solicitação foi assinada.
Use um valor de credencial para armazenar um cookie, assinatura ou outro valor necessário para um algoritmo de autenticação. Por exemplo, crie uma etapa Obter informações de conexão (GCI) com um script que recupera e armazena um token único para uma chamada REST ou SOAP.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Texto do valor da credencial. |
Este exemplo mostra a recuperação de um valor de credencial.
var RequestAuthGCISigner = Class.create();
RequestAuthGCISigner.prototype = Object.extend(new RequestAuthInternal(), {
initialize: function() {
RequestAuthInternal.prototype.initialize.call(this);
},
generateAuth: function(authAPI) {
var requestData = authAPI.getHttpRequestData();
// get credentials
var credential = authAPI.getAuthCredential();
var username = credential.getAttribute("user_name");
var password = credential.getAttribute("password");
var httpRequestSignedData = new sn_auth.HttpRequestAuthedData();
var directive = requestData.getDirective();
// set CREDENTIAL_VALUE
httpRequestSignedData.setCredentialValue(username+":"+password);
httpRequestSignedData.setDirective("CREDENTIAL_VALUE");
httpRequestSignedData.setStatus("SUCCESS");
gs.info("The Credential Value is " + httpRequestSignedData.getCredentialValue());
return httpRequestSignedData;
},
type: 'RequestAuthGCISigner'
});
Saída:
The Credential Value is someUsername:somePassword
HttpRequestAutedData - getDirective()
Retorna se a assinatura é aplicada à solicitação no cabeçalho, como um parâmetro de consulta ou como um valor de credencial.
Por padrão, o sistema aplica a assinatura ao cabeçalho. Você pode aplicar a assinatura como um parâmetro de consulta ou valor de credencial usando SetDirective() API.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Se a assinatura é aplicada ao cabeçalho, como um parâmetro de consulta ou como um valor de credencial. Os valores incluem:
|
// Define HttpRequestData
var endpoint= "https://third-party-endpoint";
var httpRequestData = new sn_auth.HttpRequestData();
httpRequestData.setEndpoint(endpoint);
httpRequestData.setService('s3');
httpRequestData.setRegion('us-east-1');
httpRequestData.setHttpMethod("PUT");
var content = "Action=SendMessage&MessageBody=This is a test message";
httpRequestData.setContent(content);
//Get AuthCredential
var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("5b61c16f73533300f662cff8faf6a74b");
// Create RequestAuthAPI and sign the request
var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
var output = signingAPI.generateAuth();
output.setDirective("header");
gs.info("Signature applied to: " + output.getDirective());
Saída:
Signature applied to: HEADER
HttpRequestAutedData - getHeaderMap()
Retorna um objeto que contém os cabeçalhos que foram incluídos quando a solicitação foi assinada.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Pares de chave-valor que definem todos os cabeçalhos incluídos quando a solicitação foi assinada. Cada par de chave-valor inclui estas partes:
|
// Define the HttpRequestData object
var endpoint= "https://third-party-endpoint";
var httpRequestData = new sn_auth.HttpRequestData();
httpRequestData.setEndpoint(endpoint);
httpRequestData.setService('s3');
httpRequestData.setRegion('us-east-1');
httpRequestData.setHttpMethod("PUT");
var content = "Action=SendMessage&MessageBody=This is a test message";
httpRequestData.setContent(content);
httpRequestData.addHeader('x-amz-acl' , 'public-read' );
// Get an AuthCredential object
var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("5b61c16f73533300f662cff8faf6a74b");
// Create the RequestAuthAPI object and sign the request
var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
var output = signingAPI.generateAuth();
// get the signed response detail
var authH = headerM["Authorization"];
var xamzdateH = headerM["X-Amz-Date"];
var content256 = headerM["x-amz-content-sha256"];
gs.debug('authH:' + authH );
gs.debug('xamzdateH:' + xamzdateH );
gs.debug('content256:' + content256 );
Saída:
*** Script: [DEBUG] authH:AWS4-HMAC-SHA256 Credential=lsjfljljfllfwek/20191127/us-east-1/s3/aws4_request,
SignedHeaders=host;x-amz-acl;x-amz-content-sha256;x-amz-date,
Signature=5c349011324910c34596ba7abbd10e07c4127774049f8953418bd7bed7d02b90
*** Script: [DEBUG] xamzdateH:20191127T175210Z
*** Script: [DEBUG] content256:UNSIGNED-PAYLOAD
HttpRequestAutedData - getQueryMap()
Retorna um objeto que contém os parâmetros de consulta incluídos quando a solicitação foi assinada.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Pares de chave-valor que definem os parâmetros de consulta incluídos quando a solicitação foi assinada. Cada par de chave-valor inclui estas partes:
|
// Define the HttpRequestData object
var endpoint= "https://third-party-endpoint";
var httpRequestData = new sn_auth.HttpRequestData();
httpRequestData.setEndpoint(endpoint);
httpRequestData.setService('s3');
httpRequestData.setRegion('us-east-1');
httpRequestData.setHttpMethod("PUT");
var content = "Action=SendMessage&MessageBody=This is a test message";
httpRequestData.setContent(content);
httpRequestData.addQueryParam('api_version', 'v2' );
httpRequestData.addQueryParam('limit', '1000' );
httpRequestData.addQueryParam('offset', '1' );
// Get an AuthCredential object
var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("5b61c16f73533300f662cff8faf6a74b");
// Create the RequestAuthAPI object and sign the request
var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
var output = signingAPI.generateAuth();
// Get the signed response
queryMap = output.getQueryMap();
gs.info("API Version is: " + queryMap["api_version"]);
Saída:
API Version is: v2
HttpRequestAutedData - getStatus()
Retorna o status da assinatura da solicitação.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | O status da assinatura da solicitação. Valores possíveis:
|
// Define the HttpRequestData object
var endpoint= "https://third-party-endpoint";
var httpRequestData = new sn_auth.HttpRequestData();
httpRequestData.setEndpoint(endpoint);
httpRequestData.setService('s3');
httpRequestData.setRegion('us-east-1');
httpRequestData.setHttpMethod("PUT");
var content = "Action=SendMessage&MessageBody=This is a test message";
httpRequestData.setContent(content);
// Get an AuthCredential object
var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("5b61c16f73533300f662cff8faf6a74b");
// Create the RequestAuthAPI object and sign the request
var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
var output = signingAPI.generateAuth();
// Get the signed status
gs.info("Status is: " + output.getStatus());
Saída:
Status is: SUCCESS
HttpRequestAutedData - getStatusMessage()
Retorna uma mensagem detalhada sobre a assinatura da solicitação. Se a assinatura da solicitação falhar, este método retornará a mensagem de erro.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Mensagem sobre a assinatura da solicitação. Se a assinatura da solicitação falhar, retornará uma destas mensagens de erro:
|
// Define the HttpRequestData object
var endpoint= "https://third-party-endpoint";
var httpRequestData = new sn_auth.HttpRequestData();
httpRequestData.setEndpoint(endpoint);
httpRequestData.setService('s3');
httpRequestData.setRegion('us-east-1');
httpRequestData.setHttpMethod("PUT");
var content = "Action=SendMessage&MessageBody=This is a test message";
httpRequestData.setContent(content);
httpRequestData.addQueryParam('api_version', 'v2' );
httpRequestData.addQueryParam('limit', '1000' );
httpRequestData.addQueryParam('offset', '1' );
// Get AuthCredential object and set an attribute
var credential = new sn_auth.AuthCredential();
credential.setAttribute("user_name", "admin");
credential.setAttribute("password", "admin");
// Create the RequestAuthAPI object and sign the request
var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
var output = signingAPI.generateAuth();
// Get the signed status
gs.info("Status message is: " + output.getStatusMessage());
Saída:
Status message is: credential is not valid.
HttpRequestAuthedData - setCredentialValue(cadeia de caracteres credential_value)
Define um valor de credencial para o objeto HttpRequestAuthedData.
Use um valor de credencial para armazenar um cookie, assinatura ou outro valor necessário para um algoritmo de autenticação. Por exemplo, crie uma etapa Obter informações de conexão (GCI) com um script que recupera e armazena um token único para uma chamada REST ou SOAP.
Use SetCredentialValue() método para definir Valor da credencial Cápsula de dados para REST, SOAP e GCI etapas em Workflow Studio.
| Nome | Tipo | Descrição |
|---|---|---|
| credential_value | Cadeia de caracteres | Texto do valor da credencial. |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
Este exemplo mostra como definir um valor de credencial para uma etapa de GCI.
var RequestAuthGCISigner = Class.create();
RequestAuthGCISigner.prototype = Object.extend(new RequestAuthInternal(), {
initialize: function() {
RequestAuthInternal.prototype.initialize.call(this);
},
generateAuth: function(authAPI) {
var requestData = authAPI.getHttpRequestData();
// get credentials
var credential = authAPI.getAuthCredential();
var username = credential.getAttribute("user_name");
var password = credential.getAttribute("password");
var httpRequestSignedData = new sn_auth.HttpRequestAuthedData();
var directive = requestData.getDirective();
var b64data = GlideStringUtil.base64encode(username+":"+password);
// set CREDENTIAL_VALUE
httpRequestSignedData.setCredentialValue("Basic " + b64data);
httpRequestSignedData.setDirective("CREDENTIAL_VALUE");
httpRequestSignedData.setStatus("SUCCESS");
return httpRequestSignedData;
},
type: 'RequestAuthGCISigner'
});
HttpRequestAuthedData - setDirective(diretiva de cadeia de caracteres)
Define se a assinatura deve ser aplicada à solicitação assinada no cabeçalho, como um parâmetro de consulta ou como um valor de credencial.
| Nome | Tipo | Descrição |
|---|---|---|
| diretiva | Cadeia de caracteres | Se a assinatura deve ser aplicada ao cabeçalho, parâmetro de consulta ou valor de credencial da solicitação assinada. Os valores incluem:
|
| Tipo | Descrição |
|---|---|
| vazio |
// Define HttpRequestData
var endpoint= "https://third-party-endpoint";
var httpRequestData = new sn_auth.HttpRequestData();
httpRequestData.setEndpoint(endpoint);
httpRequestData.setService('s3');
httpRequestData.setRegion('us-east-1');
httpRequestData.setHttpMethod("PUT");
var content = "Action=SendMessage&MessageBody=This is a test message";
httpRequestData.setContent(content);
//Get AuthCredential
var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("5b61c16f73533300f662cff8faf6a74b");
// Create RequestAuthAPI and sign the request
var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
var output = signingAPI.generateAuth();
output.setDirective("header");
HttpRequestAuthedData - setStatus(status da cadeia de caracteres)
Define o status da assinatura da solicitação.
| Nome | Tipo | Descrição |
|---|---|---|
| status | Cadeia de caracteres | O status da assinatura da solicitação. Valores possíveis:
|
| Tipo | Descrição |
|---|---|
| vazio |
// Define the HttpRequestData object
var endpoint= "https://third-party-endpoint";
var httpRequestData = new sn_auth.HttpRequestData();
httpRequestData.setEndpoint(endpoint);
httpRequestData.setService('s3');
httpRequestData.setRegion('us-east-1');
httpRequestData.setHttpMethod("PUT");
var content = "Action=SendMessage&MessageBody=This is a test message";
httpRequestData.setContent(content);
// Get an AuthCredential object
var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("5b61c16f73533300f662cff8faf6a74b");
// Create the RequestAuthAPI object and sign the request
var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
var output = signingAPI.generateAuth();
output.setStatus("fail");
// Get the signed status
gs.info("Status is: " + output.getStatus());
Saída:
Status is: FAIL
HttpRequestAutedData - setStatusMessage(cadeia de caracteres statusMessage)
Define uma mensagem de status para a assinatura da solicitação.
| Nome | Tipo | Descrição |
|---|---|---|
| statusMessage | Cadeia de caracteres | Mensagem a ser definida para o status de assinatura da solicitação. |
| Tipo | Descrição |
|---|---|
| vazio |
// Define the HttpRequestData object
var endpoint= "https://third-party-endpoint";
var httpRequestData = new sn_auth.HttpRequestData();
httpRequestData.setEndpoint(endpoint);
httpRequestData.setService('s3');
httpRequestData.setRegion('us-east-1');
httpRequestData.setHttpMethod("PUT");
var content = "Action=SendMessage&MessageBody=This is a test message";
httpRequestData.setContent(content);
// Get an AuthCredential object
var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("5b61c16f73533300f662cff8faf6a74b");
// Create the RequestAuthAPI object and sign the request
var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
var output = signingAPI.generateAuth();
output.setStatusMessage("The request was successfully signed.");
// Get the signed status message
gs.info("Status message is: " + output.getStatusMessage());
Saída:
Status message is: The request was successfully signed.