nextcloud / ios

📱 Nextcloud iOS App
https://itunes.apple.com/us/app/nextcloud/id1125420102
GNU General Public License v3.0
1.98k stars 883 forks source link

Nextcloud iOS App - External Storage - In-Session Credentials - SMB Share not showing up #500

Open KaiHelli opened 6 years ago

KaiHelli commented 6 years ago

Hey,

I'm attaching external SMB shares via the external storage app. Therefore I'm using in-session saved credentials, as it perfectly fit my needs. I'm using ActiveDirectory as LDAP backend. Everything works fine in the web sessions and the Windows Sync App. But the storage doesn't show up in the iOS App. Tried using the same share with saved credentials and the share showed up immediately. FYI: I had NextCloud Version 10 before and it worked perfectly with it.

I hope you can help me to get this working again.

Expected behaviour

SMB Share should automatically get connected in iOS App with InApp entered Nextcloud Credentials.

Actual behaviour

External Storage doesn't show up in iOS App. Share is connected fine in web session and Nextcloud Windows Sync.

Steps to reproduce

Creating an external storage SMB share with in-session saved credentials Try accessing it via iOS App.

iOS version

iOS 11.2.5

App version

2.20.1.00001

Server configuration

Operating system: FreeBSD 11.1

Web server: Apache 2.4

Database: MariaDB 102

PHP version: 7.2

Nextcloud version: (see Nextcloud admin page) 13.0.0 (Fresh Installation)

KaiHelli commented 6 years ago

Tried to investigate the issue on server side with xdebug.

In normal sessions (browser, Windows sync client), External Storage App calls SessionCredentials.php and gets the username, sessionId, token and password. It then decrypts the user password and uses the credentials for the SMB connection.

With the iOS app the same situation applies and it tries to get the token of this session. Therefore it builds the following SQL query in DefaultTokenMapper.php:

'SELECT 'id', 'uid', 'login_name', 'password', 'name', 'type', 'remember', 'token', 'last_activity', 'last_check', 'scope' FROM 'oc_authtoken' WHERE 'token' = ?'

This query does not return a match and throws an DoesNotExistException('token does not exist') and results in an InvalidTokenException in Store.php.

$this->logger->debug('could not get login credentials because the token is invalid', ['app' => 'core']);

For the same NextCloud Session in iOS getToken() returns tokens fine, except the call from SessionCredentials.php.

I don't have much experience with the Nextcloud code or tokens. Do you have an idea where this issue resides?

BigMackTech commented 6 years ago

I am experiencing the same issue. Have you gotten any answers.

Thanks, Mike

KaiHelli commented 6 years ago

Hey Mike, I have no answers yet, issue still persists. Changed my environment to "Log-In credentials, save in database", that works for me. Even it's not the desired one.

BigMackTech commented 6 years ago

iHell, that worked and will have to do for now. Thanks!

segdy commented 5 years ago

Is there any update on this bug?

csabto commented 5 years ago

Still happening on the latest stable configuration (15.0.6/2.23.3.4). Any update on this bug?

jwproduction commented 5 years ago

The problem still exists in Version 16.0.1.

Is there any update on this bug?

marinofaggiana commented 5 years ago

@jwproduction sorry but I don't have a bug for this in iOS client.

jwproduction commented 5 years ago

@marinofaggiana thanx for your fast reply.

the bug is only if you choose SMB External Storage with Global Credentials.

I changed every external storage to username und password. Now I see the storage in the IOS app.

For me this fine :-)

BigMackTech commented 5 years ago

I have tried all of them and still gives me access denied. But if I SMB from the server still connects fine. This is the first Nextcloud server I have setup on CentOS, other two I did on ubuntu with now issues. I am going to try that.

segdy commented 5 years ago

Still no changes for me, still unchaged after so long. Quite frustrating :(

BigMackTech commented 5 years ago

Okay I gave up on CentOS 7 and installed a Ubuntu Server 18.04 box and all is working now via web browser, but still can't get the external storage to show up on IOS, windows, and Android Apps/clients. I have three nextcloud servers on different versions. Version 15 with 2.3 windows client I can see and sync external storage. On version 16 and 2.5 windows client, I cannot see external storage to sync. All settings between the two appear to be the same.