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

Zdroják » Různé » Porovnání moderních autentizačních metod

Porovnání moderních autentizačních metod

Články Různé

V tomto dílu seriálu si povíme o tom, jak se jednotlivé autentizační metody od sebe liší, a seznámíme se ve stručnosti s jejich hlavními rysy. Také se podíváme na některé oblíbené mýty a předsudky, které o těchto metodách kolují, a pokusíme se je uvést na pravou míru.

Rozdělení autentizačních metod

Autentizační metody lze rozdělit do několika skupin podle různých kritérií. V první řadě je můžeme rozdělit podle toho, jestli ověřují uživatele (user-centric), nebo jestli ověřují oprávnění a roli v instituci (institution-centric). Do první skupiny patří všechny zmiňované metody (OpenID, Live ID, OpenAuth) a některé další (Facebook Connect, MySpace ID, BBAuth (Yahoo ID), Google Federated Login). Do druhé skupiny patří např. v komentářích občas zmíněný Shibboleth. V tomto seriálu se zaměříme na metody z té první skupiny, které najdou přeci jen širší uplatnění ve světě webového vývoje než, řekněme, akademický Shibboleth.

Metody z první skupiny, které jsem nazval user-centric, jsou založené na tom, že uživatel má u někoho důvěryhodného založen účet, pomocí něhož se může přihlašovat i na jiných službách. (Srovnání se světem podpisových certifikátů a certifikačních autorit se nabízí samo.) A podle toho, kdo je tím důvěryhodným subjektem, zda je jím někdo pevně daný, nebo zda si lze vybrat, můžeme metody opět rozdělit. U Live ID, OpenAuth, Facebook Connect a dalších je důvěryhodný subjekt jasně dán: Je jím jedna konkrétní firma (Microsoft, AOL, Facebook, Google, Yahoo…) Naproti tomu u OpenID si může uživatel vybrat, kterého poskytovatele zvolí. Může si vybrat, komu bude věřit, a dokonce si nemusí vybrat nikoho a může se rozhodnout, že tou důvěryhodnou autoritou bude on sám (resp. jeho server).

Pojďme se podívat podrobněji na jednotlivé autentizační metody, o nichž se budeme bavit v dalších pokračováních.

OpenID

OpenID

OpenID je otevřená a decentralizovaná metoda pro ověřování uživatelů. Vznikla v roce 2005 jako vedlejší produkt při vývoji blogovacího systému LiveJournal společností Six Apart. Její vývoj je v současnosti zaštiťován společností JanRain. Na jaře 2008 deklarovaly svou podporu standardu OpenID společnosti jako Google, IBM, Microsoft, VeriSign a Yahoo! Autentizaci pomocí OpenID v průběhu letošního roku nabídly (či oznámily) servery jako SourceForge (tisková zpráva) nebo MySpace (tisková zpráva). V posledních měsících podporu OpenID implementoval Google a Microsoft vyhlásil, že Live ID bude podporovat OpenID. V ČR doslova před několika dny oznámil spuštění služby OpenID poskytovatele Seznam.

OpenID identity nejsou spravovány, na rozdíl od ostatních metod, jedním centrálním správcem, což dává uživateli značnou míru svobody při rozhodování, komu svěřit své údaje. Zároveň to otvírá poměrně velký prostor pro konkurenční boj, kdy se mohou jednotliví poskytovatelé předhánět tím, jakou službu svým klientům nabídnou, a zde se fantazii meze rozhodně nekladou. Dokonce existují i single user implementace, které si může uživatel spustit sám na vlastním serveru a zabezpečit dle vlastních nároků a představ.

Ostatně o tom, jak je otázka důvěryhodnosti OpenID poskytovatele důležitá, jsme se mohli přesvědčit v ČR na vlastní kůži: Spousta lidí má spojenu technologii OpenID s prvním českým poskytovatelem, openid.cz, jehož fungování bylo značně diskutabilní, dlouhou dobu dokonce nefungoval vůbec, jeho provozovatel reagoval velmi sporadicky, a to jistě nemalou měrou přispělo k nedůvěře v technologii OpenID jako takovou. Na toto téma jsem před časem napsal glosu Jak zabít OpenID.

OpenID identifikátor má tvar běžného URL (adresy WWW stránky). Klient může při autentizaci požadovat dodatečné informace o uživateli (přezdívku, e-mail, adresu,…), a pokud uživatel souhlasí, tak jsou providerem poskytnuty.

OpenID je z hlediska vývojáře velmi slušně dokumentované a je k dispozici velké množství implementací pro velké množství jazyků.

Live ID

Live ID

Microsoft potřeboval jednotnou autentizační metodu pro uživatele od chvíle, kdy se rozkročil mezi desktop a web. Live ID není proto žádná novinka, ale jen další krok v řadě Microsoftích pokusů o jednotný přihlašovací mechanismus: Vzpomeňme na Microsoft Passport, později .NET Passport, později krátce Microsoft Passport Network…

