You can create a new user address and assign an alias. This can be done by deriving the private, public keys and address from a random mnemonic seed generated using a word list. I am explaining based on the reference wallet implementation.
I think we can use any libraries that generate deterministic keys & mnemonics. In openchain reference implementation bitcore library (https://bitcore.io/api/lib/hd-keys) is used.
To generate mnemonic
var generatedMnemonic = new Mnemonic();
To make private & public key from mnemonics
var makeKey = generatedMnemonic.toHDPrivateKey()
var hdPrivateKey = new bitcore.HDPrivateKey(makeKey);
hdPrivateKey.network = bitcore.Networks.get("openchain");
derivedKey = hdPrivateKey.derive(44, true).derive(64, true).derive(0, true).derive(0).derive(0);
To the wallet address address is given by
"/p2pkh/"+ derivedKey.privateKey.toAddress().toString() + "/"
The mnemonic seed which is to be stored by the user is
Documentation for closed loops gives some ideas for the on-boarding process.
You can create a wallet and add an alias to the user and change ledger rules (https://docs.openchain.org/en/latest/ledger-rules/general.html) for the user.