Konfigurieren Sie die schlüsselbasierte MID-Webserverauthentifizierung

  • Freigeben Version: Australia
  • Aktualisiert 12. März 2026
  • 2 Minuten Lesedauer
  • Bieten Sie Ihrer MID-Webservererweiterung zusätzliche Sicherheit, indem Sie die schlüsselbasierte Authentifizierung verwenden. Generieren Sie ein Authentifizierungstoken, das im Autorisierungsheader eingehender Clientanforderungen gesendet werden soll.

    Vorbereitungen

    Hinweis:
    Dieses Verfahren dient nur der Kompatibilität mit Releases vor Australien. Für Details zum Eingriff in Australien Release zum Konfigurieren von MID-Webserver, Siehe Konfigurieren Sie MID-Webserver Erweiterung.
    • Stellen Sie bereit, und starten Sie MID-Server.
    • Konfigurieren Sie ein MID-Webserver Erweiterung, und wählen Sie „Schlüsselbasiert“ als Authentifizierungstyp aus. Weitere Informationen finden Sie unter Konfigurieren Sie die MID-Webservererweiterung .

    Erforderliche Rolle: agent_admin

    Prozedur

    1. Erstellen Sie mithilfe eines Skriptprogramms ein Token, indem Sie eine Zeichenfolge mit definierten Elementen der HTTP/HTTPS-Anforderung erstellen (HTTP-Verb, Inhaltstyp-Header und Anforderungspfad, die vom Client empfangen werden, der auf zugreift MID-Webserver Erweiterungsendpunkte).
    2. Erstellen Sie einen HMAC (Hash-Nachrichtenauthentifizierungscode) der Zeichenfolge, indem Sie die generierte Zeichenfolge mit dem automatisch generierten geheimen Schlüssel signieren, der in angezeigt wird Geheimer Schlüssel .
      Dieser Schlüssel ist pro Kontext eindeutig.
    3. Geben Sie Informationen zum Senden dieses Authentifizierungstoken im Header der Anforderungsautorisierung an.
      Element Wert
      Pfad zu einer Webservice-API zum Senden von Rohdaten URL-Format:

      https://<MID Server-IP-Adresse>:<port number>/api/MID/sa/metrics

      Verwenden Sie eine Portnummer, die einer der in der Webservererweiterung eingerichteten Portnummern entspricht.

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

      Anforderungstyp POST
      Datumsformat
      yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
      Beispiel: 2016-06-08T20:54:58.917Z
      Inhaltstyp Anwendung/JSON

      Verwenden Sie die folgenden Anforderungselemente, um die erforderliche Zeichenfolge zu generieren: HTTP-Verb, Inhaltstyp, Datum und Anforderungspfad. Geben Sie diese Elemente an, und ordnen Sie sie in dieser Reihenfolge an:

      • HTTP-Verb + „\n“ +
      • Inhaltstyp + „\n“ +
      • Datum + „\n“ +
      • Anforderungspfad

      Für dieses Beispiel lautet die Anforderungszeichenfolge:

      POST\nApplication/JSON\n2016-06-08T20:54:58.917Z\n/api/MID/sa/metrics

      Für die Zeitstempelanforderung ist ein gültiger Zeitstempel erforderlich, der den HTTP-Datums-Header verwendet, um die Anforderung zu authentifizieren. Stellen Sie sicher, dass der Zeitstempel innerhalb von 15 Minuten vom MID-Server liegt.

    So generieren Sie den HMAC der Zeichenfolge, die definierte Elemente der HTTP/HTTPS-Anforderung verwendet, mit Java

    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;
    }
    }