HttpRequestAuthedData – Scoped
Die HttpRequestAuthedData()- API bietet Methoden für den Zugriff auf und das Festlegen von Werten in einer signierten REST- oder SOAP-Anforderung.
- HttpRequestData: Erstellen Sie die API-Anforderung.
- AuthCredential: Erstellen Sie ein Anmeldeinformationsobjekt, oder aktualisieren Sie ein vorhandenes. Verwenden Sie die Anmeldeinformationen, um die Anforderung über die RequestAuthAPI -Klasse zu signieren.
- RequestAuthAPI: Signiert die Anforderung und gibt ein HttpRequestAuthedData-Objekt zurück.
- HttpRequestAuthedData: Informationen zur signierten Anforderung abrufen.
- GlideHTTPRequest: Senden Sie die signierte Anforderung.
Bevor Sie diese APIs verwenden, müssen Sie einen Authentifizierungsalgorithmus konfigurieren, um die Anforderung zu signieren und den Anmeldeinformationen zuzuordnen, die zur Authentifizierung der Anforderung verwendet werden.
Verwenden Sie diese API in bereichsbezogenen Skripts mit dem Namespace-Identifier sn_auth. Sie können diese Klasse mit dem Konstruktor instanziieren, oder Sie können ein HttpRequestAuthedData-Objekt von der generateAuth()- Methode in der RequestAuthAPI -Klasse zurückgeben.
HttpRequestAuthedData – HttpRequestAuthedData()
Instantiiert ein HttpRequestAuthedData-Objekt.
Sie können diese Klasse mit dem Konstruktor instanziieren, oder Sie können ein HttpRequestAuthedData-Objekt von der generateAuth()- Methode in der RequestAuthAPI -Klasse zurückgeben.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
HttpRequestAuthedData – addHeader(String key, String value)
Fügt dem HttpRequestAuthedData-Objekt eine Kopfzeile hinzu.
| Name | Typ | Beschreibung |
|---|---|---|
| key | Zeichenfolge | Name des HTTP-Headers. |
| Wert | Zeichenfolge | Wert des HTTP-Headers. |
| Typ | Beschreibung |
|---|---|
| void |
// 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(String key, String value)
Fügt dem HttpRequestAuthedData-Objekt einen Abfrageparameter hinzu.
| Name | Typ | Beschreibung |
|---|---|---|
| key | Zeichenfolge | Name des Abfrageparameters. |
| Wert | Zeichenfolge | Wert des Abfrageparameters. |
| Typ | Beschreibung |
|---|---|
| void |
// 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()
Gibt den Anmeldeinformationswert zurück, der beim Signieren der Anforderung enthalten war.
Verwenden Sie einen Anmeldeinformationswert, um ein Cookie, eine Signatur oder einen anderen Wert zu speichern, der für einen Authentifizierungsalgorithmus erforderlich ist. Erstellen Sie beispielsweise einen GCI-Schritt (Verbindungsinformationen abrufen) mit einem Skript, das ein einmaliges Token für einen REST- oder SOAP-Aufruf abruft und speichert.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Text des Anmeldeinformationswerts. |
Dieses Beispiel zeigt den Abruf eines Anmeldeinformationswerts.
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'
});
Ausgabe:
The Credential Value is someUsername:somePassword
HttpRequestAuthedData – getDirective()
Gibt zurück, ob die Signatur auf die Anforderung im Header, als Abfrageparameter oder als Anmeldeinformationswert angewendet wird.
Standardmäßig wendet das System die Signatur auf den Header an. Sie können die Signatur als Abfrageparameter oder Anmeldeinformationswert anwenden, indem Sie die setDirective()- API verwenden.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Gibt an, ob die Signatur auf den Header, als Abfrageparameter oder als Wert für Anmeldeinformationen angewendet wird. Werte:
|
// 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());
Ausgabe:
Signature applied to: HEADER
HttpRequestAuthedData – getHeaderMap()
Gibt ein Objekt zurück, das die Kopfzeilen enthält, die beim Signieren der Anforderung enthalten waren.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Schlüssel-Wert-Paare, die alle Header definieren, die beim Signieren der Anforderung enthalten waren. Jedes Schlüssel-Wert-Paar enthält die folgenden Teile:
|
// 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 );
Ausgabe:
*** 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()
Gibt ein Objekt zurück, das die Abfrageparameter enthält, die beim Signieren der Anforderung enthalten waren.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Schlüssel-Wert-Paare, die die Abfrageparameter definieren, die beim Signieren der Anforderung enthalten waren. Jedes Schlüssel-Wert-Paar enthält die folgenden Teile:
|
// 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"]);
Ausgabe:
API Version is: v2
HttpRequestAuthedData – getStatus()
Gibt den Status der Anforderungssignierung zurück.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Status der Anforderungssignierung. Mögliche Werte:
|
// 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());
Ausgabe:
Status is: SUCCESS
HttpRequestAuthedData – getStatusMessage()
Gibt eine detaillierte Nachricht über die Anforderungssignierung zurück. Wenn das Signieren der Anforderung fehlschlägt, gibt diese Methode die Fehlermeldung zurück.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Nachricht über die Unterzeichnung der Anforderung. Wenn das Signieren der Anforderung fehlschlägt, gibt eine der folgenden Fehlermeldungen zurück:
|
// 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());
Ausgabe:
Status message is: credential is not valid.
HttpRequestAuthedData – setCredentialValue(String credential_value)
Legt einen Anmeldeinformationswert für das HttpRequestAuthedData-Objekt fest.
Verwenden Sie einen Anmeldeinformationswert, um ein Cookie, eine Signatur oder einen anderen Wert zu speichern, der für einen Authentifizierungsalgorithmus erforderlich ist. Erstellen Sie beispielsweise einen GCI-Schritt (Verbindungsinformationen abrufen) mit einem Skript, das ein einmaliges Token für einen REST- oder SOAP-Aufruf abruft und speichert.
Verwenden Sie die Methode setCredentialValue(), um die Datenpille „ Anmeldeinformationswert“ für REST-, SOAP- und GCI-Schritte in Flow Designerfestzulegen.
| Name | Typ | Beschreibung |
|---|---|---|
| credential_value | Zeichenfolge | Text des Anmeldeinformationswerts. |
| Typ | Beschreibung |
|---|---|
| Keine |
Dieses Beispiel zeigt, wie ein Anmeldeinformationswert für einen GCI-Schritt festgelegt wird.
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(String direktive)
Definiert, ob die Signatur auf die signierte Anforderung im Header, als Abfrageparameter oder als Anmeldeinformationswert angewendet werden soll.
| Name | Typ | Beschreibung |
|---|---|---|
| Direktive | Zeichenfolge | Gibt an, ob die Signatur auf den Header, den Abfrageparameter oder den Anmeldeinformationswert der signierten Anforderung angewendet werden soll. Werte:
|
| Typ | Beschreibung |
|---|---|
| void |
// 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(String status)
Legt den Status der Anforderungssignierung fest.
| Name | Typ | Beschreibung |
|---|---|---|
| Status | Zeichenfolge | Status der Anforderungssignierung. Mögliche Werte:
|
| Typ | Beschreibung |
|---|---|
| void |
// 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());
Ausgabe:
Status is: FAIL
HttpRequestAuthedData – setStatusMessage(String statusMessage)
Legt eine Statusmeldung für die Anforderungssignierung fest.
| Name | Typ | Beschreibung |
|---|---|---|
| statusMessage | Zeichenfolge | Nachricht, die für den Anforderungssignaturstatus festgelegt werden soll. |
| Typ | Beschreibung |
|---|---|
| void |
// 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());
Ausgabe:
Status message is: The request was successfully signed.