This feel very "centralized", DFINITY is the only holder of the "truth" that is used to authenticate a user. I would suggest you take a look at the Decentralized Identifiers standards that are currently being established at the W3C (you can start here: https://www.w3.org/TR/did-core/).
I think it will save you from "re-inventing the wheel".