Protokol OpenID řeší komplikace spojené s používání množství hesel při práci s Internetem. Uživatel nezřídka pracuje s desítkami služeb, kdy se přihlašuje na různě pojmenované účty pod různými hesly. Vznikají tak nepříjemnosti s nutností vytváření účtů, generování hesel, přechovávání informací o užívaných účtech a heslech... Navíc každý si může zřídit účet pro podvodné vystupování pod cizím jménem. Tyto problémy lze principiálně odstranit následujícími způsoby:
- Samotné uživatelské jméno kóduje veřejný klíč pro asymetrickou kryptografii. Identifikace probíhá podepsáním náhodné zprávy příslušným soukromým klíčem. (Což je přinejmenším nepraktické.)
- Přihlášení probíhá jen k jedné službě, která asistuje ostatním službám při ověřování identity. Tuto ideu realizuje právě protokol OpenID.
Jak pracovat s OpenID?
Jak to funguje? Uživatel se přihlásí na svůj OpenID účet. OpenID identita je zapsaná ve formě běžné adresy (například vas_web.cz/vase_jmeno, jmeno_uctu.id.seznam.cz, openid.cz/vas_ucet atd.). V okamžiku, kdy chcete prokázat svou totožnost před třetí stranou, sdělíte příslušné síťové aplikaci (např. webové služby elektronický obchod, diskusní fórum, mail provider, bankovní služby) "adresu" svého openID účtu. Následně webová aplikace pošle požadavky na tuto adresu a proběhne určitá automatická silnou kryptografií zajištěná trojstranná komunikace mezi prohlížečem, poskytovatelem openID účtu a webovou aplikací. Do technických se nebudu pouštět; stačí vědět, že ve výsledku webová aplikace zjistí, zda jste k OpenID účtu přihlášeni. Odpadá tak nutnost se speciálně registrovat pro každou službu vzlášť a následně při přihlašování zadávat různá hesla.
Tutorial na zprovoznění vlastního OpenID serveru
Zbytek zápisku obsahuje kuchařku, jak si zprovoznit OpenID účet na vlastním serveru. K instalaci využiji postarší jednouživatelský bezdatabázový svobodný (licence GNU GPL) server phpMyID, který vyžaduje jen server s Apachem, PHP a Linuxem. Bohatě postačuje prakticky jakýkoli webhosting na platformě LAMP. Rozhodl jsem se, že si zřídím na svém webovém sídle openID identitu openid.frantisekbartik.cz.
Odkazy :
- stránka ke stažení phpMyID http://siege.org/phpmyid.php,
- oficiální demoverze s možností přihlášení http://phpmyid.com/,
- přihlašovací menu pod referenční identitu http://openid.frantisekbartik.cz/. (Potřebné autorizační údaje nejsou zveřejněny.)
Jednotlivé kroky :
- V administrátorském rozhraní hostingu si vytvořím subdoménu openid. Stačí nastavit diskovou kvótu pro subdoménu na minimum (např. 1MB), protože server nezabírá ani desetinu megabytu. Pochopitelně v případě, že bych chtěl OpenID ve tvaru frantisekbartik.cz/openid, bych vytvořil příslušný adresář.
- Server si stáhnu z oficiálních stránek a rovnou jej uploaduju do subdomény.
- Soubor MyID.config.php definuje konfiguraci serveru a vlastní server si inkluduje ze souboru MyID.php. Soubor MyID.config.php přejmenuji na index.php, aby se automaticky interpretoval při požadavku na subdoménu.
- obrazím stránku openid.frantisekbartik.cz, kde se mi vypíše kompletní realm adresy (zde konkrétně řetězec realm-3816).
- Zvolím si jméno (např. jmeno) pro přihlášení k OpenID účtu a heslo (např. heslo). Zvolené jméno vepíši do řádku s 'auth_username' => 'test', takže řádek bude 'auth_username' => 'jmeno'. Údaj o heslu se zadávají ve formě md5 hashe přisoleného uživatelským jménem a realmem ve formě řetězce auth_username:realm:password. Takže v našem případě potřebuji spočítat md5 hash řetězce jmeno:realm-3816:heslo.
- Hash zjistím příkazem openssl md5 a vepsáním řetězce jmeno:realm-3816:heslo a jeho ukončením znakem EOF (zkratka ctrl+d) či spojením příkazů rourou echo -n "jmeno:realm-3816:heslo" | openssl md5 nebo jakýmkoli jiným způsobem. Výsledný hexadecimální řetězec 40e48abaf9a6bc91e3046e6739536e13 vložím do řádku nastavující hash hesla 'auth_password' => '40e48abaf9a6bc91e3046e6739536e13'.
- Případně můžu ve zbytku konfiguračního souboru nepovinně nastavit i osobní údaje předávané na vyžádání při identifikaci (např. jméno a příjmení, email, fotografii, pohlaví).
- V souboru htaccess odkomentuji jednu (nejlépe první) ze tří možností přesměrování při vyřizování požadavků a soubor přejmenuji jej na .htaccess.
- Otestuji funkčnost instalace.