HttpRequestAuthedData - スコープ指定

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:27分
  • HttpRequestAuthedData() API は、署名された REST または SOAP 要求にアクセスして値を設定するためのメソッドを提供します。

    これらの API を次の順序で使用して、送信署名要求を生成します。
    1. HttpRequestData:API 要求をビルドします。
    2. AuthCredential:認証情報オブジェクトを作成するか、既存の認証情報オブジェクトを更新します。認証情報を使用して、 RequestAuthAPI クラスを介して要求に署名します。
    3. RequestAuthAPI:要求に署名し、HttpRequestAuthedData オブジェクトを返します。
    4. HttpRequestAuthedData:署名された要求に関する情報を取得します。
    5. GlideHTTPRequest:署名された要求を送信します。

    これらの API を使用する前に、要求に署名する 認証アルゴリズムを構成 し、要求の認証に使用する認証情報に関連付ける必要があります。

    この API は、 sn_auth 名前空間識別子を持つスコープ付きスクリプトで使用します。 このクラスは、コンストラクタを使用してインスタンス化することも、RequestAuthAPI クラスの generateAuth() メソッドから HttpRequestAuthedData オブジェクトを返すこともできます。

    HttpRequestAuthedData:HttpRequestAuthedData()

    HttpRequestAuthedData オブジェクトをインスタンス化します。

    このクラスは、コンストラクタを使用してインスタンス化することも、RequestAuthAPI クラスの generateAuth() メソッドから HttpRequestAuthedData オブジェクトを返すこともできます。

    表 : 1. パラメーター
    名前 タイプ 説明
    なし

    HttpRequestAuthedData - addHeader(文字列キー, 文字列値)

    HttpRequestAuthedData オブジェクトにヘッダーを追加します。

    表 : 2. パラメーター
    名前 タイプ 説明
    キー 文字列 HTTP ヘッダーの名前。
    文字列 HTTP ヘッダーの値。
    表 : 3. 戻り値
    タイプ 説明
    なし
    // 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(文字列キー, 文字列値)

    クエリパラメーターを HttpRequestAuthedData オブジェクトに追加します。

    表 : 4. パラメーター
    名前 タイプ 説明
    キー 文字列 クエリパラメーターの名前。
    文字列 クエリパラメーターの値。
    表 : 5. 戻り値
    タイプ 説明
    なし
    // 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()

    要求が署名されたときに含まれていた認証情報の値を返します。

    認証情報の値を使用して、認証アルゴリズムに必要な Cookie、署名、またはその他の値を格納します。たとえば、REST または SOAP 呼び出しの 1 回限りのトークンを取得して保存するスクリプトを使用して、接続情報の取得 (GCI) ステップを作成します。

    表 : 6. パラメーター
    名前 タイプ 説明
    なし
    表 : 7. 戻り値
    タイプ 説明
    文字列 認証情報の値のテキスト。

    この例は、認証情報値の取得を示しています。

    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'
    });

    出力:

    The Credential Value is someUsername:somePassword

    HttpRequestAuthedData - getDirective()

    署名がヘッダーの要求に適用されるか、クエリパラメーターとして適用されるか、認証情報の値として適用されるかを返します。

    デフォルトでは、署名はヘッダーに適用されます。setDirective() API を使用して、署名をクエリパラメーターまたは認証情報の値として適用できます。

    表 : 8. パラメーター
    名前 タイプ 説明
    なし
    表 : 9. 戻り値
    タイプ 説明
    文字列 署名をヘッダーに適用するか、クエリパラメーターとして適用するか、認証情報の値として適用するか。

    次の値が含まれます。

    • HEADER:署名が要求ヘッダーに適用されます。
    • QUERY:署名はクエリパラメーターとして適用されます。
    • CREDENTIAL_VALUE:署名は認証情報の値として適用されます。
    // 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());

    出力:

    Signature applied to: HEADER

    HttpRequestAuthedData - getHeaderMap()

    要求が署名されたときに含まれていたヘッダーを含むオブジェクトを返します。

    表 : 10. パラメーター
    名前 タイプ 説明
    なし
    表 : 11. 戻り値
    タイプ 説明
    オブジェクト 要求が署名されたときに含まれていたすべてのヘッダーを定義するキーと値のペア。各キーと値のペアには、次の部分が含まれています。
    • key:文字列。ヘッダーの名前。
    • 値:文字列。ヘッダーの値。
    // 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 );
    

    出力:

    *** 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()

    要求が署名されたときに含まれたクエリパラメーターを含むオブジェクトを返します。

    表 : 12. パラメーター
    名前 タイプ 説明
    なし
    表 : 13. 戻り値
    タイプ 説明
    オブジェクト 要求が署名されたときに含まれたクエリパラメーターを定義するキーと値のペア。各キーと値のペアには、次の部分が含まれています。
    • key:文字列。クエリパラメーターの名前。
    • 値:文字列。クエリパラメーターの値。
    // 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"]);

    出力:

    API Version is: v2

    HttpRequestAuthedData - getStatus()

    要求署名のステータスを返します。

    表 : 14. パラメーター
    名前 タイプ 説明
    なし
    表 : 15. 戻り値
    タイプ 説明
    文字列 要求署名のステータス。

    可能な値:

    • 成功:システムが要求に正常に署名しました。
    • FAIL:システムが要求に署名できませんでした。
    • スキップ:情報が不完全であったため、署名がスキップされました。
    // 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());

    出力:

    Status is: SUCCESS

    HttpRequestAuthedData - getStatusMessage()

    要求の署名に関する詳細なメッセージを返します。要求の署名が失敗した場合、このメソッドはエラーメッセージを返します。

    表 : 16. パラメーター
    名前 タイプ 説明
    なし
    表 : 17. 戻り値
    タイプ 説明
    文字列 要求の署名に関するメッセージ。要求署名に失敗した場合は、次のいずれかのエラーメッセージを返します。
    • credential is not valid:要求の署名に使用した AuthCredential オブジェクトを確認します。認証アルゴリズムが認証情報に関連付けられていることを確認します。詳細については、「 認証アルゴリズムの構成」を参照してください。
    • 要求データが空です。認証要求はスキップされます:必要な情報が不足している可能性があるため、HttpRequestData オブジェクトを確認してください。
    • スクリプトインクルードのスコープが見つかりません:要求の署名に使用される認証アルゴリズムレコードと関連するスクリプトインクルードが正しいスコープ内にあることを確認します。
    // 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());

    出力:

    Status message is: credential is not valid.

    HttpRequestAuthedData - setCredentialValue(文字列 credential_value)

    HttpRequestAuthedData オブジェクトの認証情報値を設定します。

    認証情報の値を使用して、認証アルゴリズムに必要な Cookie、署名、またはその他の値を格納します。たとえば、REST または SOAP 呼び出しの 1 回限りのトークンを取得して保存するスクリプトを使用して、接続情報の取得 (GCI) ステップを作成します。

    setCredentialValue() メソッドを使用して、ワークフロースタジオ の REST、SOAP、および GCI ステップの認証情報の値データピルを設定します。

    表 : 18. パラメーター
    名前 タイプ 説明
    credential_value 文字列 認証情報の値のテキスト。
    表 : 19. 戻り値
    タイプ 説明
    なし

    この例では、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(文字列ディレクティブ)

    署名をヘッダーの署名済み要求に適用するか、クエリパラメーターとして適用するか、認証情報値として適用するかを定義します。

    表 : 20. パラメーター
    名前 タイプ 説明
    ディレクティブ 文字列 署名された要求のヘッダー、クエリパラメーター、または認証情報の値に署名を適用するかどうか。

    次の値が含まれます。

    • query:署名をクエリパラメーターとして適用します。
    • header:要求ヘッダーに署名を適用します。
    • credential_value :認証情報の値に署名を適用します。
    表 : 21. 戻り値
    タイプ 説明
    なし
    // 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(文字列ステータス)

    要求署名のステータスを設定します。

    表 : 22. パラメーター
    名前 タイプ 説明
    ステータス 文字列 要求署名のステータス。

    可能な値:

    • 成功:システムが要求に正常に署名しました。
    • fail:システムが要求に署名できませんでした。
    • skipped:情報が不完全であったため、署名をスキップしました。
    表 : 23. 戻り値
    タイプ 説明
    なし
    // 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());

    出力:

     Status is: FAIL

    HttpRequestAuthedData - setStatusMessage(文字列 statusMessage)

    要求署名のステータスメッセージを設定します。

    表 : 24. パラメーター
    名前 タイプ 説明
    statusMessage 文字列 要求署名ステータスに設定するメッセージ。
    表 : 25. 戻り値
    タイプ 説明
    なし
    // 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());

    出力:

    Status message is: The request was successfully signed.