Eigener Sync-Server für Firefox: Difference between revisions

From
Jump to navigation Jump to search
(added todos for ffplugin)
(seitenstruktur überarbeitet)
Line 1: Line 1:
= Theorie =
= Theorie =
== Überblick ==
== Unsortierte ==
https://blog.mozilla.org/services/2014/02/07/a-better-firefox-sync/
https://blog.mozilla.org/services/2014/02/07/a-better-firefox-sync/


Line 8: Line 10:
https://wiki.mozilla.org/Identity/Firefox-Accounts
https://wiki.mozilla.org/Identity/Firefox-Accounts


== Aufgabenbereiche der einzelnen Server ==
==Module/Komponenten==

*'''Sync Server'''

*'''Firefox Accounts Server (fxa)'''


auth-server: manages accounts database
auth-server: manages accounts database
Line 18: Line 16:
content-server: web-based user interface
content-server: web-based user interface


'''TODO Datenbank/Backend?'''
==Variante 1 - läuft==
= Lösung =
== MVP: lokaler Syncserver angebunden an FXA-System ==
Anleitung zu finden unter:


https://docs.services.mozilla.com/howtos/run-sync-1.5.html
'''eigener Sync Server + Firefox Accounts Server von Mozilla'''


'''TODO SSL-Konfig dieser Lösung?'''
Sync Daten werden auf eigenen Server gespeichert.
== Überblick ==
== Manuelle Vorbereitung==
Zertifikate erstellen


Hosts Config
Anmeldung/Authentifizierung erfolgt über den Mozilla Server


