Autentizace pomoci Windows Live ID, část 0

Tomáš Holan       18.01.2012       ASP.NET/IIS, Bezpečnost       10314 zobrazení

V dnešní době je internet plný webů (a nejen od Microsoftu), které používají autentizaci pomoci Windows Live ID. Teoreticky by se mohlo tedy zdát, že vytvořit ASP.NET aplikaci, která by právě využívala autentizaci přes Windows Live ID, by nemělo být až tak obtížné. Bohužel tomu tak ale není. Dle mých dosavadních zkušeností nejen že to není jednoduché, ale navíc existuje jen velmi málo příkladů, které jsou zpravidla neúplné, a to samé se dá říci i o dokumentaci.

Ještě si nejprve upřesněme, co je pro takovou aplikaci typické. Jedná se nám o ASP.NET aplikaci, na kterou v nejjednodušším scénáři budou uživatele přistupovat pouze pomoci Live ID a která bude umožnovat pořídit a pak zpětně poskytnout nějaká data specifická pro přihlášeného uživatele (jinými slovy, v databázi budou data této aplikace svázána s user ID z Windows Live). Aplikace by tedy ani nemusela mít vlastní registraci, ani nevyžadovala o uživateli vědět žádné další údaje, které nelze získat z Windows Live. Co bych si ale naopak od takové aplikace představoval je možnost zapamatování uživatele nebo automatické přihlášení (single sign-on).

Největším důvodem proč se nejedná o problém jednoduchý bude asi to, že aktuálně existují hned čtyři technologicky odlišné přístupy:

  1. Web Authentication, stará Live technologie (před změnou na Live Connect). Většina příkladů na autentizaci pomoci Live ID používá právě tento zastaralý způsob. Pozor, že naprosto všechny existující příklady (oficiální i ostatní) používající tento způsob jsou dnes již nefunkční a popisy na jejich rozchození i dokumentace obsahuje zastaralé a neplatné údaje. Po provedení několika nikde nedokumentovaných změn, lze z pravidla sice příklady rozběhnout, ale stejně jsou funkcionalita i možnosti tohoto způsobu dosti omezené. Oficiálně se jedná o “will be obsolete functionality”  (dokumentace zde).
    (Některé z příkladů používající tento způsob se dají poznat podle toho, že odkazují na tuto starou stránku.)
  2. Live Connect Java skript API, dokumentace zde a zde. Jedná se o up-to-date způsob, využívající Java-skriptovou knihovnu. Existuje jeden, opakuji jeden, oficiální příklad součástí SDK, který je dle mého názoru nefunkční nebo alespoň neúplný. Ani s pomocí dokumentace se mi ho totiž nepovedlo rozchodit. Jiné příklady neexistují.
    Další nevýhoda tohoto způsobu je to, že stav (session s informacemi z Windows Live) je udržován přímo objektem inicializovaným v Java skriptu a tudíž server o tom, zda je nějaký uživatel přihlášen ani neví (pokud by se mu identita nějak zpětně z Java skriptu nepředala). Jak je fungování celého řešení myšleno se mi, opět díky absenci kompletního a funkčního příkladu, zjistit nepodařilo, navíc nejsem moc příznivcem takovýchto “Java-skript only” řešení.
  3. Live Connect REST API, popis zde. V ASP.NET téměř jediné snad i použitelné řešení. Nevýhodou je ale, že součástí SDK je jen kousíček řešení (v podstatě pouze naznak) a jinak si naprosto vše musí člověk naprogramovat sám (na rozdíl od Windows Phone 7 a Windows 8 Metro-style aplikace, pro které existuje v SDK podpora ve formě knihovny - Managed API).
    Žádné jiné příklady jsem opět nenašel. Nicméně na implementaci příkladu používající tento způsob pracuji a časem se o něj podělím.

    Update: Tento příklad včetně popisu je k dispozici zde.

  4. Kombinace ACS (Access Control Service) a WIF (Windows Identity Foundation), ACS je pomocná Microsoft služba běžící pouze v cloudu (nebo na lab prostředí portal.appfabriclabs.com, kde zatím?! funguje zdarma), která volání Live služeb zprostředkovává. Výhodou je, že ACS umí i jiné identity providery (konkrétně Windows Live ID, Facebook, Google a Yahoo!) a umožňuje uživateli vybrat, který použít. Výsledkem autentizace je pak kolekce claimů naplněná “přepracovanými” daty od konkrétního identity providera. Nevýhoda je zpoplatnění ACS a nutnost Windows Azure učtu.
    Některé příklady jsou dostupné například zde, zde a zde.

Máte někdo nějaké vlastní zkušenosti, vyzkoušený příklad nebo implementaci na přihlašování pomoci Windows Live ID? Podělte se o jakýkoliv podmět v diskuzi pod příspěvkem.

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback