OpenID na tomto blogu

Školení, která pořádám

Technologie OpenID se zatím moc populární nestala (a dost možná už ani nestane), já ji však mám v oblibě. Vyhovuje mi především to, co řadě kritiků vadí – identifikátorem je webová stránka, nikoliv e-mailová adresa. E-mail totiž považuji za něco soukromého, co rozhodně nechci zadávat do každé diskuse. Webová stránka je naopak veřejná a hrdě ji do každé diskuse uvedu. Vzhledem k možnosti delegace mohu použít svou běžnou stránku, na které uvedu, kdo je zrovna mým poskytovatelem identity.

Líbí se mi i projekt MojeID, který technologii rozšiřuje především o ověřování uživatelů (status ověřeného uživatele jsem získal jako druhý v ČR). Nelíbí se mi úplně, že tento projekt financuje CZ.NIC (ostatně jako jakákoliv forma dotace), ale to teď rozebírat nechci.

OpenID jsem proto zavedl v diskusích na tomto blogu. Dlouho jsem přemýšlel o formě, která by uživatele obtěžovala co nejmíň (většina uživatelů OpenID podle mě nemá nebo nepoužívá, takže by je to akorát obtěžovalo), až jsem se nakonec spolehl výhradně na delegaci – při zadávání diskusního příspěvku se ověří, jestli zadané URL podporuje delegaci OpenID. Pokud ne nebo pokud uživatel přihlášení odmítne, tak se příspěvek stejně uloží, jen se u URL následně nezobrazí, že bylo ověřeno. Zadávání příspěvků to trochu zpomalilo (protože se musí stahovat zadaná stránka), ale snad to nebude moc vadit.

Implementace

Pro implementaci jsem použil jednoduchou knihovnu LightOpenID, se kterou jsem spokojen. Pro jiný projekt jsem v minulosti použil OpenID Enabled a to je na mě trochu moc velký moloch.

Kód používá proměnnou $_POST["url"] a $_GET["id"] a nastavuje $openid a původní obsah pole $_POST si při komunikaci se serverem ukládá do session proměnné:

<?php
session_start();
$openid = "";
try {
    $lightOpenID = new LightOpenID($_SERVER["HTTP_HOST"]);
    $lightOpenID->returnUrl = "http://www.example.com/openid.php?id=$_GET[id]";
    if (!$lightOpenID->mode) {
        if ($_POST["url"]) {
            $lightOpenID->identity = $_POST["url"];
            header("Location: " . $lightOpenID->authUrl());
            exit;
        }
    } elseif ($lightOpenID->mode != "cancel" && $lightOpenID->validate()) {
        $openid = $lightOpenID->identity;
    }
} catch (ErrorException $e) {
    // don't mark as OpenID
}
?>

Ověření

Pokud chcete zpětně ověřit své předchozí příspěvky (můžete je najít pomocí vyhledávání), tak to uveďte v diskusi u tohoto článku. Pokud se zadané URL podaří ověřit, tak ověření nastavím i u všech předchozích příspěvků se stejným URL (pokud o to příspěvkem explicitně požádáte).

Jakub Vrána, Řešení problému, 1.8.2011, diskuse: 32 (nové: 0)

Diskuse

Jozef Šandor:

Človek by vzhľadom na okolnosti očakával skôr autentifikáciu prostredníctvom FB ;)

ikona Jakub Vrána OpenID:

To by takhle transparentně bohužel nešlo (vyžadovalo by to další prvek).

Dost už, že jsem přidal Like tlačítko :-).

Pari:

A co Google+ tlačítko? Ikdyž chápu, že k Facebook máš blíž ;-)

Pavel Král:

No tak jakube pro tebe je tlacitko like preci povinnost :)

Andrew:

Neodolám a musím vyzkoušet

Andrew OpenID:

No dobrá a nyní doopravdy. Nedočetl jsem to do konce (tu větu "nebo pokud přihlášení odmítne").
Je to hezké, byť to zúží skupinu uživatelů OpenID na ještě menší, neboť si nejsem jist, kolik z nich používá delegování ze svojí URL.
Ale jinak s tebou souhlasím. OpenID mám také rád a považuji jej za rozhodně lepší než třeba mail.

ikona Jakub Vrána OpenID:

Pokud někdo delegaci nepoužívá, tak se o ní tímto třeba dozví a používat ji začne. Pokud má stránku, která ho identifikuje (co jiného by zadával do políčka URL v diskusi), a zároveň OpenID má, tak je škoda delegaci nepoužít (mimo jiné proto, že to dovoluje kdykoliv změnit poskytovatele).

Andrew OpenID:

Jako osvěta rozhodně skvělé. :-)
Fakt je, že mě nenapadlo, že o delegaci mnoho lidí neví. Já osobně bych bez ní OpenId nepoužíval.
Když jsem se začal o OpenID zajímat, tak první bylo, zda to mohu rozchodit na svém serveru (přece nebudu spoléhat na nějakou free službu a nebudu používat nějakou "divnou" doménu). A když jsem pročítal, jak to rozchodit, dozvěděl jsem se o delegaci a volba řešení pak byla jasná.

Vilém Málek:

Kritizované spojení MojeID s CZ.NIC je IMHO právě v případě delegace velice šikovné, protože majitel domény si může velmi jednoduše MojeID pořídit přes poskytnuté rozhraní. Jediná chybička je, že použitelný identifikátor kontaktu je omezen pouze na čísla, písmena a pomlčku a nepočítá s identifikátory, které obsahují jiné znaky - třeba dvojtečku, jako v mém případě ;–)

Peter Lištiak:

Nie celkom tej delegácii rozumiem a na mojeid.cz som žiaľ nič nenašiel. Ako zistím informácie, ktoré potrebujem?
Na tvojom webe som našiel

openid.server => https://mojeid.cz/endpoint/
openid.delegate => https://mojeid.cz/id/PtgeotszmP/

Vyzerá to akoby id bolo unikátne pre každého použivateľa. Kde ho nájdem?

ikona Jakub Vrána OpenID:

U MojeID ho najdeš ve zdrojáku své stránky. V mém případě to je http://jakubvrana.mojeid.cz/ – to je vlastně stránka jako každá jiná, která také závisí na delegaci.

Ondřej Švec OpenID:

O nějaké delegaci jsem předtím taky neměl ani ponětí. Díky

Franta:

Delegování je základ, viz https://frantovo.cz/blog/?q=poridte-si-openid-seznam-cz Bez něj bych OpenID radši nepoužíval vůbec.

ikona Jakub Vrána OpenID:

Proč delegaci na https://frantovo.cz/blog/ nepoužíváš?

Franta:

Měl jsem ho na frantovo.cz/openid, ale to vzalo za své při nějakém upgradu serveru a ani mi to pak nějak nechybělo… viz http://zdrojak.root.cz/clanky/openid-pouceni-…/nazory/18467/ Mně se ta myšlenka OpenID líbí, ale motivace ho používat je hodně slabá…

Ale jo, asi si tu delegaci obnovím, aspoň abych vyzkoušel, jak ti to tu funguje :-)

ikona Jakub Vrána OpenID:

Díky za vysvětlení. Podle mě je delegaci vhodné umístit především na stránku, kterou člověk uvádí jako svou adresu. Vytvořením speciální stránky využiji jen polovinu možností, které delegace dává.

Franta:

Mělo tam být něco jako vizitka – odkazy na další moje stránky. To je celkem jedno… Hlavní výhodu delegace vidím v tom, že mám stabilní ID bez ohledu na aktuálního poskytovatele OpenID, a to platí i s tou zvláštní URL. Jiné výhody delegace moc nemá (to už jsou pak výhody OpenID jako takového).

Franta:

Tak to nějak nefunguje – přesměrovalo mne to na stránky openid.cz a tam jsem dal Povolit, ale ikona u mého příspěvku se stejně nezobrazuje. A taky tam bylo „Stránka, která se prokázala jako “ a nic (prázdný obdélníček – název chybí).

ikona Jakub Vrána OpenID:

Mě to bez problémů funguje i s OpenID (běžně používám MojeID). Nevím, v čem může být problém.

ikona Jakub Vrána OpenID:

Za druhou hlavní výhodu považuji, že jako svou identitu mohu uvést stránku, kterou považuji za vyjádření své identity. U mě to je http://www.vrana.cz/ nebo v PHP kontextu http://php.vrana.cz/. U tebe je to zdá se právě https://frantovo.cz/blog/, jinak bys tuto adresu neuváděl do políčka URL :-).

Franta:

Tady se ale míchají dvě věci – když je možnost vložit obyčejné URL, tak prostě vložím odkaz na svůj blog. Když se má zadat OpenID URL, tak vložím to – což nemusí být totéž – většinou, když se přihlašuješ pomocí OpenID, tak už žádné další údaje nezadáváš, protože stačí to jedno URL a všechny ostatní údaje (celé jméno, e-mail, přezdívka, osobní stránky, pracovní stránky, věk, pohlaví atd.) se můžou vytáhnout z OpenID profilu. Logičtější by bylo tu mít dvě možnosti: 1) zadat přezdívku a případně www stránky nebo 2) zadat OpenID

ikona Arcao OpenID:

Zkouška mikrofonu. Osobně moc OpenID nepoužívám. Nebyl zatím důvod a skoro vůbec nikde podporované není, což je bohužel škoda.

ikona genesis OpenID:

Testuji to taky.

ikona genesis OpenID:

test2. Omlouvám se. Mohlo by se tu zařídit mazání podle openID :)

ikona genesis OpenID:

Tak poslední. Teď by mi to nemělo projít

Ondřej Švec OpenID:

Zkouška nového openID.

Jde nějak přímo na MojeID.cz udělat public profil?

ikona Jakub Vrána OpenID:

To je spíš otázka na MojeID. Podle mě ne.

Jan Tojnar:

Zkouška OpenId od Google, snad už to teď bude fungovat

Jan Tojnar:

To už je čtvrtý způsob jak zadat local_id.

Jan Tojnar:

Poslední. Na http://stackoverflow.com/questions/2541526/…-apps/2545245 už nic není.

Jan Tojnar:

Tak ještě jeden pokus.

ikona yo2 OpenID:

test

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.