Live ID vychází, jak už název napovídá, ze světa služeb Microsoft Live, a nabízí jednotné přihlášení ke všem těmto službám. Microsoft dává k dispozici knihovny pro Live ID autentizaci, jak pro své .NET prostředí, tak i např. pro PHP. Implementace Live ID přihlašování není složitá, zabere (i se studiem nejnutnější dokumentace) zkušenému vývojáři pár desítek minut.

Live ID identifikátor má tvar e-mailové adresy Hotmail nebo Windows Live (uzivatel@windowslive.com) a klient nedostává od poskytovatele žádné osobní údaje o uživatelích, pouze alfanumerický hash (unikátní pro daného uživatele a danou službu). Pokud chce tedy klient pracovat např. s e-mailovou adresou nebo s uživatelskou přezdívkou, musí si je od uživatele vyžádat zvlášť a spárovat s daným hashem Live ID.

OpenAuth

OpenAuth

OpenAuth je, dalo by se říci, okrajová obdoba Live ID, jen s tím rozdílem, že místo Microsoftu za ním stojí AOL. Princip fungování je podobný předchozím metodám, takže bych jen opakoval napsané. Důvod, proč se o této metodě zmiňuji, je ten, že je pro nás v ČR zajímavá, protože umožňuje přihlášení nejen pomocí AOL účtu (AIM), ale i pomocí ICQ údajů, a pracovat tak do jisté míry v ICQ síti.

AOL nabízí poměrně slušnou vývojářskou dokumentaci i s příklady použití v PHP, Rails, ASP.NET a v Javě.

Další metody

Do této podkategorie si dovolím naházet všechny ostatní metody, které fungují na podobných principech, tedy Facebook Connect, Yahoo! účty, MySpace přihlašování, Google účty a podobné, kterými se však nebudeme zabývat. Technologicky to jsou stále variace na předchozí metody, jen s tím rozdílem, že onou autoritou je jednou Facebook, jednou Yahoo a jindy zase Google. Bez ohledu na to, jaký hype je v posledních dnech okolo Facebook Connect, se domnívám, že nebude mít větší význam, a že podobně jako ostatní poskytovatelé brzy nabídne nějakou variantu na OpenID přihlášení.

Omlouvám se všem „věcí znalým“ za poněkud obšírnější úvod, který byl však nezbytný. V příštím pokračování už začneme s popisem OpenID z technologického hlediska a dostane se už na praktičtější věci. Ovšem ještě před tím probereme jednu oblast, a tou jsou:

Pověry a mýty

Tato kapitola čerpá z komentářů, které jsem posbíral u různých článků na toto téma v poslední době po českém internetu. Pověr, mýtů, předsudků a nedorozumění je kolem OpenID a dalších metod tolik, že by vydaly na několik samostatných článků (ostatně jako u každé novinky). Proto bych se rád k některým vyjádřil.

Sledujeme i tebe
Live ID je vlastně OpenID…
Ne, není. Je to jiná služba a identifikátory nejsou zaměnitelné. Microsoft ale přislíbil konvergenci k OpenID, nechme se překvapit.
U OpenID o mně ví každý všechny údaje
Ne, u OpenID můžete přesně určit, jaké vaše údaje o vás kdo dostane a na jak dlouho.
OpenID je nebezpečné, co když mi někdo odposlechne heslo…?
OpenID poskytovatel nemusí být zabezpečen jen jménem a heslem. Může (mnohem snáz než cílové aplikace) fungovat přes SSL, rozdávat hardwarové klíče, „kalkulačky“, může pro ověření posílat SMSky apod., záleží jen na poskytovateli. V úhrnu tak může být OpenID mnohem bezpečnější, protože nabídne vyšší úroveň zabezpečení na VŠECH webech, kam se s OpenID budete přihlašovat, ne jen tam, kde to implementovali.
OpenID je zlo, protože mě mohou sledovat…
Ano, vaše OpenID je dohledatelné na různých službách, což je ale třeba váš e-mail nebo vaše IP adresa taky. Pokud nechcete být sledován, tak jistě máte jednorázové e-mailové schránky, co pět minut měněnou IP, neustále promazávané cookies a spíte v alobalové krychli, takže pro vás nebude jistě obtížné generovat jednorázové OpenID identity pro každou službu zvlášť.
Snižuje to anonymitu na internetu
Ano, do jisté míry ano. Neviděl bych to však jednoznačně jako negativum.
Těch metod je moc a jsou nekompatibilní, takže to přidělává zbytečnou práci…
Není nutné se věnovat všem metodám. Pokud mohu doporučit, zvolte OpenID. Ostatní poskytovatelé (Google, Yahoo, Microsoft) k němu pomalu přecházejí a nabízejí wrappery pro své účty. Navíc můžete použít „přihlašovací proxy“ RPX, která vám poskytne jednotné přihlašování s účty u nejrůznějších služeb.
Shibboleth je mnohem lepší (modernější, progresivnější), vybraly si ho VŠ, tyhle ostatní metody jsou jen parodie, nemá smysl se jimi zabývat.
Shibboleth je především něco jiného. Shibboleth řeší autentizaci i autorizaci, tedy nejen identitu, ale i oprávnění. Shibboleth je vázán na „instituce“ a role jednotlivých uživatelů. Ve světě mimo instituce ztrácí svou zásadní výhodu a stává se z něj pouze těžkopádná autentizační metoda s mnoha nevýhodami – což poznáte v okamžiku, kdy z VŠ odejdete a váš Shibboleth účet skončí. Dovolil bych si stejně nekorektně oponovat, a to poukazem na Google Trends: OpenID vs Shibboleth, což snad jako zdůvodnění, proč se nebavit o Shibboleth, sta­čí.

