HttpRequestAuthedData - スコープ対象
HttpRequestAuthedData() API は、署名済み REST や SOAP 要求にアクセスして値を設定するメソッドを提供します。
- HttpRequestData:API 要求を構築します。
- AuthCredential:資格情報オブジェクトを作成するか、既存のオブジェクトを更新します。資格情報を使用して、RequestAuthAPI クラスで要求に署名します。
- RequestAuthAPI:要求に署名し、HttpRequestAuthedData オブジェクトを返します。
- HttpRequestAuthedData:署名された要求に関する情報を取得します。
- GlideHTTPRequest:署名された要求を送信します。
これらの API を使用する前に、要求に署名し、要求の認証に使用される認証情報に関連付ける 認証アルゴリズムを構成する 必要があります。
この API は、sn_auth 名前空間識別子を持つスコープ対象スクリプト内で使用します。 コンストラクタを使用してこのクラスをインスタンス化することも、RequestAuthAPI クラスの generateAuth() メソッドから HttpRequestAuthedData オブジェクトを返すこともできます。
HttpRequestAuthedData - HttpRequestAuthedData()
HttpRequestAuthedData オブジェクトをインスタンス化します。
コンストラクタを使用してこのクラスをインスタンス化することも、RequestAuthAPI クラスの generateAuth() メソッドから HttpRequestAuthedData オブジェクトを返すこともできます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
HttpRequestAuthedData - addHeader(文字列 key, 文字列 value)
ヘッダーを HttpRequestAuthedData オブジェクトに追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| key | 文字列 | HTTP ヘッダーの名前。 |
| value | 文字列 | HTTP ヘッダーの値。 |
| タイプ | 説明 |
|---|---|
| なし |
// 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(文字列 key, 文字列 value)
クエリーパラメーターを HttpRequestAuthedData オブジェクトに追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| key | 文字列 | クエリーパラメーターの名前。 |
| 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();
// Update the signed response
output.addQueryParameter('api_version', 'v2');
HttpRequestAuthedData - getCredentialValue()
要求が署名されたときに含まれていた資格情報の値を返します。
資格情報の値を使用して、認証アルゴリズムに必要な cookie、署名、またはその他の値を格納します。たとえば、REST または SOAP 呼び出しの 1 回限りのトークンを取得して保存するスクリプトを使用して、接続情報の取得 (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 オブジェクトの資格情報の値を設定します。
資格情報の値を使用して、認証アルゴリズムに必要な cookie、署名、またはその他の値を格納します。たとえば、REST または SOAP 呼び出しの 1 回限りのトークンを取得して保存するスクリプトを使用して、接続情報の取得 (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(文字列 directive)
署名をヘッダー内の署名された要求に適用するか、クエリーパラメーターとして適用するか、資格情報の値として適用するかを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| directive | 文字列 | 署名を、署名された要求のヘッダーに適用するか、クエリーパラメーターに適用するか、資格情報の値として適用するか。 次の値が含まれます。
|
| タイプ | 説明 |
|---|---|
| なし |
// 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(文字列 status)
要求署名のステータスを設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| status | 文字列 | 要求署名のステータス。 可能な値:
|
| タイプ | 説明 |
|---|---|
| なし |
// 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 | 文字列 | 要求署名のステータスに設定するメッセージ。 |
| タイプ | 説明 |
|---|---|
| なし |
// 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.