A method of authentication, comprising: at a web server, sending a login web page to a first device associated with a user, wherein the login web page includes a scannable code comprising an envelope ID and a login challenge, wherein the envelope ID is associated with a first envelope of data generated by the web server and comprising a session ID, wherein the first envelope of data is stored by an identity manager, wherein the envelope ID is generated by the identity manager at a request of the web server and provided to the web server; receiving a confirmation login request responding to the login challenge from a second device associated with the user, wherein the second device requests the first envelope of data from the identity manager using the envelope ID, wherein the confirmation login request includes a second envelope of data comprising the session ID, a user ID, and a seal of the user ID registering the user ID, wherein the seal comprises a transaction identifier that can be used to access a signed hash value in a blockchain; verifying the confirmation login request to the login challenge using the session ID from the confirmation login request; verifying the user ID based on the seal of the user ID, by: extracting a transaction number from the seal of the user ID; accessing transaction data from a blockchain using the transaction number, wherein the transaction data comprises a public key of the user and a first signature of a first hash of the user ID, wherein the signature is signed by a private key of the user; generating a second hash of the user ID by hashing the user ID from the second envelope of data; and verifying the user ID by means of a verification process using the second hash of the user ID, the public key of the user and the signed hash value in the blockchain; and authorizing user login upon successful verification of the login challenge and user ID; and establishing a communication session having the session ID between the web server and the first device. at a web server, sending a login web page to a first device associated with a user, wherein the login web page includes a scannable code comprising an envelope ID and a login challenge, wherein the envelope ID is associated with a first envelope of data generated by the web server and comprising a session ID, wherein the first envelope of data is stored by an identity manager, wherein the envelope ID is generated by the identity manager at a request of the web server and provided to the web server; receiving a confirmation login request responding to the login challenge from a second device associated with the user, wherein the second device requests the first envelope of data from the identity manager using the envelope ID, wherein the confirmation login request includes a second envelope of data comprising the session ID, a user ID, and a seal of the user ID registering the user ID, wherein the seal comprises a transaction identifier that can be used to access a signed hash value in a blockchain; verifying the confirmation login request to the login challenge using the session ID from the confirmation login request; verifying the user ID based on the seal of the user ID, by: extracting a transaction number from the seal of the user ID; accessing transaction data from a blockchain using the transaction number, wherein the transaction data comprises a public key of the user and a first signature of a first hash of the user ID, wherein the signature is signed by a private key of the user; generating a second hash of the user ID by hashing the user ID from the second envelope of data; and verifying the user ID by means of a verification process using the second hash of the user ID, the public key of the user and the signed hash value in the blockchain; and extracting a transaction number from the seal of the user ID; accessing transaction data from a blockchain using the transaction number, wherein the transaction data comprises a public key of the user and a first signature of a first hash of the user ID, wherein the signature is signed by a private key of the user; generating a second hash of the user ID by hashing the user ID from the second envelope of data; and verifying the user ID by means of a verification process using the second hash of the user ID, the public key of the user and the signed hash value in the blockchain; and authorizing user login upon successful verification of the login challenge and user ID; and establishing a communication session having the session ID between the web server and the first device.