キーベースの MID Web サーバー認証の設定

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:4分
  • キーベースの認証を使用して、MID Web サーバー拡張のセキュリティを強化します。着信したクライアント要求の [認証] ヘッダーで送信する認証トークンを生成します。

    始める前に

    注:
    この手順は、オーストラリア より前のリリースとの互換性を保つためだけのものです。オーストラリア リリースで MID Web サーバー を設定する手順の詳細については、「MID Web サーバー 拡張の設定」を参照してください。
    • MID サーバー を展開して起動します。
    • MID Web サーバー 拡張を設定し、認証タイプとして [キーベース] を選択します。詳細については、「MID Web サーバー拡張の設定」を参照してください。

    必要なロール:agent_admin

    手順

    1. スクリプトプログラムを使用して、HTTP/HTTPS 要求の定義済み要素 (MID Web サーバー 拡張エンドポイントにアクセスするクライアントから受信した HTTP 動詞、コンテンツタイプヘッダー、および要求パス) を使用して文字列をビルドし、トークンを作成します。
    2. [秘密キー] に表示される自動生成された秘密キーを使用して、生成された文字列に署名することによって、HMAC (ハッシュメッセージ認証コード) 文字列を作成します。
      このキーはコンテキストごとに一意です。
    3. 要求の [認証] ヘッダーに、この認証トークンを送信する際の情報を入力します。
      アイテム
      生データ送信用の Web サービス API へのパス URL 形式:

      https://<MID サーバー IP アドレス>:<ポート番号>/api/mid/sa/metrics

      Web サーバー拡張で設定 されているポート番号のいずれかと一致するポート番号を使用してください。

      例:http://10.10.10.10:8097/api/mid/sa/metrics

      要求タイプ POST
      日付形式
      yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
      例:2016-06-08T20:54:58.917Z
      Content-Type application/json

      必要な文字列を生成するには、HTTP 動詞、コンテンツタイプ、日付、および要求パスという要求要素を使用します。これらの要素を指定し、次の順に配置します。

      • HTTP 動詞 + "\n" +
      • コンテンツタイプ + "\n" +
      • 日付 + "\n" +
      • 要求パス

      この例では、要求文字列は次のとおりです。

      POST\napplication/json\n2016-06-08T20:54:58.917Z\n/api/mid/sa/metrics

      タイムスタンプ要件の場合は、要求を認証するために、HTTP 日付ヘッダーを使用する有効なタイムスタンプが必要です。タイムスタンプが MID サーバーの 15 分以内であることを確認します。

    Java を使用して HTTP/HTTPS 要求の定義済み要素を使用する文字列の HMAC を生成する方法

    package sample;
    import com.glide.util;
    import java.security.SignatureException;
    
    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;
    
    public class AuthUtil {
    	
    private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
    
    /***
     * Generates base64-encode the HMAC(Hash Message Authentication Code) of input data
     * 
     * @param data
     * @param key
     * @return
     * @throws java.security.SignatureException
     */
    public static String signData(String data, String key) throws java.security.SignatureException {
    	String result;
    	try {
    		// get an hmac_sha1 key from the raw key bytes
    		SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
    
    		// create hmac_sha1 Mac instance and initialize with the signing key
    		Mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
    		mac.init(signingKey);
    
    		// compute the hmac on input data bytes
    		byte[] rawHmac = mac.doFinal(data.getBytes("UTF-8"));
    
    		// base64-encode the hmac
    		result = Base64.encode(rawHmac);
    
    	} catch (Exception e) {
    		throw new SignatureException("Failed to generate HMAC : " + e.getMessage());
    	}
    	return result;
    }
    }