Modo de Acesso de Segurança Avançada

O Marketo SDK expõe os métodos para definir e remover a assinatura de segurança. Também há um método de utilitário para recuperar a ID do dispositivo. A ID do dispositivo deve ser passada juntamente com o email, após o logon, para o servidor do cliente para uso no cálculo da assinatura de segurança. O SDK deve selecionar o novo endpoint de ocorrência, apontando para o algoritmo listado acima, para recuperar os campos necessários para instanciar o objeto de assinatura. Definir essa assinatura no SDK é uma etapa necessária se o Modo de acesso de segurança tiver sido ativado no Marketo Mobile Admin.

Configuração do Modo de Acesso Seguro

Esta configuração deve ser implementada antes que o modo de Acesso seguro seja ativado por meio da página Admin. do Marketo > Aplicativos e dispositivos móveis. As etapas a seguir descrevem o processo necessário para concluir o processo de validação de segurança:

O modo de acesso seguro exige a implementação do algoritmo de assinatura no lado do servidor do cliente, que fornecerá um terminal para recuperar a chave de acesso, a assinatura calculada, o carimbo de data e hora de expiração e o email. Esse algoritmo requer a chave de acesso do usuário, o segredo de acesso, o email, o carimbo de data e hora e a id do dispositivo para executar o cálculo. O cliente é responsável pela configuração do endpoint, implementação do algoritmo para executar cálculos de assinatura e também manter atualizado o carimbo de data e hora de expiração.

import argparse
import datetime
import hashlib
import hmac


ACCESS_KEY = 'Your Access Key'
ACCESS_SECRET = 'Your access secret'

# Key should not be unicode
def get_signing_key(timestamp):
    return 'MKTO' + ACCESS_SECRET + str(timestamp)

def get_string_to_sign(email, uuid):
    return email + uuid

def get_hmac(key, string_to_sign):
    return hmac.new(key, string_to_sign.encode('utf-8'), hashlib.sha256).hexdigest()

def get_epoch_plus_day():
    epoch = datetime.datetime.utcfromtimestamp(0)
    valid_until_dt = datetime.datetime.utcnow() + datetime.timedelta(days=1)
    return long((valid_until_dt - epoch).total_seconds())

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("-e", "--email", required=True, help="email address")
    parser.add_argument("-u", "--uuid", required=True, help="Device install id")
    parser.add_argument("-t", "--timestamp", type=int, help="Valid until timestamp")
    args = parser.parse_args()
    string_to_sign = get_string_to_sign(args.email, args.uuid)
    if not args.timestamp:
        valid_until = get_epoch_plus_day()
    else:
        valid_until = args.timestamp
    signing_key = get_signing_key(valid_until)
    hmac_string = get_hmac(signing_key, string_to_sign)
    print 'HMAC is ', hmac_string

O Marketo SDK expõe novos métodos para definir e remover a assinatura de segurança. Também há um método de utilitário para recuperar a ID do dispositivo. A ID do dispositivo deve ser passada juntamente com o email, após o logon, para o servidor do cliente para uso no cálculo da assinatura de segurança. O SDK deve selecionar o novo endpoint de ocorrência, apontando para o algoritmo listado acima, para recuperar os campos necessários para instanciar o objeto de assinatura. Definir essa assinatura no SDK é uma etapa necessária se o Modo de acesso de segurança tiver sido ativado no Marketo Mobile Admin.

iOS

Marketo * sharedInstance =[Marketo sharedInstance];

// set secure signature
MKTSecuritySignature *signature =
[[MKTSecuritySignature alloc] initWithAccessKey:<ACCESS_KEY> signature:<SIGNATURE_TOKEN> timestamp:<EXPIRY_TIMESTAMP> email:<EMAIL>];
[sharedInstance setSecureSignature:signature];

// remove signature
[sharedInstance removeSecureSignature];

// get device id
[sharedInstance getDeviceId];
let sharedInstance = Marketo.sharedInstance()

 // set secure signature
let signature = MKTSecuritySignature(accessKey: <ACCESS_KEY>, signature: <SIGNATURE_TOKEN> , timestamp: <EXPIRY_TIMESTAMP>, email: <EMAIL>)
sharedInstance.setSecureSignature(signature)

// remove signature
[sharedInstance removeSecureSignature];

// get device id
sharedInstance.getDeviceId()

Android

Marketo sdk = Marketo.getInstance(getApplicationContext());

// set signature
MarketoConfig.SecureMode secureMode = new MarketoConfig.SecureMode();
secureMode.setAccessKey(<ACCESS_KEY>);
secureMode.setEmail(<EMAIL_ADDRESS>);
secureMode.setSignature(<SIGNATURE_TOKEN>);
secureMode.setTimestamp(<EXPIRY_DATE>);
if (secureMode.isValid()) {
  sdk.setSecureSignature(secureMode);
}

// remove signature
sdk.removeSecureSignature();

// get device id
sdk.getDeviceId();
recommendation-more-help
bb269a6d-047a-4bf7-9acd-23ad9a63dc59