HttpRequestAuthedData - 범위 지정됨
HttpRequestAuthedData() API는 서명된 REST 또는 SOAP 요청의 값에 액세스하고 값을 설정하는 메서드를 제공합니다.
- HttpRequestData: API 요청을 빌드합니다.
- AuthCredential: 자격 증명 객체를 생성하거나 기존 자격 증명 객체를 업데이트합니다. 자격 증명을 사용하여 RequestAuthAPI 클래스를 통해 요청에 서명합니다.
- RequestAuthAPI: 요청에 서명하고 HttpRequestAuthedData 개체를 반환합니다.
- HttpRequestAuthedData: 서명된 요청에 대한 정보를 가져옵니다.
- GlideHTTPRequest: 서명된 요청을 보냅니다.
이러한 API를 사용하기 전에 요청에 서명하고 요청을 인증하는 데 사용되는 자격 증명과 연결하도록 인증 알고리즘을 구성해야 합니다.
sn_auth 네임스페이스 식별자와 함께 범위가 지정된 스크립트에서 이 API를 사용합니다. 생성자를 사용하여 이 클래스를 인스턴스화하거나 RequestAuthAPI 클래스의 generateAuth() 메서드에서 HttpRequestAuthedData 객체를 반환할 수 있습니다.
HttpRequestAuthedData - HttpRequestAuthedData()
HttpRequestAuthedData 개체를 인스턴스화합니다.
생성자를 사용하여 이 클래스를 인스턴스화하거나 RequestAuthAPI 클래스의 generateAuth() 메서드에서 HttpRequestAuthedData 객체를 반환할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 안 함 |
HttpRequestAuthedData - addHeader(문자열 키, 문자열 값)
HttpRequestAuthedData 객체에 헤더를 추가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 키 | 문자열 | HTTP 헤더의 이름입니다. |
| 값 | 문자열 | HTTP 헤더의 값입니다. |
| 유형 | 설명 |
|---|---|
| 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 객체에 쿼리 매개변수를 추가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 키 | 문자열 | 쿼리 매개변수의 이름입니다. |
| 값 | 문자열 | 쿼리 매개변수의 값입니다. |
| 유형 | 설명 |
|---|---|
| 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(연결 정보 가져오기) 단계를 생성합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 자격 증명 값의 텍스트입니다. |
이 예에서는 자격 증명 값의 검색을 보여줍니다.
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를 사용하여 서명을 쿼리 매개변수 또는 자격 증명 값으로 적용할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 서명이 헤더에 쿼리 매개변수 또는 자격 증명 값으로 적용되는지 여부입니다. 값은 다음과 같습니다.
|
// 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()
요청이 서명될 때 포함된 헤더를 포함하는 객체를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 객체 | 요청이 서명될 때 포함된 모든 헤더를 정의하는 키-값 쌍입니다. 각 키-값 쌍에는 다음 부분이 포함됩니다.
|
// 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()
요청이 서명될 때 포함된 쿼리 매개변수가 포함된 객체를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 객체 | 요청이 서명될 때 포함된 쿼리 매개변수를 정의하는 키-값 쌍입니다. 각 키-값 쌍에는 다음 부분이 포함됩니다.
|
// 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()
요청 서명의 상태를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 요청 서명의 상태입니다. 가능한 값:
|
// 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()
요청 서명에 대한 자세한 메시지를 반환합니다. 요청 서명이 실패하면 이 메서드는 오류 메시지를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 요청 서명에 대한 메시지입니다. 요청 서명에 실패하면 다음 오류 메시지 중 하나를 반환합니다.
|
// 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 단계에 워크플로우 스튜디오대한 자격 증명 값 데이터 정제를 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| credential_value | 문자열 | 자격 증명 값의 텍스트입니다. |
| 유형 | 설명 |
|---|---|
| 안 함 |
이 예시에서는 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 (문자열 지시문)
헤더의 서명된 요청에 서명을 쿼리 매개변수 또는 자격 증명 값으로 적용할지 여부를 정의합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 지시문 | 문자열 | 서명된 요청의 헤더, 쿼리 매개변수 또는 자격 증명 값에 서명을 적용할지 여부입니다. 값은 다음과 같습니다.
|
| 유형 | 설명 |
|---|---|
| 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(문자열 상태)
요청 서명 상태를 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 상태 | 문자열 | 요청 서명의 상태입니다. 가능한 값:
|
| 유형 | 설명 |
|---|---|
| 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)
요청 서명에 대한 상태 메시지를 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| statusMessage | 문자열 | 요청 서명 상태에 대해 설정할 메시지입니다. |
| 유형 | 설명 |
|---|---|
| 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.