Modo de acceso de seguridad avanzado

Marketo SDK expone métodos para establecer y quitar la firma de seguridad. También existe un método de utilidad para recuperar el ID del dispositivo. El ID del dispositivo debe pasarse junto con el correo electrónico, al iniciar sesión, al servidor del cliente para su uso en el cálculo de la firma de seguridad. La SDK debe mostrar el nuevo extremo de visita, que señala al algoritmo mencionado anteriormente, para recuperar los campos necesarios para crear una instancia del objeto de firma. La configuración de esta firma en SDK es un paso necesario si el modo de acceso de seguridad se ha habilitado en Marketo Mobile Admin.

Configuración del modo de acceso seguro

Esta configuración debe implementarse antes de habilitar el modo de acceso seguro en la página Administración de Marketo > Aplicaciones y dispositivos móviles. Los siguientes pasos describen el proceso necesario para completar el proceso de validación de seguridad:

El modo de acceso seguro requiere la implementación del algoritmo de firma en el lado del servidor del cliente que proporcionará un punto final para recuperar la clave de acceso, la firma calculada, la marca de tiempo de caducidad y el correo electrónico. Este algoritmo requiere la clave de acceso del usuario, el secreto de acceso, el correo electrónico, la marca de tiempo y el ID de dispositivo para realizar el cálculo. El cliente es responsable de configurar el punto de conexión, implementar el algoritmo para realizar cálculos de firma y mantener la marca de tiempo de caducidad fresca.

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

Marketo SDK expone nuevos métodos para establecer y quitar la firma de seguridad. También existe un método de utilidad para recuperar el ID del dispositivo. El ID del dispositivo debe pasarse junto con el correo electrónico, al iniciar sesión, al servidor del cliente para su uso en el cálculo de la firma de seguridad. La SDK debe mostrar el nuevo extremo de visita, que señala al algoritmo mencionado anteriormente, para recuperar los campos necesarios para crear una instancia del objeto de firma. La configuración de esta firma en SDK es un paso necesario si el modo de acceso de seguridad se ha habilitado en 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