Přejít k navigační liště

Zdroják » Webdesign » Správce účtů ve Firefoxu

Správce účtů ve Firefoxu

Články Webdesign

Před časem oznámila Mozilla nový koncept online identit. Součástí tohoto konceptu je i Správce účtů, který si můžete nainstalovat do svého prohlížeče Firefox a který vás dokáže, při splnění určitých předpokladů ze strany navštíveného webu, přihlašovat a odhlašovat na různých webech jednotným způsobem.

Článek vychází z anglického originálu Account manager coming to Firefox, jehož autorem je Dan Mills a který vyšel na stránkách Mozilla Hacks pod licencí CC-BY-SA. Pod stejnou licencí je k dispozici i tento překlad.

Správce účtů umožňuje uživatelům vytvořit nový účet, včetně volitelného náhodně vygenerovaného hesla, přihlásit se a odhlásit jenom kliknutím. Pokud chcete tuto možnost nabídnout uživatelům svých stránek, zabere vám to pouhou čtvrthodinku úprav.

Chtěli bychom usnadnit přihlašování na webové stránky všem uživatelům Firefoxu, a proto je naším cílem, aby byla tato funkce obsažena přímo ve Firefoxu. V rámci procesu začlenění do distribuce bychom rádi znali vaše připomínky, abychom je mohli zapracovat do specifikace. Zapojte se.

Tato funkce je v současnosti dostupná jako experimentální doplněk, který si můžete nainstalovat z domovské stránky Správce účtů.

originálním článku můžete zhlédnout video, které vysvětluje základní princip, jak Správce účtů funguje.

Jak to funguje?

