Partial Answer:
I've since learned that the preferred method for user verification is to:
- Send a wallet.near.org request for the user to add a function access key to their account.
- You'll then have the function access key available to your websites local storage
- You can then use that function access key to sign requests as the user for the specified function. You can also verify the key was added to their Near Name account which confirms access to their identity.
Unfortunately this method requires:
- The user to pay a small transaction fee
- The User to add an access key to their account
- The requester to specify a target contract for the function access key
Outstanding Question:
Is there a simple way to sign a transaction with the local storage access key held at wallet.near.org and return that result so that I can query the users keys & verify that an existing key signed the transaction.
Why:
- It's gasless - My new users have limited or 0 funds
- I don't want to train users to add unnecessary access keys to their accounts
- I don't need function access. I just need to securely verify their identity