Pokud se na váš (oblíbený) blud nedostalo, tak jej napište do komentářů, bude-li pěkný, jistě dostane prostor příště!

Používáte některou z uvedených metod?

Komentáře

Subscribe
Upozornit na
guest
10 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Jury.Z

Já používám OpenID a jako providera VeriSign (https://pip.verisignlabs.com/). Dle mého názoru se jedná o důvěryhodnou autoritu a ve spojení s Firefox addonem OpenID SeatBelt je přihlašování opravdová lahůdka. Je jen škoda, že tuto metodu přihlašování nepodporuje více webů.

Boris

+1

H0nzy

Live ID identifikátor má tvar e-mailové adresy Hotmail nebo Windows Live (uzivatel@windowslive.com)

Ne nutne, email muze byt libovolny.

ivan

Shibboleth je sice mozna trochu "akademicky", ale to byla spousta systemu taky. Jinak si troufam tvrdit, ze Shibboleth je dneska nejrozsirenejsi autentizacni system v CR. Kdyz to prezenu, tak kazdy student vysoke skoly, ktery nekdy navstivil knihovnu v nem ma ucet a (ani to tom nemusi vedet) muze ho pouzit pro cteni knizek/clanku, za ktere musi ostatni tvrde platit.(Safari, Spriger, …)

Martin Hassman

Tím jsem ovšem pěkně potvrdil ono "akademický". 8-)

Milan Šorm

A to je možná ta tragédie, že se o tom na těch univerzitách ani moc neví. Jak se vlastně tyhle věci propagují? Na MZLU v Brně jsem o tom nikdy nezaslechl a to ani v pozici vedoucího ústavu pro informatiku :( Asi je to moje ostuda, ale prostě informace netečou ani mezi univerzitami, tak jak by se to pak mohlo šířit dál?

cerw

Rad bych neco slysel o protokolu CAS
ruby server: http://code.google.com/p/rubycas-server/

dik

Ivan Novakov

Ohledne Shibbolethu nemate tak uplne pravdu. Shibboleth dela prakticky to same co OpenID – poskytuje autentizaci a uzivatelske atributy (jmeno, email, …). Pokud se da mluvit o nejake autorizaci, ta se provadi vyhradne na zaklade predanych atributu. Provozovatelem Shibboleth Identity Provider nemusi byt nutne nejaka instituce. Lze rici, ze jej muze provozovat kazdy, kdo muze provozovat i OpenID providera.

Nicmene, souhlasim, ze Shibboleth je neco ponekud jineho, nez posuzovane autentizacni systemy. Systemy jako OpenID jsou jednoduche, ucelove, snadno implementovatelne. Shibboleth je oproti tomu "tezka artilerie", umi toho opravdu hodne a hodne veci je nad ramec bezneho pouziti jednoduche web autentizace pro web fora a blogy. Je taky narocnejsi na spravu z casti i diky tomu, ze je vyvijen akademiky a je striktne postaven na standardech (SOAP, SAML, PKI, …). Znamena to mimo jine i to, ze snadno komunikuje se systemy postavenych na stejnych standardech.

Takze abych to shrnul – souhlasim, ze nema cenu davat Shibboleth mezi systemy jako OpenID, ale ze zcela jinych duvodu. Vami vyjmenovane negativa nejsou uplne relevantni, ale je to vcelku pochopitelne – Shibboleth je celkem slozity system a neni mozne jej dobre pochopit zbeznym pohledem.

Makub

Podle mého názoru je rozdíl mezi OpenID a Shibboleth hlavně v tom, že OpenID je vhodný pro služby, které nepotřebují znát skutečnou identitu člověka, pouze to, že je to stále tentýž (neidentifikovaný) člověk, který už napsal určité příspěvky do fóra, na blog a podobně.

Kdežto Shibboleth umožňuje dohledat reálnou identitu člověka, tedy že je to např. Jan Novák z Masarykovy univerzity v Brně, takže ho případně bude možné soudně popotahovat za to, co provedl. Proto je Shibboleth těžkotonážnější a proto je vhodný pro služby, které potřebují znát skutečnou identitu člověka.

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.