RequestAuthAPI - スコープ指定
RequestAuthAPI は、REST 要求に署名を適用するメソッドを提供します。
次の順序でこれらの API を使用して、送信署名要求を生成します。
- HttpRequestData:API 要求を構築します。
- AuthCredential:資格情報オブジェクトを作成するか、既存のオブジェクトを更新します。資格情報を使用して、RequestAuthAPI クラスで要求に署名します。
- RequestAuthAPI:要求に署名し、HttpRequestAuthedData オブジェクトを返します。
- HttpRequestAuthedData:署名された要求に関する情報を取得します。
- GlideHTTPRequest:署名された要求を送信します。
これらの API を使用する前に、認証 アルゴリズムを構成し て要求に署名し、要求の認証に使用する認証情報に関連付ける必要があります。
この API は、sn_auth 名前空間識別子を持つスコープ対象スクリプト内で使用します。
RequestAuthAPI - RequestAuthAPI(オブジェクト data, オブジェクト credential)
REST 要求と資格情報を使用して RequestAuthAPI オブジェクトをインスタンス化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 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 オブジェクトを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 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()
要求の署名に使用された認証情報レコードを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 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 オブジェクトを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 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 がサードパーティのサービスに含まれている必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
// 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');
}