actualmente genero un token para una aplicación móvil de la siguiente manera. Descifro el token para procesar la solicitud y evaluar si el usuario ha iniciado sesión. Estoy en la conexión TLS RSA 2048 bits. Me preguntaba si $ GLOBALS es seguro y si agregar un hmac_sha256 haría que mi token fuera más difícil de falsificar o no cambiaría mucho.
$GLOBALS['encryption_key'] = <<<'EOT'
MIGsAgEAAiEAwtvvzQzXiesVUPxXV7+jvUbmXfavBqxdakC1Tn+PpmcCAwEAAQIg
WtklzWkOWKv0zURJCI09riGVIPIzGx1XPmFVaAbOeBECEQDynUX9BuIv3k6IA1wm
IcSpAhEAzZwpEHQtbj3xpiWy34/sjwIRAJ2ltmmxBF6obI0S6djZTmkCEQDLpv5h
hsEs7Xv5lmOK3lJvAhEAxJzS4NEgH2fF7mfaLfIWWg==
EOT;
function new_auth_token($user) {
$token_data = [
'param1' => 'type',
'param2' => $user['p2'],
'param3' => $user['p3'],
'param4' => $user['p4'],
'param5' => $user['p5'],
'expedite' => (time() + (3600*24*180))
];
$json = json_encode($token_data);
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length(AES_256_CBC));
$ssl = openssl_encrypt($json, AES_256_CBC, $GLOBALS['encryption_key'], 0, $iv);
$token = base64_encode($ssl).'.'.base64_encode($iv);
return $token;
}