RequestAuthAPI :スコープ指定

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:9分
  • RequestAuthAPI は、REST 要求に署名を適用するメソッドを提供します。

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

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

    この API は、 sn_auth 名前空間識別子を持つスコープ付きスクリプトで使用します。

    RequestAuthAPI:RequestAuthAPI (オブジェクトデータ、オブジェクト認証情報)

    REST 要求と認証情報を使用して RequestAuthAPI オブジェクトをインスタンス化します。

    表 : 1. パラメーター
    名前 タイプ 説明
    データ オブジェクト 署名されていない REST 要求を含む HttpRequestData オブジェクト。このオブジェクトを構築するには、 HttpRequestData クラスを使用します。「 HttpRequestData API」を参照してください。
    認証情報 オブジェクト 認証情報 [discovery_credentials] テーブルのレコードを表すオブジェクト。AuthCredential クラスを使用してこのオブジェクトを取得します。「 認証情報 API」を参照してください。
    // 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 a credential record
    var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("88772d0d40990010f8772fdd9ebc8075");
     
    // Instantiate a RequestAuthAPI object
    var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);

    RequestAuthAPI:generateAuth()

    HttpRequestData オブジェクトに署名し、REST 要求での送信に使用する HttpRequestAuthedData オブジェクトを返します。

    表 : 2. パラメーター
    名前 タイプ 説明
    なし
    表 : 3. 戻り値
    タイプ 説明
    HttpRequestAuthedData オブジェクト。署名された結果に関する情報を取得するために使用するデータ。HttpRequestAuthedData クラスのメソッドを使用して、署名された結果を操作します。「 HttpRequestAuthedData API」を参照してください。

    この例では、要求を作成し、 RequestAuthAPI API に渡す認証情報レコードを取得します。次に、 generateAuth() メソッドが要求に署名します。

    // 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 a credential record
    gs.info( "date:" + httpRequestData.getDate() );
    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();
     

    RequestAuthAPI:getAuthCredential()

    要求の署名に使用する認証情報レコードを返します。

    表 : 4. パラメーター
    名前 タイプ 説明
    なし
    表 : 5. 戻り値
    タイプ 説明
    AuthCredential オブジェクト。要求の署名に使用された認証情報レコードに関する情報を取得するために使用するデータ。AuthCredential クラスのメソッドを使用して、認証情報を操作します。「 認証情報 API」を参照してください。
    // 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 a credential record
    var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("5b61c16f73533300f662cff8faf6a74b");
     
    // Return the AuthCredential object
    var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
    var signingCredential = signingAPI.getAuthCredential();

    RequestAuthAPI:getHttpRequestData()

    RequestAuthAPI クラスのインスタンス化に使用された HttpRequestData オブジェクトを返します。

    表 : 6. パラメーター
    名前 タイプ 説明
    なし
    表 : 7. 戻り値
    タイプ 説明
    HttpRequestData オブジェクト。署名されていない REST 要求が含まれます。HttpRequestData クラスのメソッドを使用して、要求を操作します。「 HttpRequestData API」を参照してください。
    // 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 a credential record
    var credential = new sn_cc.StandardCredentialsProvider().getAuthCredentialByID("88772d0d40990010f8772fdd9ebc8075");
     
    // Return the HttpRequestData object
    var signingAPI = new sn_auth.RequestAuthAPI(httpRequestData, credential);
    var unsignedRequest = signingAPI.getHttpRequestData();
     
    gs.info("Endpoint is: " + unsignedRequest.getEndpoint());

    出力:

    Endpoint is: https://third-party-endpoint

    RequestAuthAPI - resetAuthCredential()

    サードパーティリソースを制御するための一時的なセキュリティ認証情報を信頼できるユーザーに提供するために使用できる、一時的な制限付き特権トークンを生成します。

    この方法を使用するには、制限付きアクセストークンを処理および管理する API または SDK がサードパーティサービスに含まれている必要があります。

    表 : 8. パラメーター
    名前 タイプ 説明
    なし
    表 : 9. 戻り値
    タイプ 説明
    なし
    // Creates a temporary token 
    function(authAPI) {​
        var requestData = authAPI.getHttpRequestData();​
        var credential= authAPI.getAuthCredential();​
        credential.setAttribute('Action', 'aws_sessionToken');​  
        authAPI.resetAuthCredential();	
    
        //Returns status information
        var status = credential.getAttribute('credential_reset_status'); ​
    }