Specifikace Správce účtů přináší dva drobné požadavky, které musíte na webových stránkách implementovat:

  1. Prohlížeč potřebuje informace o tom, jak uživatele na vaší stránce registrovat, přihlásit a odhlásit. Web tedy musí vystavit statický JSON dokument na místě, kde jej prohlížeč dokáže nalézt, a v tomto souboru popsat přihlašovací metody, které web podporuje, a způsob, jak je volat. Web může informovat o tom, že podporuje metodu „connect“ (přihlášení) např. takto:

      "methods": {
        "username-password-form": {
          "connect": {
            "method": "POST",
            "path": "/accounts/LoginAuth",
            "params": {
              "username": "Email",
              "password": "Passwd"
          }
      }

    Tento příklad říká prohlížeči, že web podporuje přihlašování, a to tak, že pošle formulář pomocí HTTP POST na URL /accounts/LoginAuth. Zároveň říká, že pole, která nesou informace o uživateli a heslu, se jmenují Email a Passwd.

  2. Prohlížeč potřebuje mít způsob, jakým zjistí, který uživatel je zrovna přihlášen (a jestli vůbec nějaký). Web by měl nastavit patřičnou HTTP hlavičku v tom místě, kde se posílá cookie s ID sezení (session ID). (Požadavek poslání spolu se sessionID není nezbytně nutný – viz další text a připomínky, pozn. překl.) Pokud nemůžete nastavit HTTP hlavičku, lze nabídnout i URL, na kterém prohlížeč zjistí požadovanou informaci.

    HTTP hlavička by měla vypadat nějak takto:

    X-Account-Management-Status: active; name="Pepa Uzivatel"

    Tato hlavička řekne prohlížeči, že je přihlášen uživatel se jménem „Pepa Uzivatel“, takže prohlížeč může nabídnout odpovídající prvky uživatelského rozhraní (např. pro přepnutí uživatele nebo jeho odhlášení).

Jak to u sebe vyzkouším?

  • Nainstalujte si demonstrační doplněk.
  • Umístěte soubor host-meta na svůj web tak, aby byl dostupný přes adresu /.well-known/host-meta (musí to být tato adresa). Soubor host-meta řekne prohlížeči, kde má hledat JSON soubor, o němž jsme se bavili výše. Příklady naleznete ve specifikaci nebo v příkladu host-meta na Yahoo.
  • Vystavte vlastní JSON soubor. Budeme ho dále nazývat AMCD (Account Manager Control Document; ovládací dokument správce účtu). AMCD by měl obsahovat koncové body formulářů pro přihlášení a odhlášení (zhruba odpovídající atributu action ve formuláři – pozn.překl.) Všimněte si, že nemusíte obslužné skripty měnit nebo přesouvat, stačí je jen popsat. Kompletní příklad naleznete ve specifikaci.
  • Upravte svůj web tak, aby posílal správnou hlavičku X-Account-Management-Status při přihlášení nebo odhlášení.
  • Ujistěte se, že máte heslo uložené v interním správci hesel. Pokud jej tam nemáte, musíte se na web alespoň jednou přihlásit ručně a povolit uložení hesla. (Tento požadavek v budoucnu odpadne.)
  • Počítejte s tím, že až bude ve Správci účtů hotová podpora pro registrace, budete muset pravděpodobně udělat drobné změny do registračního kódu.
  • Hlavičku můžete poslat s libovolným požadavkem. Pokud nechcete nebo nemůžete, musíte nabídnout metodu sessionstatus (viz specifikace), pomocí které prohlížeč zjistí, jestli je uživatel přihlášen.

A to je vše, přátelé! Buďte jedni z prvních, kdo tuto specifikaci implementuje, a dejte nám o tom vědět. Dejte nám vědět i to, kolik času vám přidání podpory pro Správce účtu zabralo.

Protože je webů, které tento protokol implementují, zatím naprosté minimum, můžete si fungování doplňku vyzkoušet na následujících webech (jejich specifikace byla přidána přímo do doplňku):

Příště se podíváme podrobněji na fungování procesu „discovery“, na plány ohledně podpory dalších autentizačních metod a schémat (jako HTTP Auth, OpenID atd) a na další funkce, které bychom rádi doplnili. Zůstaňte na příjmu! A nezapomeňte nám napsat svůj názor.


Otázky a odpovědi pro vývojáře

  • Musím předělat celý autentizační systém?

    Ne. Správce účtů je navržen tak, aby vyžadoval minimální změny na straně serveru. Máte možností víc, ale v základním tvaru představuje implementace podpory pro Správce účtů jen nahrání statického souboru a přidání několika hlaviček k HTTP odpovědím.

  • Musím předělat celý systém registrací?

    Implementace bude vyžadovat drobné změny do postupu registrace, ale naším cílem je, abychom to udělali co nejsnazší pro vývojáře i pro uživatele. Bližší informace naleznete v diskusním fóru a ve specifikaci; budeme se těšit na váš názor!

  • Jak to pomůže mým uživatelům?

    Správce účtů je pro uživatele přínosná věc. Zde jsou některé jeho rysy:

    • Jednoduchý, pochopitelný, uživatelsky přátelský

      Prohlížeč může vylepšit své uživatelské rozhraní, pokud tuto funkci implementuje. Například může mít jednotné umístění v uživatelském rozhraní, které se bude chovat konzistentně na všech webech, a které se stane místem, kam uživatelé budou chodit automaticky vždy, když se budou chtít přihlásit či odhlásit.

      Prohlížeč rovněž bude mít hlubší informace o uživateli. Může tak například umožnit rychlé přepnutí uživatele pomocí jediného kliknutí. Nebo když se zamyslíme nad tím, jak si uživatelé volí uživatelská jména: Prohlížeč se může podívat na jména, která uživatel používá na jiných webech, a může mu poskytnout některé dobré tipy.

    • Bezpečnost

      Mnozí odborníci na bezpečnost vám potvrdí, že největší bezpečnostní problém na dnešním webu je, že uživatelská jména a hesla jsou krátká a lze je snadno uhodnout. Správce účtů dovoluje používat silná hesla, která si ale uživatelé nemusí pamatovat.

      Navíc to, že Správce účtů přichází s abstraktní vrstvou, která odděluje správu účtu od uživatelského rozhraní, usnadňuje budoucí nasazení kryptograficky silných protokolů bez změn UI.

    • Pracuje nad současnými ověřenými řešeními

      V neposlední řadě je důležité i to, že Správce účtů nezavádí nějaký nový identifikační systém. Namísto toho je navržen tak, aby fungoval se současnými autentizačními metodami, jako jsou OpenID a další, a dal jim shodné uživatelské rozhraní. Uživatel by neměl být zatěžován tím, jaký systém je na webu použitý.

  • Jak mi to pomůže získat víc uživatelů?

    Čím snazší je registrace a přihlášení, tím víc máte uživatelů. To je jednoduché.

    Navíc Správce účtů vaše uživatele k ničemu nenutí, mohou dál používat web tak jak jsou zvyklí. Můžete nechat veškeré postupy nedotčené; přidání podpory pro Správce účtů pro ně neznamená žádné omezení.

  • Musím vytvářet nějaký obsah „pouze pro Firefox“?

    Ne! Nemusíte obsah ani vzhled vašeho webu naprosto nijak měnit. Správce účtů pracuje na pozadí, pro komunikaci s webem používá mapu stránek a hlavičky, a na základě těchto informací nabízí uživatelům správné ovládací prvky.

    Na druhou stranu také doufáme, že Správce účtů nezůstane technologií „Firefox-only“. Pracujeme na definici protokolu Správce coby formální specifikace, kterou mohou ostatní prohlížeče implementovat.

Komentáře

Subscribe
Upozornit na
guest
6 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Jakub Bouček

OK, pro účet budou silná hesla, která se uživatel nemusí pamatovat. Je tedy nutné, aby hesla znal prohlížeč. Jakmile se tato funkce nasadí, bude určitě terčem mnoha útoků úložiště hesel. Jak dlouho bude trvat, než se stane cílem nějakého šiřícího se červa?
Uživatel si sice bude (dozajista) úložiště hesel šifrovat pomocí master hesla, ale bude heslo dostatečně silné, aby uživatel jeho prolomením nepřišel o mnohem víc (tj. větší množství vyzrazených hesel na více účtů)?
Rozhodně princip popsaný v článku nehaním, moc se mi líbí a určitě jej budu na mé projekty nasazovat, ale trochu se zamýšlím nad důsledky (přičemž nepochybuji, že to již udělal někdo mnohem zasvěcenější :).
Hodně se mi ale nelíbí současná implementace, zejména povinná adresa ve tvaru: „/.well-known/host-meta“. Věřím, že tohle bude včas vyladěno, nejlépe pomocí <link rel=““ … />

Jan Kuča

Je doplněk připraven na alternativní metody přihlašování jako je například Facebook Connect?

Joelp

jediný, kdo má /.well-known/host-meta je Yahoo a to dost silně pochybuju, že jej používá.
Jak to teda všichni dělají? Já to zkoušel podle tohoto článku a nefunguje. Asi si raději budu muset přečíst originál. Podle tohoto sem to moc nepobral. Je to celé naťuklé, ale nedotažené.

Joelp

Tak jsem si prostudoval wiki a už to funguje :)

ic

Ty ostatní stránky na kterých to funguje jsou ‚obři‘ pro které to napsali v Mozilla labs, takže samotný provozovatel webu třeba ani netuší že něco takového má.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.

Pocta C64

Za prvopočátek své programátorské kariéry vděčím počítači Commodore 64. Tehdy jsem genialitu návrhu nemohl docenit. Dnes dokážu lehce nahlédnout pod pokličku. Chtěl bych se o to s vámi podělit a vzdát mu hold.