Configurar autenticação do MID Web Server baseada em chave

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 2 min. de leitura
  • Forneça segurança adicional à extensão do MID Web Server usando a autenticação baseada em chave. Gere um token de autenticação a ser enviado no cabeçalho de autorização das solicitações de entrada do cliente.

    Antes de Iniciar

    Nota:
    Este procedimento é somente para compatibilidade com versões anteriores a Xanadu. Para obter detalhes sobre o procedimento na versão Xanadu para configurar o MID Web Server, consulte Configurar a extensão MID Web Server.

    Função necessária: agent_admin

    Procedimento

    1. Usando um programa de script, crie um token criando uma cadeia de caracteres usando elementos definidos da solicitação HTTP/HTTPS (verbo HTTP, cabeçalho de tipo de conteúdo e caminho de solicitação, recebidos do cliente que acessa os endpoints de extensão MID Web Server ).
    2. Crie um HMAC (Código de autenticação de mensagem de hash) da cadeia de caracteres assinando a cadeia de caracteres gerada com a chave secreta gerada automaticamente que é exibida em Chave secreta.
      Esta chave é exclusiva por contexto.
    3. Forneça informações para enviar este token de autenticação no cabeçalho de autorização da solicitação.
      Item Valor
      Caminho para uma API de serviço web para enviar dados brutos Formato da URL:

      https://<MID Server IP address> :<port number> /api/mid/sa/metrics

      Use um número de porta que corresponda a um dos números de porta configurados na extensão do Servidor Web.

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

      Tipo de solicitação POST
      Formato de data
      yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
      Por exemplo: 2016-06-08T20:54:58.917Z
      Tipo de conteúdo aplicação/json

      Use os seguintes elementos de solicitação para gerar a cadeia de caracteres necessária: HTTP-Verb, Content-Type, Date e request path. Especifique esses elementos e coloque-os nesta ordem:

      • HTTP-Verbo + "\n" +
      • Tipo de conteúdo + "\n" +
      • Data + "\n" +
      • Caminho da solicitação

      Para este exemplo, a cadeia de caracteres da solicitação é:

      POST\naplicação/json\n2016-06-08T20:54:58.917Z\n/api/mid/sa/métricas

      Para o requisito de carimbo de data/hora, um carimbo de data/hora válido que usa cabeçalho de data HTTP é necessário para autenticar a solicitação. Certifique-se de que o carimbo de data/hora esteja dentro de 15 minutos do MID Server.

    Como gerar o HMAC da cadeia de caracteres que usa elementos definidos da solicitação HTTP/HTTPS, usando 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;
    }
    }