Снова о беспарольном входе

Tags: 

Наконец-то собрался, нашел поставил модуль, который делает беспарольный вход "одним кликом" через аккаунты на ЖЖ, гугле, яндексе и прочих сервисах. То, что у меня стояло раньше, я написал сам на коленке, а довести до ума у меня все руки не доходили. И вот, оказалось, что уже года два как существует модуль OpenID Selector, который позволяет входить без пароля владельцам аккаунтов на следующих сервисах:
- Яндекс
- Rambler
- Google
- Yahoo
- Livejournal
- Flickr
- Wordpress
- и еще ряде других

Особняком тут стоят Mail.ru и Facebook. В изначальную поставку оно не входит, но можно подключить и их тоже в виде отдельного расширения, причем к OpenID это уже не имеет никакого отношения - там работает какой-то другой принцип, через специальные ключи, которые нужно получить от самих Mail.ru и Facebook.

В общем, вход через Mail.ru я подключил, но у пользователей, раньше заходивших ко мне через Mail.ru, наверняка возникнут сложности. Новых вроде бы принимает без проблем.

Попутно сделал FAQ по преодолению возможных сложностей и вынес его в верхнее меню.

Приглашаю всех желающих экспериментировать с новым модулем и делиться результатами :)

UPDATE: За самоуправство модуль Mail.ru отключен до выяснения. Старый способ входа через Mail.ru по-прежнему остается, но только через кнопочку под постами/комментариями, в левом верхнем углу экрана соответствующей кнопочки нет.

Комментарии

О, в этот раз меня опознали сразу (гугло-аккаунт открыт в соседнем окне). Раньше при заходе не опознавалась, надо было нажимать кнопочку G.

А поменяй таки кнопку "сохранить" под комментом на "отправить". Или это невозможно? Помню, что обсуждали, но не помню, к чему пришли.

Изображение myx

Тебя опознали, потому что еще не забыли с прошлого твоего визита :) На самом деле с точки зрения входа через Гугл ничего принципиально не изменилось, просто появилась еще одна кнопочка G.

Обсуждали, да... я поковырялся, но достаточно элегантного и идеологически верного способа сделать это не нашел. Да, можно грязно влезть в потроха CMS-ки и переименовать, но это как-то неправильно. Я еще покопаюсь, может, чего найду все-таки.

я, честно говоря, не помню, когда заходила в предыдущий раз. то есть не могу оценить, насколько долго оно меня помнит :-)
кнопочка G в этот раз не понадобилась, поэтому появилась она или нет - я тоже не могу оценить :-) как "сразу опознанная" я вообще не вижу никаких кнопочек для авторизации.

Изображение myx

(голосом Кортнева): "Тоже верно!" :)

Изображение myx

Ура, я таки нашел элегантный способ! Спасибо чуваку по имени Stoob на форуме друпаловодов, он предложил отличное решение. Проверяй :)

Только при редактировании комментария я все же оставляю "Сохранить" - оно в этом контексте, по-моему, логичнее, нет?

о, теперь совсем красота!
редактирование: :-)))))

Изображение myx

Вот кстати, что обидно: при редактировании уведомление не посылается :( И как это побороть, я пока не знаю.

ну ты ж не ищешь легких путей: сам создаешь трудности, сам преодолеваешь :-)

Изображение myx

Я ищу свой, особый путь :) Главное при этом не создать слишком уж больших трудностей окружающим :)

Изображение myx

ну ты ж не ищешь легких путей: сам создаешь трудности, сам преодолеваешь :-)

а чего это ты дразнисся??? :-)))

Изображение myx

Эм... "я сама офигела!"

Ща буду пробовать разобраться, как это получилось...

Изображение myx

