Сервер авторизации OpenID на собственном домене
Вторник, февраля 10, 2009
Давно хотел приладить OpenID к своему домену в качестве сервера авторизации, что бы при комментировании можно было указывать адрес своего блога в том же ЖЖ.
Перепробовал массу готовых php скриптов (Prairie, phpMyID, PHP OpenID Server, Clamshell, NetMesh InfoGrid LID PHP, SimpleID). Одни не устраивали тем, что требуется база данных (зачем она нужна для одного аккаунта?), другие тупо не хотели работать с одним сайтом, но работали с другим. Надежного автономного решения так и не нашлось.
Почитав спецификацию OpenID выяснил, что можно делегировать проверку полномочий стороннему серверу. На этом и остановился. Считаю, что лучше пусть этим занимается полноценный сервер, нежели недоделанные скрипты.
А теперь по порядку:
1) Заходим на www.myopenid.com и регистрируемся. В итоге получаем для авторизации адрес типа youraccount.myopenid.com
2) Добавляем следующий код в секцию HEAD своего сайта:
<link rel="openid.server" href="http://www.myopenid.com/server" />
<link rel="openid.delegate" href="http://youraccount.myopenid.com/" />
<link rel="openid2.local_id" href="http://youraccount.myopenid.com" />
<link rel="openid2.provider" href="http://www.myopenid.com/server" />
<meta http-equiv="X-XRDS-Location" content="http://www.myopenid.com/xrds?username=youraccount.myopenid.com" />
На этом всё. Не правда ли просто? Теперь при авторизации на любом сайте где требуется OpenID вы можете использовать адрес своего сайта.
Там же в myopenid можно заполнить ваши данные (почта, пол, ФИО, возраст, дата рождения, язык и т.д.) которые если потребуются для какого либо сайта, то будут автоматически выданы сервером.
P.S. youraccount надо заменить на ваш логин полученный при регистрации.