Configurer l'authentification de l'extension MID Web Server basée sur les clés

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 2 minutes de lecture
  • Ajoutez un niveau de sécurité supplémentaire à votre extension MID Web Server à l'aide de l'authentification basée sur les clés. Générez un jeton d'authentification à envoyer dans l'en-tête Autorisation des demandes client entrantes.

    Avant de commencer

    Remarque :
    suivez cette procédure uniquement à des fins de compatibilité avec les versions antérieures à Yokohama. Pour en savoir plus sur la procédure de configuration de l'extension Serveur Web MID dans la version Yokohama, consultez la rubrique Configurer l'extension Serveur Web MID.

    Rôle requis : agent_admin

    Procédure

    1. Utilisez un programme de script pour créer un jeton en construisant une chaîne à l'aide des éléments définis de la demande HTTP/HTTPS (verbe HTTP, en-tête de type de contenu et chemin de la demande, reçus du client qui accède aux points de terminaison de l'extension Serveur Web MID).
    2. Créez un code HMAC (code d'authentification du message de hachage) de la chaîne en signant la chaîne obtenue avec la clé secrète générée automatiquement qui s'affiche dans le champ Clé secrète.
      Cette clé est propre au contexte.
    3. Fournissez des informations pour envoyer ce jeton d'authentification dans l'en-tête d'autorisation de la demande.
      Élément Valeur
      Chemin d'accès à une API de service Web pour l'envoi de données brutes Format d'URL :

      https://<adresse IP du MID Server>:<numéro de port>/api/mid/sa/metrics

      Utilisez un numéro de port qui correspond à l'un des numéros de port configurés dans l'extension MID Web Server.

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

      Type de demande POST
      Format de date
      yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
      Par exemple : 2016-06-08T20:54:58.917Z
      Content-Type application/json

      Utilisez les éléments de demande suivants pour générer la chaîne requise : verbe HTTP, type de contenu, date et chemin d'accès de la demande. Spécifiez ces éléments et placez-les dans l'ordre suivant :

      • Verbe HTTP + "\n" +
      • Type de contenu + "\n" +
      • Date + "\n" +
      • Chemin d'accès de la demande

      Pour cet exemple, la chaîne de demande est la suivante :

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

      À des fins d'horodatage, un horodatage valide qui utilise l'en-tête de date HTTP est requis pour authentifier la demande. Assurez-vous que l'horodatage est défini dans les 15 minutes du MID Server.

    Comment générer le HMAC de la chaîne qui utilise des éléments définis de la requête HTTP/HTTPS, à l’aide de 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;
    }
    }