Аккаунт начал жить своей жизнью. Еще и аватарку из Mail.ru высосал и поставил вместо прежней. Отключу щас нафиг эту Mail.ru :(

Изображение allucinazione

Вот! фиг знает, с чего я вошла, но с ЖЖ оно меня, похоже, так и не пускает. А если пустило с гугла, откуда оно помнит ЖЖ-шный ник?

Изображение myx

Ты писала "Allucinazione" вместо "allucinazione", а ЖЖ при проверке OpenID требует, чтобы все буквы были строчными. Добавил еще один раздел в FAQ, спасибо! :*

А ник у тебя здесь просто-напросто такой же, как и в ЖЖ. Неважно, через что заходить: хоть через Гугл, хоть через ЖЖ, хоть через что еще - ник от этого не изменится :)

Тестирую эту штуковину, вроде работает. Влад, а ведь интересно. Если уже появился готовый софт, который удобно авторизует пользователя почти через всё разумное, то зачем вообще нужны блогоплатформы?

я вот попробовал войти через WordPress - фиг, начал мне мозг компостировать твой движок. Давай, мол, заводи тут аккаунт, привязывай свой вордпрессовский openid к чему-то там... Да какое ему, нахрен, дело до моего вордпрессовского openid? я авторизовался? авторизовался! чего ещё он, сукин сын, хочет? Жутко навязчивая штуковина.

я так это вижу, дружище, что вся эта сторонняя авторизация лишена смысла, если мне не достаточно просто авторизоваться на wordpress, чтобы оставлять тебе комментарии!

ещё чуток поэкспериментировал. в общем, действительно, вся эта штуковина, что ты прикрутил, всё равно считает, что есть некий мой аккаунт у тебя, и он первичен. а всё остальное - это просто запасные ключи к одной и той же двери моего шкафчика у тебя в блоге. ну так вот плохая идея, по-моему. у меня уже есть аккаунты на гугле, фейсбуке и вордпрессе, и они УЖЕ меня отлично идентифицируют. так зачем меня вообще привязывать в явном виде к аккаунту у тебя? если это важно для работы блога, почему нельзя создать мне аккаунт втихаря? зачем мне какую-то анкету показывать?

это я не тебя критикую, а блогоплатформу, ты-то круто сделал, что прикрутил внешнюю авторизацию. не хватает ещё лишь одного шага - отказа от твоего блогопаспорта для всех. это как если я в Эстонию попробую въехать, а мне эстонские погранцы начнут навязывать свой паспорт. Только с ним никуда меня не пустят, потому что он годится только для иностранцев в Эстонии и больше ни для чего! Так зачем, спрашивается, давать его, если у меня есть уже свой паспорт?

А про блогоплатформу моя мысль такова - если мы научимся качественно авторизовывать пользователей извне, то не будет вообще никакого смысла ставить блогоплатформы. Достаточно станет просто писать примитивные странички с текстами, а внизу - прикрутить простым скриптом форму для комментов с внешней авторизацией.

Изображение myx

Привет! Спасибо за обстоятельное тестирование! Пока я тебе писал ответ, ты уже сам во всем разобрался :)

Я в общем согласен и не согласен с твоей точкой зрения насчет того, что первичность внутреннего аккаунта - это плохо. Должна же блог-платформа где-то хранить твой профиль: аватарку там, преференции какие-то базовые и прочую фигню :) Плюс это банально удобно, когда тебе пофигу, чем авторизоваться, а система тебя всегда узнает, как одного и того же человека, а не разных пользователей.

Но в другом ты совершенно прав: это должно быть абсолютно прозрачно для пользователя. К сожалению, совсем прозрачно не получается - и в не в последнюю очередь благодаря идиотской друпаловской идеологии: у пользователя обязательно уникальный email и уникальный ник. Плюс к этому довешивается не совсем дружественная реализация модуля OpenID: если произошла ошибка любого рода - добро пожаловать на "дефолтную" регистрацию. Кое-где этот модуль допилен до вменяемого состояния (например, на flibusta.net): там, если есть подозрение, что ты уже регистрировался ранее, тебе просто предлагают добавить новый ключик к существующему аккаунту. Но у меня не хватило сил сделать так же, а просьбу прислать исходник модуля флибустовцы проигнорировали.

