Komentáře k článku

Implementace přihlašování pomocí OpenID

Je implementace OpenID těžká? Na praktickém příkladu si ukážeme, že přihlašování pomocí OpenID lze implementovat snadno. Nebudeme zabíhat do podrobností ani probírat implementační detaily; pouze ukážeme, že v té nejjednodušší podobě je mezi webem a webem s podporou OpenID rozdíl pouhých několika desítek minut.

Zpět na článek

24 komentářů k článku Implementace přihlašování pomocí OpenID:

  1. danaketh

    RE: Implementace přihlašování pomocí OpenID
    Super. Tohle je přesně to co jsem potřeboval. Spouštím Kate a jde se na věc.

  2. Kuka

    OpenID server ?
    Velice zajímavý článek, o OpenID jsem zaslechl, vypadá to zajimavě, jen mě napadá, jak je to s "kompatibilitou"? Zkusil jsem si vytvořit účet na openid.cz ale script mě nepřihlásí (Neni platne OpenID). Je to tak, že knihovna spolpracuje jen s určitým serverem? Je to tak, že na openid.cz budu mít svou přezdívku, ale na openid.com ji bude mít někdo jiný? (jen pro příklad)

    1. Martin MalýAutor příspěvku

      Re: OpenID server ?
      S kompatibilitou se to má tak, že ukázka fungje s MyOpenID.com, s ClaimID, s Verisign, s OpenID od Seznamu i s vlastním OpenID serverem, zkrátka se vším, a pokud je problém s openid.cz, tak je problém v openid.cz. Nemám z toho radost, že „erbovní“ český OpenID server dělá tak špatnou reklamu celému protokolu, ale bohužel – nic s tím nenaděláme. S openid.cz byly problémy už před časem, provozovatel přislíbil nápravu, pak přestal reagovat… Holt, to je riziko otevřeného decentralizovaného protokolu. Pokud mohu, tak za sebe prohlašuju, že openid.cz nepovažuji za solidního OpenID providera a doporučil bych raději volbu jiného posktovatele.

  3. pan_tau

    gmail openId
    Vite nekdo jak vypada google openId, mam ucet na gmailu, ale nenasel jsem, jak vypada moje openId. Do ukazkovych formularu funguje:

    https://www.google.com/accounts/o8/id

    Jenze tohle nevypada vubec jako id ani si to nikdy nemuzu zapamatovat. Mate s tim nekdo zkusenosti?

    PS: a co openId pan_tau.root.cz?

    1. Martin MalýAutor příspěvku

      Re: gmail openId
      Google OpenID je zajímavá implementace. Na jednu stranu neposkytuje Simple Registration extension, na druhou stranu funguje jako „anonymní poskytovatel“ – vy zadáte identitu poskytovatele (to je to https://www.google.com/accounts/o8/id), přihlásíte se na Google svým Google účtem a Gogle vás autentizuje pod „nějakým“ ID (třeba https://www.google.com/accounts/o8/id?id=AItOawmPkyyaEK15WSP-YGYUS-vPZkzT7eAockg). Což by mohlo být řešení pro lidi, kterým vadí, že by je mohl někdo stopovat – nakolik jsem vypozoroval, tak se přiřazený identifikátor službu od služby liší. Přesně o tomhle řešení jsem psal v minulém článku (podkapitola „identifikátor poskytovatele“).

      Existuje wrapper mezi Google identitami a OpenID, který (snad) poskytuje i Simple Registration, ale není spravován Googlem a udělal ho jakýsi člověk v appengine. Nemohu posloužit bližšími informacemi, nepodařilo se mi to rozchodit.

      1. Christof

        Re: gmail openId
        Když se pošle pár extra parametrů, tak se z Googlu dá vyrazit e-mail uživatele, takže zas tak anonymní není.

        1. Martin MalýAutor příspěvku

          Re: gmail openId
          Můžete prosím napsat, kde lze těch "pár parametrů" najít? Myslím že to čtenáři ocení.

      2. pan_tau

        Re: gmail openId
        Vyresil problem 'zapamatovani si adresy' delegaci v me webove strance pridanim nasledujiciho kodu:

        <link rel="openid2.provider" href="https://www.google.com/account /o8/ud">                                                                                 
        <link rel="openid2.local_id" href="https://www.google.com/accounts/o8/id">
        

        Na prikladu v clanku pak funguje zadani pan_tau.matfyz.cz. Funguje to jen s openId 2.0, bohuzel s pomoci openid.server a openid.delegate se mi delegaci nepodarilo nastavit.

        To reseni Googlu nakonec neni tak spatne, nebot je anonymni a navic pomoci delegace si kazdy muze nastavit sve vlastni id.

    2. Andrew

      Re: gmail openId
      OpenID od Google je dost zapeklité a pokud jste se těšili, že když máte na Google účet, tak že máte i OpenID, tak vás zklamu.
      Google opravdu používá protokol OpenID ve druhé verzi, ale nejprve se je potřeba připojit na jeho server. A jelikož uživatelským jménem do Googlu není jen gmail, ale libovolný mail, který jste zadali při registraci, nemohl udělat to, co seznam, tj. vygenerovat z vašeho mailu id (neco.id.seznam.cz). OpenID totiž zároveň slouží jako url, kde se ověřuje, tj. url správce vašeho OpenID.
      Z těchto důvodů je tedy potřeba, aby stránka "Googlí" přihlašování podporovala, tj. vy jste někde vybrali, že to, co zadáváte, není běžný OpenID, ale účet Google. Pak už stránka ví, kam se připojit a další komunikace probíhá dle standardu.

      1. Martin MalýAutor příspěvku

        Re: gmail openId
        Souhlasím, ale s drobnou výhradou: "Z těchto důvodů je tedy potřeba, aby stránka "Googlí" přihlašování podporovala, tj. vy jste někde vybrali, že to, co zadáváte, není běžný OpenID, ale účet Google. Pak už stránka ví, kam se připojit a další komunikace probíhá dle standardu." – nic takového potřeba není, stačí když klient podporuje OpenID V2 – můžete si vyzkoušet jak v tom mém příkladu v čláku, tak třeba zde: http://openidenabled.com/php-openid/trunk/examples/consumer/ – zkuste zadat tu GoogleID adresu, po potvrzení své identity budete autorizován jako "nějaký Google uživatel".

        1. Andrew

          Re: gmail openId
          Souhlasím, ale s malou výhradou. Zadat tu adresu opravdu lze bez problému a pak vše funguje. Pochybuji ovšem, že by si ji ale některý uživatel google pamatoval a chtěl ji používat. Předpokládal jsem navíc, že dotaz směřoval spíš na použití uživatelského jména, kterým se přihlašuje do Google, tedy např. neco@gmail.com, cokoliv@ledacos.cz apod. Proto jsem také uváděl jako příklad Seznam.cz, který to vyřešil hezky. Pokud ale opravdu stránka umožní vybrat, že se přihlašuji přes Google (ale taky např. Yahoo atd.), uživatel opravdu může zadat to neco@gmail.com. Někoho by mohlo pak napadnout, že chybí univerzálnost OpenId, ale ve skutečnosti implementace na web je velmi jednoduchá, neboť mohu používat vše stejně jako u OpenId a jen musím říct, kam se připojuji (dle toho výběru uživatele).

          1. Martin MalýAutor příspěvku

            Re: gmail openId
            Aha, TAKHLE.. Ano, pak máte pravdu – pak stačí ale nabídnout "chci se přihlásit Google účtem" a "na pozadí" zpracovat uživatele běžným OpenID procesem jako by zadal tu nezapamatovatelnou google.com/blabla/o8/id adresu. dtto se Seznamem – zadal by mail, který by by přežvýkán na blabla.id.seznam.cz

      2. burlog

        Re: gmail openId
        U seznamu muzete byt prihlasen take pod jinym emailem, pak vase openid(od seznamu) bude vypadat username.id.seznam.cz/domain.com

  4. v6ak

    Mail z OpenID: jen ze stejné domény
    Je IMHO blbost brát bezhlavě mail z těch doplňujících informací o OpenID, protože tím jej stejně neověříte. Jediná možnost je, že souhlasí do jisté míry doména. Ale jak? Jen tld a druhý řád většinou postačí, riziko by bylo asi jen u freehostingů s doménou třetího řádu. Tak nevím, stejně je to potřeba ověřit, jen můžu vynechat ptaní se uživatele, což taky může ocenit.

  5. aprilchild

    RPXNow
    Podivejte se na RPXNow.com (https://rpxnow.com), za sluzbou stoji JanRain a jedna se o zdaleka nejjednodussi (implementacne) reseni autentikace k vasemu webu. Podporuje (krome LiveID – otazkou casu nez MS prejde na OpenID) prakticky vse. Pomoci mapovani (mapping API) ani nemusite menit db schema vasi aplikace.

    Nemusi mozna vyhovovat vsem, ale i z uzivatelskeho hlediska je to komfortni (a jako bonus: "RPX can request profile and registration data from the user using the Simple Registration OpenID extension, the HCard microformat, and soon via the new Portable Contacts protocol." – tohle bude skvele!).

    1. Martin MalýAutor příspěvku

      Re: RPXNow
      Ano, o RPXNow vím a zavžoval jsem, jestli jej zmínit. Nakonec jsem to nechal "na jindy", protože u RPX vidím několik problémů. Osobně bych se bál, že RPX server vypadne – a co pak? Navíc se mi nelíbí, že by "klíče k mému webu" držela jedna jediná společnost. Ale jako alternativní způsob přihlašování možná použitelné.

      1. aprilchild

        Re: RPXNow
        Souhlasim, pokud chce clovek mit kontrolu, integruje si to sam. Serverum rpx nezbyva nez verit :(. Mne trochu uklidnuje fakt, ze za tim stoji JanRain. Jenze ja uz nemam po x implementacich cas na integraci do dalsi aplikace, o moznych knihovnach typu Facebook, MySpace aj. ani nemluve. Alespon pred rokem a pul to sice nebylo extra obtizne, ale otravne urcite. Chci rovnez jednoduchou spravu a netrapit se aktualizaci knihoven, sledovanim bezpecnostnich zmen, … Rpx mi vyhovuje jako instantni reseni, vic za tim neni.

  6. kluvi

    Navrh na clanek
    Nechcete nahodou napsat nekdo nejakej kratsi clanecek o specialitkach ohledne OpenID u googlu? Konkretne me by treba zajimalo jak s tady pouzitou knihovnou ziskam emailovou adresu (tady v diskuzi se o tom nekdo zminil)

    1. kluvi

      Re: Navrh na clanek
      Mno tak me neco napadlo… Jelikoz se ta googli openid identifikuje jako "kdosi kdo ma ucet u google" a ja bych potreboval aspon nejakej identifikator (mejl). Tak me napadlo, ze by bylo dobry, aby se tomu uzivatelovi zobrazila ta prihlasovaci stranka ovsem s predvyplnenym mejlem (kterej by zadal na mejch strankach). Da se to googlu nejak poslat v pozadavku?

  7. Watchick

    Problém
    Zdravím, na http://uzivatele.damak.cz/openid/login2.php
    mám tedy váš script, s dobře nainstalovanou knihovnou (přesně podle návodu, se správnými cestami ke scriptům…) zkuste zadat open ID, vyhodí to buďto error, ze ID neni nalezeno, nebo error:

    Fatal error: Define Auth_OpenID_RAND_SOURCE as null to continue with an insecure random number generator. in /var/www/web2/damak.cz/uzivatele.damak.cz/openid/Auth/OpenID/CryptUtil.php on line 52

    nevíte co s tím?

  8. bum

    Registrace z identifikatoru openid.org

    Ahoj. Měl jsem problém u registrování z openid.org, protože identifikátor není unikátní a já se na to spoléhal. Identifikátor buď může být ve tvaru xxx.openid.org
    nebo xxx.openid.org/xxx. Jen jsem chtěl na to upozornit ostatní php newbe jak sem já :)

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=2909