HttpRequestAuthedData - 범위 지정됨

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기26분
  • HttpRequestAuthedData() API는 서명된 REST 또는 SOAP 요청에서 값에 액세스하고 설정하는 메서드를 제공합니다.

    다음 순서로 이러한 API를 사용하여 아웃바운드 서명 요청을 생성합니다.
    1. HttpRequestData: API 요청을 빌드합니다.
    2. AuthCredential: 자격 증명 개체를 만들거나 기존 개체를 업데이트합니다. 자격 증명을 사용하여 RequestAuthAPI 클래스를 통해 요청에 서명합니다.
    3. RequestAuthAPI: 요청에 서명하고 HttpRequestAuthedData 개체를 반환합니다.
    4. HttpRequestAuthedData: 서명된 요청에 대한 정보를 가져옵니다.
    5. GlideHTTPRequest: 서명된 요청을 보냅니다.

    이러한 API를 사용하기 전에 요청에 서명하고 요청을 인증하는 데 사용되는 자격 증명과 연결하는 인증 알고리즘을 구성해야 합니다.

    sn_auth 네임스페이스 식별자와 함께 범위가 지정된 스크립트에서 이 API를 사용합니다. 생성자를 사용하여 이 클래스를 인스턴스화하거나 RequestAuthAPI 클래스의 generateAuth() 메서드에서 HttpRequestAuthedData 객체를 반환할 수 있습니다.

    HttpRequestAuthedData - HttpRequestAuthedData()

    HttpRequestAuthedData 개체를 인스턴스화합니다.

    생성자를 사용하여 이 클래스를 인스턴스화하거나 RequestAuthAPI 클래스의 generateAuth() 메서드에서 HttpRequestAuthedData 객체를 반환할 수 있습니다.

    표 1. 매개변수
    이름 유형 설명
    없음

    HttpRequestAuthedData - addHeader(문자열 키, 문자열 값)

    HttpRequestAuthedData 개체에 헤더를 추가합니다.

    표 2. 매개변수
    이름 유형 설명
    문자열 HTTP 헤더의 이름입니다.
    문자열 HTTP 헤더의 값입니다.
    표 3. 반환
    유형 설명
    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(문자열 키, 문자열 값)

    HttpRequestAuthedData 개체에 쿼리 매개 변수를 추가합니다.

    표 4. 매개변수
    이름 유형 설명
    문자열 쿼리 매개변수의 이름입니다.
    문자열 쿼리 매개변수의 값입니다.
    표 5. 반환
    유형 설명
    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()

    요청이 서명될 때 포함된 자격 증명 값을 반환합니다.

    자격 증명 값을 사용하여 인증 알고리즘에 필요한 쿠키, 서명 또는 기타 값을 저장합니다. 예를 들어 REST 또는 SOAP 호출에 대한 일회성 토큰을 검색하고 저장하는 스크립트를 사용하여 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: 문자열. 헤더의 이름입니다.
    • value: 문자열. 헤더의 값입니다.
    // 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: 문자열. 쿼리 매개변수의 이름입니다.
    • value: 문자열. 쿼리 매개변수의 값입니다.
    // 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. 반환
    유형 설명
    문자열 요청 서명에 대한 메시지입니다. 요청 서명에 실패하면 다음 오류 메시지 중 하나를 반환합니다.
    • 자격 증명이 유효하지 않음: 요청에 서명하는 데 사용한 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 개체에 대한 자격 증명 값을 설정합니다.

    자격 증명 값을 사용하여 인증 알고리즘에 필요한 쿠키, 서명 또는 기타 값을 저장합니다. 예를 들어 REST 또는 SOAP 호출에 대한 일회성 토큰을 검색하고 저장하는 스크립트를 사용하여 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: signature를 쿼리 매개 변수로 적용합니다.
    • header: 요청 헤더에 서명을 적용합니다.
    • credential_value : 자격 증명 값에 서명을 적용합니다.
    표 21. 반환
    유형 설명
    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(문자열 상태)

    요청 서명의 상태를 설정합니다.

    표 22. 매개변수
    이름 유형 설명
    상태 문자열 요청 서명의 상태입니다.

    가능한 값:

    • success: 시스템이 요청에 성공적으로 서명했습니다.
    • fail: 시스템이 요청에 서명하지 못했습니다.
    • 건너뜀: 정보가 불완전하기 때문에 시스템에서 서명을 건너뛰었습니다.
    표 23. 반환
    유형 설명
    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());

    출력:

     Status is: FAIL

    HttpRequestAuthedData - setStatusMessage(문자열 statusMessage)

    요청 서명에 대한 상태 메시지를 설정합니다.

    표 24. 매개변수
    이름 유형 설명
    statusMessage 문자열 요청 서명 상태에 대해 설정할 메시지입니다.
    표 25. 반환
    유형 설명
    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());

    출력:

    Status message is: The request was successfully signed.