Что же касается комментов с внешней авторизацией - есть замечательная платформа под названием Disqus, которая работает как раз по предложенной тобой схеме. Я в свое время так и не собрался ее прикрутить (уже не помню, что помешало), а сейчас психологический момент уже упущен, наверное.

Попробовал с андроидофона (сейчас пишу не с него - там батарейка села). Авторизоваться сумел нормально через Гугл, но, что меня удивило (и это явно не твоя, а гугловская проблема) - это что хотя мой телефон отлично знаком с моим аккаунтом и, как я понимаю, хранит его в себе, когда я нажал гуглокнопку у тебя, он отправил меня сперва на account.google.com авторизовываться. Чортъ, какой же он тупица, Гугл мог бы и сам понять, что я уже авторизован!

Касательно первичности твоего аккаунта, я тут подумал ещё... Смотри, мой мухоаккаунт нужен для двух причин. Первая, не особо важная, - это поддержание моего профиля - имя, аватарка, вся фигня. Вторая, изрядно важная, - это мой емэйл. Важно оно потому что я наверняка захочу получить на почту ответ на мой коммент. Вот представим себе, что ты сделал то, что я предлагаю - авторизовал меня только через Вордпресс, не пытаясь сопоставить мой вродпрессовский аккаунт с моим аккаунтом на Мухе. И как ты тогда узнаешь, как мне прислать ответный коммент на почту? Вордпрессу до твоих нужд, я уверен, дела нет, наверняка он не выдаст тебе мою почту или ещё какой-то способ прислать мне уведомление (хотя было бы куртуазно предоставлять такую услугу). А если тебе нужно знать мою почту, то это то же самое, что ты и делаешь с выдачей мне мухоаккаунта. Разве что можно было сделать чуть вежливее, предложив опционально заполнить мне поле с почтой при отправке коммента.

Но мне вот что подумалось. Давай мы сейчас мысленно представим себе, что ты только открываешь свой блог и волен делать всё, что хочешь - с нуля. Тогда есть отличный интерфейс, чтобы кто угодно мог оставлять тебе комменты, авторизуясь самостоятельно и не у тебя. Ты выдаёшь каждому посту и комменту ID на Мухе. Предположим, этот пост имеет ID = 1, а мой первый коммент к нему имеет ID = 2. Под твоим постом и под моим комментом есть ссылка "Ответить". Эта ссылка имеет вид a href = mailto: - или как оно там пишется, а адрес после mailto содержит ID поста или коммента. Например, replyTo1@myx.ostankin.net. Если придумать, как тело коммента вставлять в письмо по клику, то можно даже форму редактирования коммента оставить на твоей странице.

Преимущества этого подхода:
1. Любой твой комментатор САМОСТОЯТЕЛЬНО авторизуется СВОЕЙ почтой, и ты вообще не делаешь никакой работы по его авторизации.
2. Ты знаешь почту того, кто написал тебе.
3. Ты можешь сам сделать белый список тех, чьи комменты видны сразу, а всех остальных скринить.
4. Имя автора и аватарка берётся из почты.
5. Если это внедрить, то вся блогоплатформа целиком настолько проста, что тебе не нужен движок вовсе, я сам такое за неделю напишу, и для разработки тебе не нужно ВООБЩЕ НИЧЕГО - только PHP. даже СУБД не нужна!

Минус этого подхода, например, таков, что ты не можешь проверить, что ты получил письмо с настоящего емэйла, а не с фейка. С другой стороны, чем это тебе грозит? Это же твой личный сайт!

UPD: твой блог не любит теги и не делает им escape!

Сделать текстовое тело письма с веб-странички оказалось очень просто! http://stackoverflow.com/questions/5620324/mailto-with-html-body

Изображение myx

