¿Seguro contra qué?
Aunque en realidad no tiene que preocuparse por responder eso, como para cualquier posible problema, la respuesta de 16 bytes de @terry-chia será suficiente.
Si necesita defenderse contra una colisión accidental (a dos usuarios se les emite el mismo token), debe observar cuántos usuarios distintos podría tener y hacer un poco de matemáticas. Entonces, si sus tokens se usan para identificación (como un nombre de usuario) así como para autenticación, entonces debe preocuparse por este tipo de colisiones.
Aún así, supongo que no hay posibilidad de que su número de usuarios supere los billones de dólares, por lo que incluso si usa estos tokens para la identificación, 16 bytes serán suficientes.
Con aproximadamente 8 * 10 ^ 14 usuarios, tendrá aproximadamente 1 en mil millones, 10 ^ {- 9}, posibilidad de que haya al menos un par de usuarios que terminen con el mismo token. Si ese es un riesgo demasiado grande, entonces vaya con 20 bytes. Las matemáticas para esto se pueden encontrar en las descripciones del Birthday Problem