Portál AbcLinuxu, 30. dubna 2025 20:15
Začal som teraz ďaľší php projekt, úplne nezávyslý od predchádzajúcich, tak som si povedal že prihlasovanie spravím cez OpenID. Tu sú moje skúsenosti.
Kneď na úvod musím povedať že to nie je tak jednoduché ako som si predstavoval. Očakával som že do index.php pridám 2 riadky kódu a tým bude celé OpenID poriešené. Minimálne demo má však nejakých 266 riadkov php kódu a je rozdrbané do 4 súborov. K tomu si pripočítajte jeden adresár s OpenID knižnicou ktorý má 15000 riadkov. Pri troche snahy sa mi podarilo napísať "wrapper" takže som to nakoniec skresal na tie 2 riadky.
Prvý bezpečnostný problém sa objavil ked som si uvedomil že sa prihlasujem pomocou "http://JankoHrasko.oidprovider.com", ktorý síce servru povie že mám nick "John The Ripper" ale server už moje skutočné meno vie (JankoHrasko). Najprv som myslel že sa budem musieť môjho pekného OID nicku vzdať, ale potom som si uvedomil čo robím zle. Pri prihlasovaní netreba uvádať vaše celé OpenID, stačí zadať http://oidprovider.com/. Bohužial, ako som nakoniec zistil, OpenID server vracia skutočné OpenID takže si tým veľmi nepomôžete. Na ilegálnu činnosť budete potrebovať druhé OpenID alebo providera ktorý podporuje viac OpenID.
Z hľadiska používateľa je treba si pozor dávať na to, aby vám server nepodstrčil falošnú stránku (niečo ako phishing na OpenID), takže ak zadávate heslo treba skontrolovať adresu či ste na oidprovider.com. Samozrejme že väčšinou to heslo vôbec netreba zadať lebo ste tam už prihlásený (cookies na oidprovider.com).
Mimochodom vo Firefoxe 3 celé prihlasovanie funguje normálne, ale v Opere 9.50 to nefunguje úplne na 100%. Po potvrdení prihlásenia Opera zobrazí chybovú stránku, je treba refreshovať stránku, potom už to ide.
Pokoušíte se přistoupit na adresu https://www.myopenid.com/trust_submit, která je nedostupná. Zkontrolujte, zda je adresa zadána správně, a pak zkuste stránku načíst znovu.
Zaujímavé je, že to funguje aj ak je moja stránka na localhoste. Na môj vkus je to tiež trochu pomalé (asi 5s).
Medzi jednotlivými providermi je dosť veľký rozdiel čo sa týka prehľadnosti. Vyskúšajte niekoľko a zistíte ktorý vám najviac vyhovuje. Ako návrhár stránky ešte musíte dať pozor na to ako zadávajú používatelia OpenID pri prihlasovaní, lebo napr. openid.cz/janko ten môj kód neakceptuje (ale janko.myopenid.com ano), akceptuje http://openid.cz/janko alebo http://www.openid.cz/janko. Problém je že to isté vracia po autorizácii, teda ten istý uživateľ sa raz prihlási raz bez www raz s www. Účet http://janko.myopenid.com/ tam môže byť tiež 2x, raz s lomítkom na konci a raz bez neho. No proste bordel, OpenID servere nevracajú unifikované OpenID. Takže toto musíte nejak ošetriť.
Ďalšia nástraha je, že vačšinou portály ktoré podporujú prihlasovanie cez OpenID tiež majú aj nejaké vlastné registrovanie. Väčšinou ale nie sú provider OpenID takže tým že sa u nich registrujete OpenID nezískate.
Pre mňa implementácia OpenID spočívala v stiahnutí nejakej zbalenej knižnice, a následnom rozbalení do nejakého adresáru. Ako dlho to tam bude hniť? Kto sa o to bude starať? Kto bude kontrolovať nové verzie? Oveľa radšej by som to mal ako súčasť PHP, nech sa o aktualizáciu stará balíčkovací systém.
Ďalšia zrada (týka sa len sevra openid.cz) je taká, že ak napíšete na stránka vaše OpenID, dáte prihlásiť, presmeruje vás to na stránku providera. Ak teraz dáte back a skúsite sa prihlásiť ešte raz s tým istým OpenID tak vám vypíše že je to neplatné OpenID (metoda $consumer->begin($oid) vrati NULL), a už sa s ním neprihlásite. Toto je docela prúser. Ako som neskôr zistil, openid.cz nefunguje nikde, nepoužívajte ho.
Daily wtf dnes patrí servru bloguje.cz. Tam celú pointu OpenID chápu po svojom. Aby ste sa mohli pomocou OpenID prihlasovať, musíte sa u nich "normálne" zaregistrovať. Po registrácii musíte nastaviť ktoré OpenID budete na prihlasovanie používať. Akože teraz vážne, WTF? Predpokladám ale že manažéri sú spokojný, bulshit bingo proste boduje. Zakončím to citátom zo slashdotu, ktorý komentuje že MPAA chce zamedziť možnosti nahrávať filmy na DVR:
Further, how many people are going to buy a DVR (Digital Video RECORDER) that doesn't actually RECORD? Isn't that like, I don't know, THE WHOLE FUCKING POINT?!?!?
Ako som dnes ráno zistil, funguje to viac menej aj na Windowse taže masívnemu rozšíreniu už nič nebráni. Majte sa fajn, idem sa vyspať.
Tiskni
Sdílej:
lebo napr. openid.cz/janko ten môj kód neakceptuje (ale janko.myopenid.com ano), akceptuje http://openid.cz/janko alebo http://www.openid.cz/janko. Problém je že to isté vracia po autorizácii, teda ten istý uživateľ sa raz prihlási raz bez www raz s www. Účet http://janko.myopenid.com/ tam môže byť tiež 2x, raz s lomítkom na konci a raz bez neho. No proste bordel, OpenID servere nevracajú unifikované OpenID. Takže toto musíte nejak ošetriť.Tohle je hodne velkej problem. Dokud to nebude skutecne jednotne fungovat, tak to bude asi docela problem. My ted v praci "experimentujeme" (na nekterych systemech uz to bezi) se SAML, konkretne SimpleSamlPhp a osobne muzu rict, ze instalace a konfigurace je opravdu trivialni. Pocatecne konfigurace sice trosku casu sezere, zvlast IdP je nutny trosku vic nakonfigurovat kvuli overovani identity, ale pridani dalsiho SP uz je jenom rozbaleni ZIPu, zkopirovani 4 souboru a uprava hostname na SP a IdP, a basedir na SP.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.