Ну вот кстати да. Странно, что когда в строчке поиска набираешь запрос, он тебе в браузере выдает уже сформированный под тебя ответ (т.е. фактически авторизует), а вот для всего остального - фигушки. Но это еще что - до недавнего времени я даже не мог "лайк" сделать в андроидном Youtube - просил авторизоваться. Вроде починили с последним апдейтом.

Вордпрессу до твоих нужд, я уверен, дела нет, наверняка он не выдаст тебе мою почту или ещё какой-то способ прислать мне уведомление (хотя было бы куртуазно предоставлять такую услугу).

Еще как куртуазно! Более того, протокол OpenID такое предусматривает, но вот реально отдает почту, по-моему, только Mail.ru (ну, еще Яндекс, но после некоторых плясок с бубном). Все остальные страдают паранойей - хотя, по-моему, очевидно, что если я разрешил сайту меня авторизовать, то практически стопроцентно также не буду против разрешить ему знать мою почту.

У твоего подхода я вижу два минуса. Во-первых, он предполагает наличие на компе email-клиента, настроенного под данного конкретного пользователя, что в общем случае совсем не гарантируется (я уж молчу о том, что мало кому захочется отвечать через почту). Комп может быть чужим (а еще много где сохранились оффлайновые почтовые клиенты типа TheBat!), это может быть сотовый телефон, где связь браузера с почтовым клиентом ужасная, это может быть работа, где личная почта не разрешена в принципе :)

А во-вторых, все-таки возможность подделать личность, не прибегая к какому либо взлому вообще - это плохо по определению. Одно дело, когда нужно брутфорсить пароль или внедрять клавиатурного шпиона, или еще как-либо перехватывать управление аккаунтом - и совсем другое, когда достаточно просто проставить в своем почтовом клиенте обратный адрес нужного человека.

Ну и без СУБД все-таки не обойтись хотя бы по той причине, что сами комментарии хранятся в ней :) Хранить такие вещи в файловой системе - это редкостное извращение :)

P.S. Теги - да, не любит. Разверни формочку "Формат ввода" и увидишь, что там разрешено, а что нет.

Можно, в принципе, завести категорию Trusted Users и разрешить им Full HTML - как ты на это смотришь? Или забить на паранойю и разрешить всем? Админку-то в любом случае никто испортить не сможет.

Привет-привет!

Давай отвечу на претензии к моей идее почтового блогодвижка по пунктам, как я их вижу.

1. Почтовый блогодвижок плох тем, что предполагает удобную реакцию браузера пользователя на mailto

Насколько я видел, Гугл постоянно предлагает стать основным почтовым клиентом без инсталляции софта. То есть все мои браузеры на mailto реагируют переходом на новый таб с гуглом. Но - да - твоё возражение совершенно справедливо. Не будучи настроенной, эта вещь может вообще не заработать. Я уверен, что с этим можно разумно справиться, но у меня нет готового ответа на эту претензию. Буду думать.

2. Поддельная идентификация

Я могу тебе без особого труда выслать емэйл от тебя самого или от кого угодно, кого я видел в твоём Гуглоплюсе. И ты не сможешь отличить, скорее всего, этот емэйл от оригинала. Так емэйлы работают, увы. И тебя не напрягает ими пользоваться при этом! Потому что авторизация нужна на исходящую информацию, а не на входящую. Тут я предлагаю один нестрашный шаг в сторону полного раздолбайства - теперь непроверенные емэйлы в блогодвижок будет видеть не только хозяин блога, но и весь инет - ну и ладно! Неужели личный блогохостинг заслуживает паранойи? А что может случиться? Мне в блогохостинг могут прислать какашку якобы от тебя? Ну и что? Я уберу эту какашку почти моментально!

3. Файловая база данных - изврат

Дело вкуса, дружище! Я не особо боюсь файлов, в некоторых случаях они куда удобнее!

В общем, серьёзная проблема одна - юзабельность mailto.

