HttpRequestAuthedData : inclus dans le champ d’application
L’API HttpRequestAuthedData() fournit des méthodes permettant d’accéder et de définir les valeurs d’une demande REST ou SOAP signée.
- HttpRequestData : générer la demande d’API.
- AuthCredential : créer un objet d’informations d’identification ou mettre à jour un objet existant. Utilisez les informations d’identification pour signer la demande via la classe RequestAuthAPI .
- RequestAuthAPI : signer la demande et renvoyer un objet HttpRequestAuthedData.
- HttpRequestAuthedData : obtenir des informations sur la demande signée.
- GlideHTTPRequest : envoyer la demande signée.
Avant d’utiliser ces API, vous devez configurer un algorithme d’authentification pour signer la demande et l’associer aux informations d’identification utilisées pour authentifier la demande.
Utilisez cette API dans les scripts inclus dans le champ d’application avec l’identificateur d’espace de noms sn_auth. Vous pouvez instancier cette classe à l’aide du constructeur, ou vous pouvez renvoyer un objet HttpRequestAuthedData à partir de la méthode generateAuth() dans la classe RequestAuthAPI .
HttpRequestAuthedData : HttpRequestAuthedData()
Instancie un objet HttpRequestAuthedData.
Vous pouvez instancier cette classe à l’aide du constructeur, ou vous pouvez renvoyer un objet HttpRequestAuthedData à partir de la méthode generateAuth() dans la classe RequestAuthAPI .
| Nom | Type | Description |
|---|---|---|
| Aucun |
HttpRequestAuthedData : addHeader(clé de chaîne, valeur de chaîne)
Ajoute un en-tête à l’objet HttpRequestAuthedData.
| Nom | Type | Description |
|---|---|---|
| key | Chaîne | Nom de l’en-tête HTTP. |
| valide | Chaîne | Valeur de l’en-tête HTTP. |
| Type | Description |
|---|---|
| nul |
// 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(clé de chaîne, valeur de chaîne)
Ajoute un paramètre de requête à l’objet HttpRequestAuthedData.
| Nom | Type | Description |
|---|---|---|
| key | Chaîne | Nom du paramètre de requête. |
| valide | Chaîne | Valeur du paramètre de requête. |
| Type | Description |
|---|---|
| nul |
// 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');
HttpRequestAuthedData : getCredentialValue()
Renvoie la valeur d’informations d’identification incluse lors de la signature de la demande.
Utilisez une valeur d’informations d’identification pour stocker un cookie, une signature ou toute autre valeur nécessaire pour un algorithme d’authentification. Par exemple, créez une étape Obtenir des informations de connexion (GCI) avec un script qui récupère et stocke un jeton à usage unique pour un appel REST ou SOAP.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Texte de la valeur d’informations d’identification. |
Cet exemple montre la récupération d’une valeur d’informations d’identification.
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'
});
Sortie :
The Credential Value is someUsername:somePassword
HttpRequestAuthedData : getDirective()
Indique si la signature est appliquée à la demande dans l’en-tête, en tant que paramètre de requête ou en tant que valeur d’informations d’identification.
Par défaut, le système applique la signature à l’en-tête. Vous pouvez appliquer la signature en tant que paramètre de requête ou valeur d’informations d’identification à l’aide de l’API setDirective().
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Indique si la signature est appliquée à l’en-tête, en tant que paramètre de requête ou en tant que valeur d’informations d’identification. Les valeurs comprennent :
|
// 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());
Sortie :
Signature applied to: HEADER
HttpRequestAuthedData : getHeaderMap()
Renvoie un objet contenant les en-têtes inclus lors de la signature de la demande.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Paires clé-valeur qui définissent tous les en-têtes inclus lors de la signature de la demande. Chaque paire clé-valeur comprend les éléments suivants :
|
// 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 );
Sortie :
*** 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
HttpRequestAuthedData : getQueryMap()
Renvoie un objet contenant les paramètres de requête inclus lors de la signature de la demande.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Paires clé-valeur qui définissent les paramètres de requête inclus lors de la signature de la demande. Chaque paire clé-valeur comprend les éléments suivants :
|
// 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"]);
Sortie :
API Version is: v2
HttpRequestAuthedData : getStatus()
Renvoie l’état de la demande de signature.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | L’état de la demande en cours de signature. Valeurs possibles :
|
// 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());
Sortie :
Status is: SUCCESS
HttpRequestAuthedData : getStatusMessage()
Renvoie un message détaillé sur la signature de la demande. Si la signature de la demande échoue, cette méthode renvoie le message d’erreur.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Message concernant la signature de demande. Si la signature de la demande échoue, renvoie l’un des messages d’erreur suivants :
|
// 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());
Sortie :
Status message is: credential is not valid.
HttpRequestAuthedData : setCredentialValue(String credential_value)
Définit une valeur d’informations d’identification pour l’objet HttpRequestAuthedData.
Utilisez une valeur d’informations d’identification pour stocker un cookie, une signature ou toute autre valeur nécessaire pour un algorithme d’authentification. Par exemple, créez une étape Obtenir des informations de connexion (GCI) avec un script qui récupère et stocke un jeton à usage unique pour un appel REST ou SOAP.
Utilisez la méthode setCredentialValue() pour définir la pastille de données de valeur d’informations d’identification pour les étapes REST, SOAP et GCI dans Studio de workflow.
| Nom | Type | Description |
|---|---|---|
| credential_value | Chaîne | Texte de la valeur d’informations d’identification. |
| Type | Description |
|---|---|
| Aucun |
Cet exemple montre comment définir une valeur d’informations d’identification pour une étape 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(directive String)
Définit s’il faut appliquer la signature à la demande signée dans l’en-tête, en tant que paramètre de requête ou en tant que valeur d’informations d’identification.
| Nom | Type | Description |
|---|---|---|
| directive | Chaîne | Indique s’il faut appliquer la signature à l’en-tête, au paramètre de requête ou à la valeur d’informations d’identification de la demande signée. Les valeurs comprennent :
|
| Type | Description |
|---|---|
| nul |
// 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(état de la chaîne)
Définit l’état de la demande de signature.
| Nom | Type | Description |
|---|---|---|
| statut | Chaîne | L’état de la demande en cours de signature. Valeurs possibles :
|
| Type | Description |
|---|---|
| nul |
// 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());
Sortie :
Status is: FAIL
HttpRequestAuthedData : setStatusMessage(String statusMessage)
Définit un message d’état pour la signature de la demande.
| Nom | Type | Description |
|---|---|---|
| statusMessage | Chaîne | Message à définir pour l’état de signature de la demande. |
| Type | Description |
|---|---|
| nul |
// 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());
Sortie :
Status message is: The request was successfully signed.