Thanks Kyle -
I did research the Token plugin - the form xml that's injected into the User profile has a field named "token" with an element named "algo" that's set to 'sha256'
The file <site>/plugins/user/token/src/Extension/Token.php contains the token generation code
From what I see, the token is displayed as follows:
$rawToken = base64_decode($tokenSeed);
$tokenHash = hash_hmac($algorithm, $rawToken, $siteSecret);
$message = base64_encode("$algorithm:$userId:$tokenHash");
$tokenSeed is stored in the $__users_profile table
$algorithm is set from the algo field element, e.g. "sha256"
It would be an interesting exercize to write a webservice plugin that recreates the token.
In the meantime, I'll generate my own app-specific token and use the ID/password web authentication method
Thanks,
Fred