== Einrichtung über [https://github.com/ansible/ansible Ansible] ==
==Variante 2 - läuft (noch) nicht==
'''TODO yaml-file und templates packen und hochladen'''
'''eigener Sync Server + eigener Firefox Accounts Server'''


= Hindernisse =
benötigt SSL
== Content Server braucht nach npm install noch bower run ==


Bower muss installiert werden (npm install -g bower)
= Work in Progress =


und dann im Verzeichnis ein "bower install"
1. Schritt: lokaler sync-server mit mozilla fx-Accounts


== Server nur über https ansprechbar ==
Anleitung zu finden unter:
about:accounts gibt in der browser console folgenden Fehler aus:
https://docs.services.mozilla.com/howtos/run-sync-1.5.html


"Firefox Account Error: Couldn't init Firefox Account wrapper: Firefox Accounts server must use HTTPS
2. Schritt: fxa-auth-server aufsetzen
" aboutaccounts.js:28
https://github.com/mozilla/fxa-auth-server


== Connection Reset ==
3. Schritt: fxa-content-server aufsetzen
'''TODO silent connection reset bei nicht akzeptiertem zertifikat: Wireshark? Reproduzierbar?'''
https://github.com/mozilla/fxa-content-server
für Selbstgebaute Zertifikate: vorher manuell als Ausnahme hinzufügen (folgende Seiten besuchen)


https://sync.accounts.devlocal
'''Beachten:'''


https://api.accounts.devlocal
Bower muss installiert werden (npm install -g bower)


https://accounts.devlocal
und dann im Verzeichnis ein "bower install"


https://verify.accounts.devlocal
about:accounts gibt in der browser console folgenden Fehler aus:


== Cross Origin Ajax Calls ==
"Firefox Account Error: Couldn't init Firefox Account wrapper: Firefox Accounts server must use HTTPS
Firefox macht während des Logins AJAX Calls vom Content Server an den Auth Server.
" aboutaccounts.js:28
Bei Mozilla ist das kein problem, da die uris für API/Content Server subdomains von firefox.com sind:


Wenn die Server allerdings lokal laufen, schlägt der Ajax-Request mit einem Cross-Domain Fehler
4. Schritt: Firefox an eigenen fxa-server anbinden
fehl (was ja eigentlich auch gut so ist). In unserem Fall ist das aber ein Problem.
https://docs.services.mozilla.com/howtos/run-fxa.html
'''SSL-Config'''
Damit der Firefox mit den eigenen Servern spricht müssen diese über https erreichbar sein. Dies lässt sich wie folgt gewährleisten:


'''TODO Bild'''
Zertifikat erstellen (key.pem & cert.pem)


Lösungsansatz: NGINX, Apache reverse proxy
1. content-server


= TODOs =
Schlüssel und cert in Hauptordner
== Ansible ==


https://www.digitalocean.com/community/tutorials/how-to-create-ansible-playbooks-to-automate-system-configuration-on-ubuntu
./server/config/local.json => "use_https": true,
und: "fxaccount_url": <nowiki>"http://your.auth.server.here.org",</nowiki>


1. Firefox Services Installieren (+ Abhängigkeiten)
2. auth-server
- Syncserver
gunicorn
- fxa-account-server
- fxa-content-server


2. Services konfigurieren
Schlüssel und cert in Hauptordner
- Syncserver
- fxa-account-server
- fxa-content-server


3. CA/Zertifikate generieren
./config/config.js => use_https: true


4. Nginx Installieren
'''Probleme'''
sudo apt-get install nginx
/etc/nginx/sites-available/default


5. Nginx Konfig
Firefox macht während des Logins AJAX Calls vom Content Server an den Auth Server.
Bei ihnen ist das kein problem, da die uris:


6. Hosts datei
beide unter die gleiche Domain (firefox.com) fallen.
Wenn die Server allerdings lokal laufen, schlägt der Ajax-Request mit einem Cross-Domain Fehler
fehl (was ja eigentlich auch gut so ist). In unserem Fall ist das aber ein Problem.


== Firefox-Plugin ==
'''WICHTIG'''
für Selbstgebaute Zertifikate: vorher manuel als Ausnahme hinzufügen (folgende Seiten besuchen)


https://blog.mozilla.org/addons/2014/06/05/how-to-develop-firefox-extension/
https://sync.accounts.devlocal


=== config-Einträge ändern per Plugin ===
https://api.accounts.devlocal
http://stackoverflow.com/questions/6157173/a-firefox-extension-that-changes-a-value-in-the-aboutconfig


https://addons.mozilla.org/en-US/firefox/files/browse/98518/file/bootstrap.js
https://accounts.devlocal


https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm
https://verify.accounts.devlocal


= Informationenhaufen =
'''Lösungsansätze:'''
== Links ==
nginx rewrite: http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy


Virtualbox HostNetwork: http://www.thomas-krenn.com/de/wiki/Netzwerkkonfiguration_in_VirtualBox#Host-only_networking
nginx für eigene domain der https verwaltet.

= Debug Optionen =
Firefox: about:sync-log


config:
tokenServerURI: https://sync.accounts.devlocal/1.0/sync/1.5


= Notizenhaufen =
Evaluieren: bringt uns das was?
https://github.com/mozilla/fxa-dev
https://github.com/mozilla/fxa-dev


Line 119: Line 125:
http://www.ncalexander.net/blog/2014/07/05/how-to-connect-firefox-for-android-to-self-hosted-services/
http://www.ncalexander.net/blog/2014/07/05/how-to-connect-firefox-for-android-to-self-hosted-services/


== Debug Infos ==
BrowserId Verifier?


Firefox: about:sync-log
Paketverkehr monitoring mit tshark

Virtualbox HostNetwork: http://www.thomas-krenn.com/de/wiki/Netzwerkkonfiguration_in_VirtualBox#Host-only_networking


== Config ==
=== Ports ===
Ports:
Ports:


Line 135: Line 141:
verify: 7070
verify: 7070


=== Firefox ===
nginx rewrite: http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy
'''syncserver:'''

= Info Austausch =
X-Frame-Options:"DENY" - "The page cannot be displayed in a frame, regardless of the site attempting to do so."

X-XSS-Protection:"1; mode=block" - https://www.owasp.org/index.php/List_of_useful_HTTP_headers

x-content-type-options:"nosniff" - https://www.owasp.org/index.php/List_of_useful_HTTP_headers

content-security-policy:"default-src 'self';img-src 'self' data: http://localhost:1112 https://secure.gravatar.com;connect-src 'self' https://localhost:9000 https://localhost:9010 https://localhost:1111;report-uri /_/csp-violation"

= about:config =
syncserver:
services.sync.tokenServerURI
services.sync.tokenServerURI


https://sync.accounts.devlocal/token/1.0/sync/1.5 --> https://accounts.devlocal/ffs/token/1.0/sync/1.5
https://sync.accounts.devlocal/token/1.0/sync/1.5 --> https://accounts.devlocal/ffs/token/1.0/sync/1.5


auth-services:
'''auth-services:'''
identity.fxaccounts.auth.uri
identity.fxaccounts.auth.uri


Line 172: Line 167:


https://accounts.devlocal/settings
https://accounts.devlocal/settings


== Ubuntu einrichtung ==
Einrichtung über [https://github.com/ansible/ansible Ansible]:
'''TODO''' yaml file und templates packen und verlinken



https://www.digitalocean.com/community/tutorials/how-to-create-ansible-playbooks-to-automate-system-configuration-on-ubuntu


1. Firefox Services Installieren (+ Abhängigkeiten)
- Syncserver
gunicorn
- fxa-account-server
- fxa-content-server

2. Services konfigurieren
- Syncserver
- fxa-account-server
- fxa-content-server

3. CA/Zertifikate generieren

4. Nginx Installieren
sudo apt-get install nginx
/etc/nginx/sites-available/default

5. Nginx Konfig

6. Hosts datei


== Firefox Plugin ==

https://blog.mozilla.org/addons/2014/06/05/how-to-develop-firefox-extension/

= config-Einträge ändern per Plugin =
http://stackoverflow.com/questions/6157173/a-firefox-extension-that-changes-a-value-in-the-aboutconfig

https://addons.mozilla.org/en-US/firefox/files/browse/98518/file/bootstrap.js

https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm

Revision as of 21:17, 29 September 2014

Theorie

Überblick

Unsortierte

https://blog.mozilla.org/services/2014/02/07/a-better-firefox-sync/

https://github.com/mozilla/fxa-auth-server/wiki/onepw-protocol

https://developer.mozilla.org/en-US/Firefox_Accounts

https://wiki.mozilla.org/Identity/Firefox-Accounts

Aufgabenbereiche der einzelnen Server

auth-server: manages accounts database

content-server: web-based user interface

TODO Datenbank/Backend?

Lösung

MVP: lokaler Syncserver angebunden an FXA-System

Anleitung zu finden unter:

https://docs.services.mozilla.com/howtos/run-sync-1.5.html

TODO SSL-Konfig dieser Lösung?

Überblick

Manuelle Vorbereitung

Zertifikate erstellen

Hosts Config

Einrichtung über Ansible

TODO yaml-file und templates packen und hochladen

Hindernisse

Content Server braucht nach npm install noch bower run

Bower muss installiert werden (npm install -g bower)

und dann im Verzeichnis ein "bower install"

Server nur über https ansprechbar

about:accounts gibt in der browser console folgenden Fehler aus:

"Firefox Account Error: Couldn't init Firefox Account wrapper: Firefox Accounts server must use HTTPS " aboutaccounts.js:28

Connection Reset

TODO silent connection reset bei nicht akzeptiertem zertifikat: Wireshark? Reproduzierbar? für Selbstgebaute Zertifikate: vorher manuell als Ausnahme hinzufügen (folgende Seiten besuchen)

https://sync.accounts.devlocal

https://api.accounts.devlocal

https://accounts.devlocal

https://verify.accounts.devlocal

Cross Origin Ajax Calls

Firefox macht während des Logins AJAX Calls vom Content Server an den Auth Server. Bei Mozilla ist das kein problem, da die uris für API/Content Server subdomains von firefox.com sind:

Wenn die Server allerdings lokal laufen, schlägt der Ajax-Request mit einem Cross-Domain Fehler fehl (was ja eigentlich auch gut so ist). In unserem Fall ist das aber ein Problem.

TODO Bild

Lösungsansatz: NGINX, Apache reverse proxy

TODOs

Ansible

https://www.digitalocean.com/community/tutorials/how-to-create-ansible-playbooks-to-automate-system-configuration-on-ubuntu

1. Firefox Services Installieren (+ Abhängigkeiten) - Syncserver gunicorn - fxa-account-server - fxa-content-server

2. Services konfigurieren - Syncserver - fxa-account-server - fxa-content-server

3. CA/Zertifikate generieren

4. Nginx Installieren sudo apt-get install nginx /etc/nginx/sites-available/default

5. Nginx Konfig

6. Hosts datei

Firefox-Plugin

https://blog.mozilla.org/addons/2014/06/05/how-to-develop-firefox-extension/

config-Einträge ändern per Plugin

http://stackoverflow.com/questions/6157173/a-firefox-extension-that-changes-a-value-in-the-aboutconfig

https://addons.mozilla.org/en-US/firefox/files/browse/98518/file/bootstrap.js

https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm

Informationenhaufen

Links

nginx rewrite: http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy

Virtualbox HostNetwork: http://www.thomas-krenn.com/de/wiki/Netzwerkkonfiguration_in_VirtualBox#Host-only_networking


https://github.com/mozilla/fxa-dev

https://blog.mozilla.org/services/2014/05/08/firefox-accounts-sync-1-5-and-self-hosting/

http://comments.gmane.org/gmane.comp.mozilla.sync.devel/924

https://github.com/callahad/selfhosted-sync

https://github.com/mozilla-services/syncserver

http://www.ncalexander.net/blog/2014/07/05/how-to-connect-firefox-for-android-to-self-hosted-services/

Debug Infos

Firefox: about:sync-log

Config

Ports

Ports:

Sync: 5000

API: 9000

content: 3030

verify: 7070

Firefox

syncserver: services.sync.tokenServerURI

https://sync.accounts.devlocal/token/1.0/sync/1.5 --> https://accounts.devlocal/ffs/token/1.0/sync/1.5

auth-services: identity.fxaccounts.auth.uri

https://api.accounts.devlocal/v1 --> https://accounts.devlocal/api/v1

identity.fxaccounts.remote.force_auth.uri

https://accounts.devlocal/force_auth?service=sync&context=fx_desktop_v1

identity.fxaccounts.remote.signin.uri

https://accounts.devlocal/signin?service=sync&context=fx_desktop_v1

identity.fxaccounts.remote.signup.uri

https://accounts.devlocal/signup?service=sync&context=fx_desktop_v1

identity.fxaccounts.settings.uri

https://accounts.devlocal/settings