Internet Identity login flow should be redone

I feel as though all the clicking and warning screens take away from the otherwise magical first impression those new to it would be getting… some sort of landing page notification for the warnings would be better.

Also, I think it would be a nice touch if you could just press the login button on a site like DSCVR then tap your key or biometric sensor or whatever, then the rest would be automated in javascript [or would it be WebAssembly?] with a click-to-abort button over a short progress/countdown indicator in case you need to login to a different internet identity or something.

Maybe even go straight to the static infinity symbol and have just below it: logging in to user# … click here to abort or log in as a different user (obviously worded a little better)

9 Likes

Agreed! Could simplify to just one step.

2 Likes

I agree. It becomes tiring when you have to login several times daily and takes away from the otherwise smooth experience.

1 Like

If implemented correctly it would take away from the perceived time to load on the static infinity symbol screen as it would be doing two things at once.

(Giving user a chance to abort to do something different, and also actively loading)

The first thing I would have the abort screen to do would be to pop up up the user id input / registration page and maybe have the warning to create a seed phrase or link more devices just below it.

Not sure about having to press the “log in as other user” within a time frame. I feel that could add some frustration in cases where you for example have a small screen or laggy device and doesn’t manage to press the button in time. But I agree the user experience could be improved by removing the extra landing page. How about displaying a drop-down menu when pressing “Login” which shows your currently linked users, and also shows a button for adding another account. This would require 2 clicks to log in but still very smooth.

But maybe there is some security reason for sending the users to the II page before logging in.

2 Likes

Both of those concerns would be a non-issue if implemented well.

… actually, the login process for DSCVR and future apps should probably be an asynchronous call that happens mostly in the background without a complete page refresh (where use case permits)

The true minimum would require tapping a login button and then handling WebAuthentication. WebAuthentication can’t be triggered without a user interaction, based on browser implementation.

The benefit of using Internet Identity instead of WebAuthn directly in the page is that it supports logging in with multiple devices, which otherwise DSCVR and every other app would have to implement themselves

1 Like

Thanks for the reply, that makes sense…

Is it feasible for the Internet Identity login flow to be implemented as a standard javascript module that an app could include where the process could happen asynchronously on the same page?

Maybe the last screen with the redirect url could be removed by specifying it on the login screen.
Login then webauthn then automatic redirection

It would be possible to stay in-page by using an iframe, but you would still need to interact with the Internet Identity UI in that case. A more seamless login flow for embedded iframes consisting of just a button could be added, but that might require some additional consideration around security

1 Like

Trying to setup a development environment, would like to help if I can.

I get this on running ‘dfx start’ on the generated sample project.

thread 'replica-actor' panicked at 'called `Result::unwrap()` on an `Err` value: Cannot start the replica: Timeout', src/dfx/src/actors/replica.rs:297:17

stack backtrace:
0: 0x55c08f275a03 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h8e44e3bad104136e
1: 0x55c08f2cdd2d - core::fmt::write::he8cb6d64ed166147
2: 0x55c08f29e077 - std::io::Write::write_fmt::hf25ce96005919ce6
3: 0x55c08f28f340 - std::panicking::default_hook::{{closure}}::hf8bcda2c877e2dcc
4: 0x55c08f28f054 - std::panicking::default_hook::h0602fc6a3744f2c1
5: 0x55c08f28f9b7 - std::panicking::rust_panic_with_hook::h7b83b0fe7900eb7a
6: 0x55c08f28f5bb - rust_begin_unwind
7: 0x55c08f2cda11 - core::panicking::panic_fmt::h61e03e91a1a8868a
8: 0x55c08f2cdaa3 - core::result::unwrap_failed::hfb81d2c162de1956
9: 0x55c08dd6d5aa - std::sys_common::backtrace::__rust_begin_short_backtrace::h94de5a14059097af
10: 0x55c08df3ca65 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h4e69c9dcb6d30a26
11: 0x55c08f293c6a - std::sys::unix::thread::thread::new::thread_start::h2dd53bf76d714ab0
12: 0x7f4cd147d609 - start_thread
at /build/glibc-eX1tMB/glibc-2.31/nptl/pthread_create.c:477
13: 0x7f4cd15c4293 - __clone
14: 0x0 -

What dfx version are you on? Have we promoted 0.7.0 yet?

When I installed yesterday it installed 0.6.x

… I read on the forums that I should try 0.7.0 and installed it specifically, still same error though.

Do you know where the src/dfx/src/actors/replica.rs path is relative to?

Internet Computer Login is Broken.

Meet Plug: An Internet Computer Crypto Wallet & Identity Provider🔌 | by Plug | Plug | Jul, 2021 | Medium is interesting for this. Maybe @Chris ?