А по поводу тегов у тебя в блоге - нет, мне вряд ли понадобится вставлять произвольные теги в твой блог. Просто я не ожидал, что они не будут проэскейплены, написал знак-больше тег знак-меньше, искренне ожидая увидеть в теле коммента потом именно это, а не сломанную гиперссылку :) Я думаю - наоборот, HTML-теги в твоём блоге никому не нужны ;) По мне, достаточно, как в гуглоплюсе, оставить подчёркивания и звёздочки и автоматически делать http-линки гиперссылками.

Изображение myx

По второму пункту ты, в общем, сам все ниже расписал. Да, я могу легко прикинуться отправителем письма, но я не могу прикинуться его получателем. И до тех пор, пока авторизация упирается в возможность получить письмо, отправленное на конкретный адрес - все будет нормально. А если авторизация будет приравниваться к возможности отправить письмо с определенного адреса - это, считай, и нет никакой авторизации :) Кстати, по-моему, по такому принципу работает NNTP - и где сейчас NNTP? :)

Я просто немножко объясню свою позицию: мне не хочется тратить слишком много сил на поддержание порядка в блоге - я и так трачу их несколько больше, чем хотелось бы. Вот как раз сегодня утром какой-то умник из Штатов понаоставлял за один раз мне семь комментариев со спамом в разных местах. Неделю назад ко мне повадился ходить какой-то чувак из Могилева, регистрируя каждый раз новый аккаунт и заходя с нового IP-адреса. Несколько дней подряд мы с ним играли в догонялки: он гадит, я чищу, убиваю аккаунт, он через двенадцать часов приходит снова, заводит новый аккаунт и опять гадит. Автоматическая спамоловка StopForumSpam, базирующаяся на IP-адресах и емейлах, против него бессильна - он не ленится каждый день заводить новый email :) В итоге написал на него кляузу белорусским МТС-никам, с чьих адресов он ходил - посмотрим, будет ли результат. Но пока вроде затих.

Но при всем при этом мне хочется оставить политику "все, что не запрещено - разрешено". Поэтому я и не ввожу премодерацию комментариев и аккаунтов, не запрещаю HTML и вообще стараюсь максимально облегчить жизнь юзерам (правда, получается пока фигово).

Файловая база данных - это банально ненадежно. Я не знаю ни одного механизма, позволяющего на PHP реализовать транзакционность и синхронизацию. Даже при моих двух с половиной пользователях работа с файловой системой может оказаться причиной самых экзотических глюков :)

А вот насчет тегов ты, пожалуй, прав. Но и совсем от HTML отказываться тоже не хочу. Я сделаю вот что: попробую в ближайшее время прикрутить какой-нибудь модуль, позволяющий писать комментарии WYSISYG-редактором. Вчера пытался поставить CKEditor, но сходу не получилось. А так - убью двух зайцев: и форматирование можно будет делать, какое хочешь, и сюрпризов вроде пропавшего знака "<" не будет :)

По поводу идентификации - должен добавить, тут есть ещё один неприятный момент насчёт безопасности, который хуже, чем просто защита от единичной какашки. Представь себе, что у меня есть white-list людей, чьи емэйлы-комменты попадают ко мне в блог без премодерации. В этом уайт-листе, разумеется, отказываются сразу все мои знакомые и все, кто окажется моим знакомым, и все, кто просто разумен. И вдруг, например, приходит злой нашист и хочет вывести мой блог из строя. Он берёт и публикует в комментах "руководство по суициду" как емэйлы от имени-адреса всех моих знакомых, которых он старательно выискивал в Сети. Естественно, мне придётся в ответ убрать white-list и надолго парализовать этим мой блог.

Что с этим делать? Фиг знает... Самое просто - рассылать моим знакомым, например, кодовое слово и просить вставлять его в конце письма. Оно не попадёт в комментарий и будет как бы паролем для фильтра уайт-листа. Но так ли это лучше обычной, старой-доброй авторизации...

А вот как ты думаешь, есть ли способ, как почти в 100% случаев проверить истинность адресата письма без дальнейшей переписки с ним? По message ID или ещё как-то?