RequestAuthAPI - スコープ指定

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:10分
  • RequestAuthAPI は、REST 要求に署名を適用するためのメソッドを提供します。

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

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

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

    RequestAuthAPI - RequestAuthAPI(オブジェクト data, オブジェクト credential)

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

    表 : 1. パラメーター
    名前 タイプ 説明
    data オブジェクト 未署名の REST 要求を含む HttpRequestData オブジェクト。このオブジェクトを構築するには HttpRequestData クラスを使用します。「HttpRequestData API」を参照してください。
    credential オブジェクト 資格情報 [discovery_credentials] テーブルのレコードを表すオブジェクト。このオブジェクトは 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("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 クラスのメソッドを使用します。「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'); ​
    }