HMAC significa código de autenticação de mensagem baseado em hash. Essa autenticação é produto de uma função hash aplicada ao corpo de uma mensagem junto com uma chave secreta. Portanto, em vez de enviar os dados de autenticação por meio de uma solicitação de serviço Web, você envia algum identificador para a chave privada e um HMAC. Quando o servidor recebe a solicitação, ele procura a chave privada do usuário e a utiliza para criar um HMAC para a solicitação recebida. Se o HMAC enviado com a solicitação corresponder ao calculado pelo servidor, a solicitação será autenticada.
Como configurar o HMAC-SHA1 para minha comunidade?Os identificadores/tokens de segurança serão enviados para QuestionPro através dos parâmetros de URL da comunidade. A autenticação HMAC-SHA1 pode ser configurada para sua comunidade em Comunidade>> Autenticação de login Ao configurar a autenticação, você terá que inserir: 1. Chave: Uma chave de 36 caracteres usada para hash do tempo em segundos. Esta chave deve ter 8 caracteres. 2. Carimbo de data e hora: o intervalo de tempo durante o qual o URL da pesquisa será válido. O valor inserido aqui está em minutos. Consulte a captura de tela abaixo para saber onde fazer alterações:
Você precisará passar os seguintes campos de token de segurança por meio do URL:
Nome | Descrição/Valor | Obrigatório |
ID da pesquisa | ID da pesquisa | ✔ |
ts | Quando o token foi criado no horário UTC (segundos). | ✔ |
cerquilha | Hash HMAC-SHA1 dos segundos (UTC) | ✔ |
modo | O valor deste parâmetro é sempre hmacSha1 | ✔ |
public String getAuthURL(String surveyID, String hashKey){ long ms = getUTCMillis(); long seconds = (ms/1000); String hash = hmacSha1(String.valueOf(seconds),hashKey); String params = "surveyID="+surveyID+"&ts=" + seconds + "&hash=" + hash + "&mode=hmacSha1" return "https://www.questionpro.com/a/TakeSurveyAuth?"+params; }
Sample code:function getAuthURL($surveyID,$hashKey){ $seconds = time(); $hash = hash_hmac('sha1', $seconds, $hashKey); $params = "surveyID=".$surveyID. "&ts=" . $seconds . "&hash=" . $hash . "&mode=hmacSha1"; return "https://www.questionpro.com/a/TakeSurveyAuth?".$params; }