Pull to refresh

Создаём свой персональный OpenID

Reading time2 min
Views2.2K
В последнее время стало популярным использование OpenID. Это удобно, быстро и по-современному.
OpenID — это открытая децентрализованная система единого входа, которая позволяет использовать один логин и пароль на большом количестве сайтов. На сайтах, поддерживающих OpenID, пользователям не приходится регистрироваться и помнить данные для каждого сайта. Вместо этого им достаточно быть зарегистрированными на сайте «провайдера идентификации» OpenID (предоставляющего идентификатор). Так как технология OpenID децентрализованная, то любой сайт может использовать программное обеспечение OpenID в качестве средства входа; OpenID решает проблему не полагаясь на централизованный сайт для подтверждения подлинности пользователя. (Wikipedia)

Лично для меня некоторое время создавало трудность запомнить строку ainu.myopenid.com. Со временем я, конечно, её запомнил, но теперь везде вместо ainu.myopenid.com пишу ramainen.ru (моя страничка, её то я запомнил), и сервисы меня прекрасно понимают. Конечно, я не стал OpenID провайдером, но вспоминание и ввод моего OpenID стал гораздо проще.

Сделать такое самому очень просто. Но для этого нужен персональный сервер (хостинг, можно бесплатный) с поддержкой php, asp или любого другого языка. Ну или такой сервер(хостинг) у друга, который по доброте сделает это на поддомене ник.красивыйадрес.ru.
Суть идеи проста: когда сервис запрашивает OpenID сервер, он посылает в заголовке параметр USER_AGENT
[«HTTP_USER_AGENT»]=>
string(40) «php-openid/2.1.1 (php/5.2.6) curl/7.15.5»

В php это выдирается при помощи $_SERVER[«HTTP_USER_AGENT»];
Если такой заголовок имеется в наличии, то необходимо перенаправлять браузер на свой зарегистрированный OpenID провайдер (например ник.myopenid.com).
В php готовое решение очень простое: в index.php (или в другой главный php-файл) первыми строками пишем следующее:
if (strpos($_SERVER["HTTP_USER_AGENT"],'openid')!==false){
  header("Location: http://ainu.myopenid.com/");
  //вместо ainu.myopenid.com подставьте свой OpenID
  exit();
}


Проверяется наличие подстроки openid (а вдруг они версию поменяют).
Проверял на МирТесен и в коментариях на паре блогов.
Tags:
Hubs:
+27
Comments51

Articles