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).
Diskuse
Človek by vzhľadom na okolnosti očakával skôr autentifikáciu prostredníctvom FB ;)
To by takhle transparentně bohužel nešlo (vyžadovalo by to další prvek).
Dost už, že jsem přidal Like tlačítko :-).
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 :
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.
Jakub Vrána :
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 :
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?
Ondřej Švec :
O nějaké delegaci jsem předtím taky neměl ani ponětí. Díky
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 :-)
Jakub Vrána :
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í).
Jakub Vrána :
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.
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
Arcao :
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.
genesis :
test2. Omlouvám se. Mohlo by se tu zařídit mazání podle openID :)
genesis :
Tak poslední. Teď by mi to nemělo projít
Ondřej Švec :
Zkouška nového openID.
Jde nějak přímo na MojeID.cz udělat public profil?
Jakub Vrána :
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.
Diskuse je zrušena z důvodu spamu.