На defaceit сделана авторизация через OpenId (Yandex) 
Потихоньку продолжаю работу над своей идей - defaceit. Очередным шагом стала реализация авторизации через OpenId. Пока используется только один источник для авторизации - Yandex. В будущем, возможно, прикручу и Google, но пока особой надобности в этом я не вижу. Далее немного о том, что сделано, что планируется сделать и какие проблемы возникли.
Сделано пока немного, выполняется стандартная регистрация, предусмотренная технологией OpenId, затем на базе данных, полученных от Yandex, создается обычная сессия, где в качестве “user id” используется параметр “display identifier“. Фактически used id используется для идентификации пользователя и определения его полномочий. На многих сайтах делается расширенный профиль пользователя, куда собирается дополнительная информация, но на defaceit ничего подобного я делать не планирую. По крайней мере пока.
В процессе тестирования на боевой системе возникла одна странная проблема, которая не проявлялась на домашнем полигоне - периодически после прохождения авторизации на yandex и возврате на мой сайт выдается сообщение о том, что в процессе регистрации произошла ошибка. Смотрю в лог и вижу следующее сообщение:
Error attempting to use stored discovery information: OpenID::TypeURIMismatch
При этом, все данные от Yandex передаются корректно, и сессия может быть создана успешно. В ближайшее время планирую разобраться с этим вопросом детально. Вообще, с OpenId я знаком поверхностно и, наверное, настало время познакомиться поближе.
После того как разберусь с ошибками, нужно причесать код, который я навоял. Я делал все по примерам, найденным в сети, поэтому остались довольно некрасивые ошметки. Да и сам код выглядит неопрятно. После того как все переосмыслю, постараюсь сделать так чтобы было красиво. Кстати, столкнулся с проблемой при написании тестов. Как оказалось совсем не умею писать тесты когда нужно много экспериментировать. Поэтому код был сделан без единого теста. В будущем нужно исправлять данный недочет.
подписаться на блог
Leave a Reply