HttpRequestAuthedData: Bereichsbezogen

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 8 Minuten Lesedauer
  • Die HttpRequestAuthedData()- API bietet Methoden für den Zugriff auf und das Festlegen von Werten in einer signierten REST- oder SOAP-Anforderung.

    Generieren Sie ausgehende Signieranforderungen mit diesen APIs in der folgenden Reihenfolge:
    1. HttpRequestData: API-Anforderung erstellen.
    2. AuthCredential: Erstellen Sie ein Anmeldeinformationsobjekt, oder aktualisieren Sie ein vorhandenes Objekt. Verwenden Sie die Anmeldeinformationen, um die Anforderung über die RequestAuthAPI -Klasse zu signieren.
    3. RequestAuthAPI: Signieren Sie die Anforderung und geben Sie ein HttpRequestAuthedData-Objekt zurück.
    4. HttpRequestAuthedData: Ruft Informationen zur signierten Anforderung ab.
    5. GlideHTTPRequest: Signierte Anforderung senden.

    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-Bezeichner sn_auth. Sie können diese Klasse mit dem Konstruktor instanziieren, oder Sie können ein HttpRequestAuthedData-Objekt aus dergenerateAuth ()- Methode in der RequestAuthAPI -Klasse zurückgeben.

    HttpRequestAuthedData: HttpRequestAuthedData()

    Instanziiert ein HttpRequestAuthedData-Objekt.

    Sie können diese Klasse mit dem Konstruktor instanziieren, oder Sie können ein HttpRequestAuthedData-Objekt aus dergenerateAuth ()- Methode in der RequestAuthAPI -Klasse zurückgeben.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    Keine

    HttpRequestAuthedData - addHeader(Zeichenfolgenschlüssel, Zeichenfolgenwert)

    Fügt dem HttpRequestAuthedData-Objekt einen Header hinzu.

    Tabelle : 2. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Name des HTTP-Headers.
    Wert Zeichenfolge Wert des HTTP-Headers.
    Tabelle : 3. Ergebnisse
    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, Zeichenfolgenwert)

    Fügt dem HttpRequestAuthedData-Objekt einen Abfrageparameter hinzu.

    Tabelle : 4. Parameter
    Name Typ Beschreibung
    key Zeichenfolge Name des Abfrageparameters.
    Wert Zeichenfolge Wert des Abfrageparameters.
    Tabelle : 5. Ergebnisse
    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 Wert der Anmeldeinformationen 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 Schritt „Verbindungsinformationen abrufen (GCI)“ mit einem Skript, das ein einmaliges Token für einen REST- oder SOAP-Aufruf abruft und speichert.

    Tabelle : 6. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 7. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Text des Anmeldeinformationswerts.

    Dieses Beispiel zeigt das Abrufen 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 im Header, als Abfrageparameter oder als Anmeldeinformationswert auf die Anforderung 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 API „setDirective()“ verwenden.

    Tabelle : 8. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 9. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Gibt an, ob die Signatur auf den Header, als Abfrageparameter oder als Wert für Anmeldeinformationen angewendet wird.

    Werte:

    • HEADER: Die Signatur wird auf den Anforderungsheader angewendet.
    • QUERY: Die Signatur wird als Abfrageparameter angewendet.
    • CREDENTAL_VALUE: Die Signatur wird als Wert der Anmeldeinformationen angewendet.
    // 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 Header enthält, die beim Signieren der Anforderung enthalten waren.

    Tabelle : 10. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 11. Ergebnisse
    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:
    • Schlüssel: Zeichenfolge. Name des Headers.
    • Wert: Zeichenfolge. Wert des Headers.
    // 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 angegeben wurden.

    Tabelle : 12. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 13. Ergebnisse
    Typ Beschreibung
    Objekt Schlüssel-Wert-Paare, die die Abfrageparameter definieren, die beim Signieren der Anforderung einbezogen wurden. Jedes Schlüssel-Wert-Paar enthält die folgenden Teile:
    • Schlüssel: Zeichenfolge. Name des Abfrageparameters.
    • Wert: Zeichenfolge. Wert des Abfrageparameters.
    // 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.

    Tabelle : 14. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 15. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Der Status der Anforderungssignierung.

    Mögliche Werte:

    • ERFOLG: Das System hat die Anforderung erfolgreich signiert.
    • FAIL: Das System konnte die Anforderung nicht signieren.
    • ÜBERSPRUNGEN: Das System hat die Signierung übersprungen, da die Informationen unvollständig waren.
    // 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 zur Anforderungssignierung zurück. Wenn das Signieren der Anforderung fehlschlägt, gibt diese Methode die Fehlermeldung zurück.

    Tabelle : 16. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 17. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Meldung zum Signieren der Anforderung. Wenn das Signieren der Anforderung fehlschlägt, gibt eine der folgenden Fehlermeldungen zurück:
    • Anmeldeinformationen sind ungültig: Überprüfen Sie das AuthCredential-Objekt, das Sie zum Signieren der Anforderung verwendet haben. Stellen Sie sicher, dass den Anmeldeinformationen ein Authentifizierungsalgorithmus zugeordnet ist. Weitere Informationen finden Sie unter Authentifizierungsalgorithmus konfigurieren.
    • Anforderungsdaten sind leer. Anforderungsauthentifizierung wird übersprungen: Überprüfen Sie das HttpRequestData-Objekt, da erforderliche Informationen möglicherweise fehlen.
    • Bereich für Skripteinbindungen wurde nicht gefunden: Vergewissern Sie sich, dass sich der Datensatz des Authentifizierungsalgorithmus und die zugehörigen Skripteinbindungen, die zum Signieren der Anforderung verwendet werden, im richtigen Bereich befinden.
    // 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(Zeichenfolge „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 Schritt „Verbindungsinformationen abrufen (GCI)“ 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 Workflow-Studiofestzulegen.

    Tabelle : 18. Parameter
    Name Typ Beschreibung
    Credential_value Zeichenfolge Text des Anmeldeinformationswerts.
    Tabelle : 19. Ergebnisse
    Typ Beschreibung
    Keine

    In diesem Beispiel wird gezeigt, 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(Zeichenfolgenrichtlinie)

    Definiert, ob die Signatur auf die signierte Anforderung im Header, als Abfrageparameter oder als Anmeldeinformationswert angewendet werden soll.

    Tabelle : 20. Parameter
    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:

    • Abfrage: Wendet die Signatur als Abfrageparameter an.
    • Header: Wendet eine Signatur auf den Anforderungsheader an.
    • Credential_value : Wendet die Signatur auf den Wert der Anmeldeinformationen an.
    Tabelle : 21. Ergebnisse
    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.

    Tabelle : 22. Parameter
    Name Typ Beschreibung
    Status Zeichenfolge Der Status der Anforderungssignierung.

    Mögliche Werte:

    • Erfolg: Das System hat die Anforderung erfolgreich signiert.
    • Fehler: Das System konnte die Anforderung nicht signieren.
    • übersprungen: Das System hat die Signierung übersprungen, da die Informationen unvollständig waren.
    Tabelle : 23. Ergebnisse
    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 Statusnachricht für die Anforderungssignierung fest.

    Tabelle : 24. Parameter
    Name Typ Beschreibung
    statusMessage Zeichenfolge Nachricht, die für den Signierstatus der Anforderung festgelegt werden soll.
    Tabelle : 25. Ergebnisse
    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.