owncloud / android

:phone: The ownCloud Android App
GNU General Public License v2.0
3.85k stars 3.06k forks source link

[BUG]2FA problem: Does not take authorization in the first go #4508

Open hman2 opened 2 weeks ago

hman2 commented 2 weeks ago

Actual behaviour

-When you authorize using 2FA (here: via Free OTP) you have to perform the authentication procedure twice.

Expected behaviour

-The app should accept the authorization the first time it is presented

Steps to reproduce

  1. Start OwnCloud app and connect to the cloud
  2. You get redirected due to authorization expiration, so you enter your credentials in the Web browser that is opened for you, then you create the token for 2FA (here: via Free OTP) and enter it. In the browser the cloud opens up and also a popup comes that asks you "open in app?"
  3. Agree to opening in the app, OwnCloud app comes up again, but: complains about expiration once more, so go back to step 2 and repeat everything. This time the autorization gets accepted.

Can this problem be reproduced with the official owncloud server? (url: https://ocis.ocis.master.owncloud.works, user: einstein, password: relativity) Haven't tried so far.

Environment data

Android version: 10 (AOSP, Fairphone Open OS 23.02.0-rel.0 (latest version) Device model: Fairphone 2 Stock or customized system: AOSP, but officially supported the manufacturer of the phone (Fairphone). ownCloud app version: 4.4.1 (latest) - but this behaviour was also present on the two previous versions ownCloud server version: unknown (hosted by my employer).

Logs

Web server error log

Insert your webserver log here

ownCloud log (data/owncloud.log)

Insert your ownCloud log here
hman2 commented 2 weeks ago

Additional remark: This behaviour is only exhibited if the authorization gets refreshed. When you delete the account and set it up from scratch, the app will take the authorization in the first attempt!

jesmrec commented 2 weeks ago

So, you have 2FA with an external OTP. The process finishes, but, you see an "expiration" message on the bottom of the screen that prompts you to a second authentication.

Maybe this is related with https://github.com/owncloud/android/issues/4332

My guess is that the granted token is not correctly used in the first requests under a race condition

It'd help to know which kind of server and version are you using. If you type in your web browser the server URL following with /status.php, you will see some information that you can prompt to us.

For example: https://thisismyserver.com/status.php

Thanks a lot for reporting!

hman2 commented 2 weeks ago

{ "installed": true, "maintenance": false, "needsDbUpgrade": false, "version": "", "versionstring": "", "edition": "", "productname": "", "product": "" }

jesmrec commented 2 weeks ago

@hman2 are all those fields (product, productname...) empty or any problem with copy/paste?, these are the key fields :(

hman2 commented 2 weeks ago

Info from our company admins: Server version is 10.15. The output I quoted is what the browser (MS Edge via internal network connection) presented to me.

jesmrec commented 2 weeks ago

Ok, so it's an oC10, thanks. We'll review. Also, if you can attach logs (you'll find in settings -> logs), it could help to clarify.

hman2 commented 2 weeks ago

Hm, there is no settings -> logs. There is a protocol feature, is that what you mean? It's not under More or Advanced... Or are you talking about the backend? I don't have access, all I can do is ask our admins...

jesmrec commented 2 weeks ago

In the mobile app, by clicking on the top left icon (hamburger icon), the side menu is open. Then, select Settings, then Logging and Log Files . Please, mark the Log HTTP requests option for a better logging of the situation.