Non-authentication error in _fetchTokenForUser

Hello everyone,

I want to set up my sync server. I’ve tried it for many hours and have reached the point now where the internet does not help any further.

The problem seems to be during authentification.

Here is my FireFox error log file:

1557065031868	Sync.LogManager	DEBUG	Flushing file log
1557065031868	FirefoxAccounts	DEBUG	FxAccountsProfileClient: Requested profile
1557065031868	FirefoxAccounts	DEBUG	getOAuthToken enter
1557065031870	FirefoxAccounts	TRACE	getCachedToken returning cached token
1557065031870	FirefoxAccounts	DEBUG	getOAuthToken returning a cached token
1557065031870	Services.Common.RESTRequest	DEBUG	GET request to https://profile.accounts.firefox.com/v1/profile
1557065031870	Services.Common.RESTRequest	TRACE	HTTP Header authorization: ***** (suppressed)
1557065031870	Services.Common.RESTRequest	TRACE	HTTP Header accept: application/json
1557065031870	Services.Common.RESTRequest	TRACE	HTTP Header if-none-match: "194fc23c7410ff004616a5649eeebd8c56279217-gzip"
1557065031878	Sync.LogManager	DEBUG	Log cleanup threshold time: 1556201031878
1557065031908	Sync.LogManager	DEBUG	Done deleting files.
1557065032519	Services.Common.RESTRequest	TRACE	onStartRequest: GET https://profile.accounts.firefox.com/v1/profile
1557065032520	Services.Common.RESTRequest	TRACE	Channel for GET https://profile.accounts.firefox.com/v1/profile returned status code 0
1557065032520	Services.Common.RESTRequest	DEBUG	GET https://profile.accounts.firefox.com/v1/profile 304
1557065144861	FirefoxAccounts	INFO	Consuming missed commands.
1557065144861	Sync.Service	DEBUG	User-Agent: Firefox/66.0.3 (Linux x86_64) FxSync/1.68.0.20190410203753.desktop
1557065144861	Sync.Service	INFO	Starting sync at 2019-05-05 16:05:44 in browser session yDJFrG13gXJo
1557065144861	Sync.Service	DEBUG	In sync: should login.
1557065144863	Sync.Service	INFO	User logged in successfully - verifying login.
1557065144865	Sync.BrowserIDManager	DEBUG	unlockAndVerifyAuthState already has (or can fetch) sync keys
1557065144865	Sync.Status	DEBUG	Status.login: error.login.reason.network => success.status_ok
1557065144865	Sync.Status	DEBUG	Status.service: error.login.failed => error.login.failed
1557065144865	Sync.Service	DEBUG	Fetching unlocked auth state returned success.status_ok
1557065144866	Sync.BrowserIDManager	INFO	Getting keys
1557065144866	Sync.BrowserIDManager	INFO	Getting an assertion from: https://ffsync.askarus.de:5000/token/1.0/sync/1.5
1557065144866	FirefoxAccounts	DEBUG	enter getAssertion()
1557065144866	FirefoxAccounts	DEBUG	getKeypairAndCertificate: already have keyPair and certificate
1557065144867	FirefoxAccounts	DEBUG	getAssertionFromCert
1557065144867	Services.Common.RESTRequest	TRACE	local time, offset: 1557065144867, -261
1557065144867	FirefoxAccounts	DEBUG	getAssertionFromCert returning signed: true
1557065144868	Sync.BrowserIDManager	DEBUG	Getting a token
1557065144868	Services.Common.TokenServerClient	DEBUG	Beginning BID assertion exchange: https://ffsync.askarus.de:5000/token/1.0/sync/1.5
1557065144868	Services.Common.RESTRequest	DEBUG	GET request to https://ffsync.askarus.de:5000/token/1.0/sync/1.5
1557065144868	Services.Common.RESTRequest	TRACE	HTTP Header accept: application/json
1557065144868	Services.Common.RESTRequest	TRACE	HTTP Header authorization: ***** (suppressed)
1557065144868	Services.Common.RESTRequest	TRACE	HTTP Header x-client-state: ***** (suppressed)
1557065144872	Services.Common.RESTRequest	DEBUG	GET request to https://api.accounts.firefox.com/v1/account/device/commands?index=0
1557065144872	Services.Common.RESTRequest	TRACE	HTTP Header authorization: ***** (suppressed)
1557065144872	Services.Common.RESTRequest	TRACE	HTTP Header content-type: text/plain
1557065144872	Services.Common.RESTRequest	TRACE	HTTP Header accept-language: en-US, en
1557065145530	Services.Common.RESTRequest	TRACE	onStartRequest: GET https://api.accounts.firefox.com/v1/account/device/commands?index=0
1557065145531	Services.Common.RESTRequest	TRACE	Channel for GET https://api.accounts.firefox.com/v1/account/device/commands?index=0 returned status code 0
1557065145531	Services.Common.RESTRequest	DEBUG	GET https://api.accounts.firefox.com/v1/account/device/commands?index=0 200
1557065145531	Hawk	DEBUG	(Response) /account/device/commands?index=0: code: 200 - Status text: OK
1557065145531	Services.Common.RESTResponse	TRACE	Processing response headers.
1557065145531	Hawk	DEBUG	Clock offset vs https://api.accounts.firefox.com/v1: -531
1557065145532	FirefoxAccounts	DEBUG	_updateAccountData with items: ["device"]
1557065145532	FirefoxAccounts	DEBUG	writing plain storage: ["email","sessionToken","uid","verified","device","oauthTokens","profileCache"]
1557065145532	FirefoxAccounts	TRACE	starting write of json user data: ["email","sessionToken","uid","verified","device","oauthTokens","profileCache"]
1557065145534	FirefoxAccounts	TRACE	finished write of json user data - took: 2
1557065145535	FirefoxAccounts	DEBUG	writing secure storage: ["kSync","kXCS","kExtSync","kExtKbHash"]
1557065145535	FirefoxAccounts	TRACE	starting write of user data to the login manager
1557065145541	FirefoxAccounts	TRACE	finished write of user data to the login manager
1557065175505	Services.Common.RESTRequest	TRACE	onStartRequest: GET https://ffsync.askarus.de:5000/token/1.0/sync/1.5
1557065175505	Services.Common.RESTRequest	TRACE	Channel for GET https://ffsync.askarus.de:5000/token/1.0/sync/1.5 returned status code 2152398919
1557065175506	Services.Common.RESTRequest	DEBUG	GET https://ffsync.askarus.de:5000/token/1.0/sync/1.5 failed: 2152398919 - NS_ERROR_NET_INTERRUPT
1557065175506	Services.Common.RESTRequest	TRACE	GET body: 
1557065175506	Sync.BrowserIDManager	ERROR	Non-authentication error in _fetchTokenForUser: TokenServerClientNetworkError({"error":{}})(resource://services-common/tokenserverclient.js:36:36) JS Stack trace: TokenServerClientNetworkError@tokenserverclient.js:59:16
getTokenFromBrowserIDAssertion@tokenserverclient.js:245:13
1557065175507	Sync.Status	DEBUG	Status.login: success.status_ok => error.login.reason.network
1557065175507	Sync.Status	DEBUG	Status.service: error.login.failed => error.login.failed
1557065175507	Sync.BrowserIDManager	INFO	Failed to fetch the cluster URL: TokenServerClientNetworkError({"error":{}})(resource://services-common/tokenserverclient.js:36:36) JS Stack trace: TokenServerClientNetworkError@tokenserverclient.js:59:16
getTokenFromBrowserIDAssertion@tokenserverclient.js:245:13
1557065175508	Sync.Service	DEBUG	verifyLogin failed: TokenServerClientNetworkError({"error":{}})(resource://services-common/tokenserverclient.js:36:36) JS Stack trace: TokenServerClientNetworkError@tokenserverclient.js:59:16
getTokenFromBrowserIDAssertion@tokenserverclient.js:245:13
1557065175508	Sync.Status	DEBUG	Status.login: error.login.reason.network => error.login.reason.network
1557065175508	Sync.Status	DEBUG	Status.service: error.login.failed => error.login.failed
1557065175508	Sync.ErrorHandler	ERROR	Sync encountered a login error
1557065175509	Sync.SyncScheduler	DEBUG	Clearing sync triggers and the global score.
1557065175510	Sync.SyncScheduler	DEBUG	Next sync in 3600000 ms. (why=schedule)
1557065175513	Sync.Service	DEBUG	Exception calling WrappedLock: Error: Login failed: error.login.reason.network(resource://services-sync/service.js:872:15) JS Stack trace: onNotify@service.js:872:15
1557065175514	Sync.Service	DEBUG	Not syncing: login returned false.

That do the following lines mean? Are they ok, or do they indicate an error?

|1557065144865|Sync.Status|DEBUG|Status.login: error.login.reason.network => success.status_ok|
|---|---|---|---|
|1557065144865|Sync.Status|DEBUG|Status.service: error.login.failed => error.login.failed|

And I don’t know what to do to repair the ERROR that occurs later.

Do you have any idea what I shall try next?

Thanks a lot in advance :slight_smile:

This line from the log:

1557065175506	Services.Common.RESTRequest	DEBUG	GET https://ffsync.askarus.de:5000/token/1.0/sync/1.5 failed: 2152398919 - NS_ERROR_NET_INTERRUPT

Suggests that may have been some sort of network error when Firefox tried to contact your custom sync server. This might indicate a connectivity issue or perhaps a problem with the TLS certificate on your server. Can you confirm whether loading https://ffsync.askarus.de:5000/ in the browser works successfully?

Thanks a lot for your answer.
Indeed I had a wrong entry in the apache virtual host.
However that did not solve the issue.

You are right, https://ffsync.askarus.de:5000 will fail during the TLS handshake.
Without specifying port 5000 it says “it works”.
However, port 5000 is a bad configuration anyways. I removed it from identity.sync.tokenserver.uri. It’s now “https://ffsync.askarus.de/token/1.0/sync/1.5

Everything should work via a virtual host. Wee the apache configuration and syncserver.ini below.

<VirtualHost *:80>
        ServerName ffsync.askarus.de
        Redirect / https://ffsync.askarus.de
</VirtualHost>

	
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName ffsync.askarus.de
DocumentRoot /opt/syncserver
 
        SSLEngine on
        SSLCertificateFile "/etc/letsencrypt/live/ffsync.askarus.de/cert.pem"
        SSLCertificateKeyFile "/etc/letsencrypt/live/ffsync.askarus.de/privkey.pem"
        SSLCertificateChainFile "/etc/letsencrypt/live/ffsync.askarus.de/chain.pem"

 
        WSGIProcessGroup sync
        WSGIDaemonProcess sync user=www-data group=www-data processes=2 threads=25 python-path=/opt/syncserver/local/lib/python2.7/site-packages/
        WSGIPassAuthorization On
        WSGIScriptAlias / /opt/syncserver/syncserver.wsgi
         

        CustomLog /var/log/apache2/access_ffsync.askarus.de.log combined
        ErrorLog /var/log/apache2/error_ffsync.askarus.de.log
        LogLevel warn
<Directory /opt/syncserver>
        Require all granted
        Options -Indexes
</Directory>
                        Include /etc/letsencrypt/options-ssl-apache.conf

</VirtualHost>
</IfModule>

syncserver.ini

[server:main]
use = egg:gunicorn
host = 0.0.0.0
port = 5000
workers = 1
timeout = 30

[app:main]
use = egg:syncserver

[syncserver]
# This must be edited to point to the public URL of your server,
# i.e. the URL as seen by Firefox.
public_url = https://ffsync.askarus.de

# By default, syncserver will accept identity assertions issued by
# any BrowserID issuer.  The line below restricts it to accept assertions
# from just the production Firefox Account servers.  If you are hosting
# your own account server, put its public URL here instead.
identity_provider = https://accounts.firefox.com/

# This defines the database in which to store all server data.
sqluri = sqlite:////opt/syncserver/syncserver.db

Now when pressing the sync button on FireFox my development Linux computer does not show any error log any more.
The other computer (windows) does give the following error:
(Both have the same identity.sync.tokenserver.uri set)

ü1557124392389	Sync.Service	INFO	Loading Weave 1.68.0
1557124392392	Sync.Engine.Clients	DEBUG	Engine constructed
1557124392393	Sync.Engine.Clients	DEBUG	Resetting clients last sync time
1557124392394	Sync.Service	DEBUG	User-Agent: Firefox/66.0.3 (Windows NT 10.0; Win64; x64) FxSync/1.68.0.20190409155332.desktop
1557124392400	Sync.Engine.Addons	DEBUG	Engine constructed
1557124392418	Services.Common.RESTRequest	TRACE	local time, offset: 1557124392418, 0
1557124392420	Sync.Engine.Addons	DEBUG	SyncEngine initialized: addons
1557124392421	Services.Common.RESTRequest	DEBUG	GET request to https://api.accounts.firefox.com/v1/account/device/commands?index=0
1557124392422	Services.Common.RESTRequest	TRACE	HTTP Header authorization: ***** (suppressed)
1557124392422	Services.Common.RESTRequest	TRACE	HTTP Header content-type: text/plain
1557124392422	Services.Common.RESTRequest	TRACE	HTTP Header accept-language: de, en-US, en
1557124392427	Sync.Engine.Forms	DEBUG	Engine constructed
1557124392428	Sync.Engine.Forms	DEBUG	SyncEngine initialized: forms
1557124392432	Sync.Engine.History	DEBUG	Engine constructed
1557124392438	Sync.Engine.History	DEBUG	SyncEngine initialized: history
1557124392440	Sync.Engine.Passwords	DEBUG	Engine constructed
1557124392442	Sync.Engine.Passwords	DEBUG	SyncEngine initialized: passwords
1557124392446	Sync.Engine.Prefs	DEBUG	Engine constructed
1557124392448	Sync.Engine.Prefs	DEBUG	SyncEngine initialized: prefs
1557124392453	Sync.Engine.Tabs	DEBUG	Engine constructed
1557124392472	Sync.Engine.Tabs	DEBUG	SyncEngine initialized: tabs
1557124392472	Sync.Engine.Tabs	DEBUG	Resetting tabs last sync time
1557124392476	Sync.Engine.Extension-Storage	DEBUG	Engine constructed
1557124392478	Sync.Engine.Extension-Storage	DEBUG	SyncEngine initialized: extension-storage
1557124392483	Sync.Engine.Bookmarks	DEBUG	Engine constructed
1557124392486	Sync.Engine.Bookmarks	DEBUG	SyncEngine initialized: bookmarks
1557124392486	Sync.Service	INFO	Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
1557124392489	Sync.AddonsReconciler	INFO	Registering as Add-on Manager listener.
1557124392489	Sync.AddonsReconciler	DEBUG	Adding change listener.
1557124392489	Sync.Engine.History.Tracker	INFO	Adding Places observer.
1557124392491	Sync.Service	INFO	Starting sync at 2019-05-06 08:33:12 in browser session GaD5CdBCbuGu
1557124392491	Sync.Service	DEBUG	In sync: should login.
1557124392491	Sync.Service	INFO	User logged in successfully - verifying login.
1557124392492	Sync.BrowserIDManager	DEBUG	unlockAndVerifyAuthState already has (or can fetch) sync keys
1557124392492	Sync.Status	DEBUG	Status.login: success.login => success.status_ok
1557124392492	Sync.Status	DEBUG	Status.service: success.status_ok => error.login.failed
1557124392492	Sync.Service	DEBUG	Fetching unlocked auth state returned success.status_ok
1557124392493	Sync.BrowserIDManager	INFO	Getting keys
1557124392494	Sync.BrowserIDManager	INFO	Getting an assertion from: https://ffsync.askarus.de/1.0/sync/1.5
1557124392494	FirefoxAccounts	DEBUG	enter getAssertion()
1557124392498	Sync.Status	DEBUG	Status.service: error.login.failed => success.status_ok
1557124392500	FirefoxAccounts	TRACE	not checking freshness of profile as it remains recent
1557124392507	FirefoxAccounts	DEBUG	got keyPair
1557124392507	FirefoxAccounts	DEBUG	getCertificateSigned: true true
1557124392508	Services.Common.RESTRequest	TRACE	local time, offset: 1557124392508, 0
1557124392510	Services.Common.RESTRequest	DEBUG	POST request to https://api.accounts.firefox.com/v1/certificate/sign
1557124392510	Services.Common.RESTRequest	TRACE	HTTP Header authorization: ***** (suppressed)
1557124392510	Services.Common.RESTRequest	TRACE	HTTP Header content-type: application/json
1557124392510	Services.Common.RESTRequest	TRACE	HTTP Header accept-language: de, en-US, en
1557124392510	Services.Common.RESTRequest	DEBUG	POST Length: 888
1557124392510	Services.Common.RESTRequest	TRACE	POST Body: {"publicKey":{"algorithm":"DS","y":"99AA57316056C3C9157342401301391D4D2C4A150101891982B76BA31E7C770EFFE9B8486A0920F6691E03D4D85AC8564E3A078B7ADC797033444F23D47E51E6169181269B331F5641B12CFCCE4EDB08602B7F60E103F1247DDD104D0FBDDACC9E55DDD0796A39FDE1DAF8BE6AD8A518D30E9F916210FDE22D85733296B540A1","p":"FF600483DB6ABFC5B45EAB78594B3533D550D9F1BF2A992A7A8DAA6DC34F8045AD4E6E0C429D334EEEAAEFD7E23D4810BE00E4CC1492CBA325BA81FF2D5A5B305A8D17EB3BF4A06A349D392E00D329744A5179380344E82A18C47933438F891E22AEEF812D69C8F75E326CB70EA000C3F776DFDBD604638C2EF717FC26D02E17","q":"E21E04F911D1ED7991008ECAAB3BF775984309C3","g":"C52A4A0FF3B7E61FDF1867CE84138369A6154F4AFA92966E3C827E25CFA6CF508B90E5DE419E1337E07A2E9E2A3CD5DEA704D175F8EBF6AF397D69E110B96AFB17C7A03259329E4829B0D03BBC7896B15B4ADE53E130858CC34D96269AA89041F409136C7242A38895C9D5BCCAD4F389AF1D7A4BD1398BD072DFFA896233397A"},"duration":21600000}
1557124393207	Services.Common.RESTRequest	TRACE	onStartRequest: GET https://api.accounts.firefox.com/v1/account/device/commands?index=0
1557124393207	Services.Common.RESTRequest	TRACE	Channel for GET https://api.accounts.firefox.com/v1/account/device/commands?index=0 returned status code 0
1557124393207	Services.Common.RESTRequest	DEBUG	GET https://api.accounts.firefox.com/v1/account/device/commands?index=0 200
1557124393208	Hawk	DEBUG	(Response) /account/device/commands?index=0: code: 200 - Status text: OK
1557124393208	Services.Common.RESTResponse	TRACE	Processing response headers.
1557124393208	Hawk	DEBUG	Clock offset vs https://api.accounts.firefox.com/v1: -3208
1557124393209	FirefoxAccounts	DEBUG	_updateAccountData with items: ["device"]
1557124393209	FirefoxAccounts	DEBUG	writing plain storage: ["email","sessionToken","uid","verified","oauthTokens","device","profileCache"]
1557124393209	FirefoxAccounts	TRACE	starting write of json user data: ["email","sessionToken","uid","verified","oauthTokens","device","profileCache"]
1557124393211	Services.Common.RESTRequest	TRACE	onStartRequest: POST https://api.accounts.firefox.com/v1/certificate/sign
1557124393212	Services.Common.RESTRequest	TRACE	Channel for POST https://api.accounts.firefox.com/v1/certificate/sign returned status code 0
1557124393212	Services.Common.RESTRequest	DEBUG	POST https://api.accounts.firefox.com/v1/certificate/sign 200
1557124393212	Hawk	DEBUG	(Response) /certificate/sign: code: 200 - Status text: OK
1557124393212	Services.Common.RESTResponse	TRACE	Processing response headers.
1557124393212	Hawk	DEBUG	Clock offset vs https://api.accounts.firefox.com/v1: -3212
1557124393212	FirefoxAccounts	DEBUG	getCertificate got a new one: true
1557124393212	FirefoxAccounts	DEBUG	_updateAccountData with items: ["keyPair","cert"]
1557124393213	FirefoxAccounts	DEBUG	getAssertionFromCert
1557124393215	FirefoxAccounts	DEBUG	getAssertionFromCert returning signed: true
1557124393215	Sync.BrowserIDManager	DEBUG	Getting a token
1557124393216	Services.Common.TokenServerClient	DEBUG	Beginning BID assertion exchange: https://ffsync.askarus.de/1.0/sync/1.5
1557124393217	Services.Common.RESTRequest	DEBUG	GET request to https://ffsync.askarus.de/1.0/sync/1.5
1557124393217	Services.Common.RESTRequest	TRACE	HTTP Header accept: application/json
1557124393217	Services.Common.RESTRequest	TRACE	HTTP Header authorization: ***** (suppressed)
1557124393217	Services.Common.RESTRequest	TRACE	HTTP Header x-client-state: ***** (suppressed)
1557124393225	FirefoxAccounts	TRACE	finished write of json user data - took: 15
1557124393225	FirefoxAccounts	DEBUG	writing secure storage: ["kSync","kXCS","kExtSync","kExtKbHash"]
1557124393225	FirefoxAccounts	TRACE	starting write of user data to the login manager
1557124393242	FirefoxAccounts	TRACE	finished write of user data to the login manager
1557124393242	FirefoxAccounts	DEBUG	writing plain storage: ["email","sessionToken","uid","verified","oauthTokens","device","profileCache"]
1557124393243	FirefoxAccounts	TRACE	starting write of json user data: ["email","sessionToken","uid","verified","oauthTokens","device","profileCache"]
1557124393254	FirefoxAccounts	TRACE	finished write of json user data - took: 11
1557124393255	FirefoxAccounts	DEBUG	writing secure storage: ["kSync","kXCS","kExtSync","kExtKbHash"]
1557124393255	FirefoxAccounts	TRACE	starting write of user data to the login manager
1557124393275	FirefoxAccounts	TRACE	finished write of user data to the login manager
1557124393450	Services.Common.RESTRequest	TRACE	onStartRequest: GET https://ffsync.askarus.de/1.0/sync/1.5
1557124393451	Services.Common.RESTRequest	TRACE	Channel for GET https://ffsync.askarus.de/1.0/sync/1.5 returned status code 0
1557124393451	Services.Common.RESTRequest	DEBUG	GET https://ffsync.askarus.de/1.0/sync/1.5 404
1557124393451	Services.Common.TokenServerClient	DEBUG	Got token response: 404
1557124393451	Services.Common.RESTResponse	TRACE	Processing response headers.
1557124393452	Services.Common.TokenServerClient	WARN	Error processing token server response: TypeError: right-hand side of 'in' should be an object, got number(resource://services-common/tokenserverclient.js:303:7) JS Stack trace: _processTokenResponse@tokenserverclient.js:303:7
getTokenFromBrowserIDAssertion@tokenserverclient.js:249:14
1557124393453	Sync.BrowserIDManager	ERROR	Non-authentication error in _fetchTokenForUser: TokenServerClientError({"message":{}})(resource://services-common/tokenserverclient.js:36:36) JS Stack trace: TokenServerClientError@tokenserverclient.js:34:16
getTokenFromBrowserIDAssertion@tokenserverclient.js:255:19
1557124393453	Sync.Status	DEBUG	Status.login: success.status_ok => error.login.reason.network
1557124393453	Sync.Status	DEBUG	Status.service: success.status_ok => error.login.failed
1557124393454	Sync.BrowserIDManager	INFO	Failed to fetch the cluster URL: TokenServerClientError({"message":{}})(resource://services-common/tokenserverclient.js:36:36) JS Stack trace: TokenServerClientError@tokenserverclient.js:34:16
getTokenFromBrowserIDAssertion@tokenserverclient.js:255:19
1557124393454	Sync.Service	DEBUG	verifyLogin failed: TokenServerClientError({"message":{}})(resource://services-common/tokenserverclient.js:36:36) JS Stack trace: TokenServerClientError@tokenserverclient.js:34:16
getTokenFromBrowserIDAssertion@tokenserverclient.js:255:19
1557124393454	Sync.Status	DEBUG	Status.login: error.login.reason.network => error.login.reason.network
1557124393454	Sync.Status	DEBUG	Status.service: error.login.failed => error.login.failed
1557124393455	Sync.ErrorHandler	ERROR	Sync encountered a login error
1557124393455	Sync.SyncScheduler	DEBUG	Clearing sync triggers and the global score.
1557124393455	Sync.SyncScheduler	DEBUG	Next sync in 3600000 ms. (why=schedule)
1557124393458	Sync.Service	DEBUG	Exception calling WrappedLock: Error: Login failed: error.login.reason.network(resource://services-sync/service.js:872:15) JS Stack trace: onNotify@service.js:872:15
1557124393461	Sync.Service	DEBUG	Not syncing: login returned false.
1557124393466	FirefoxAccounts	TRACE	not checking freshness of profile as it remains recent

The log suggests that on the windows computer, it’s actually configured to “https://ffsync.askarus.de/1.0/sync/1.5" (that is, it’s missing the “/token” part on the start of the path).

That was the issue. It’s working now.
Thank you so much for your help and for being patient with me.
I really need to practice to find such errors/typos.