Парк-ридер

RU

EN

В бюро разработали сценарий мгновенной покупки журналов и газет без регистрации — только с указанием непроверенного адреса электронной почты. Под капотом самое сложное — дать впоследствии доступ к купленному с любого устройства, сохранив высокий уровень безопасности. Ниже фрагменты технического задания.

Общие принципы

На сайте нет регистрации по инициативе пользователя. Любое получение нами информации о пользователе — это часть того процесса, для которого она нам нужна. Например, при подписке мы спрашиваем адрес электронной почты, чтобы позже присылать туда новые номера. При загрузке файлов — чтобы прислать ссылку на эти загруженные файлы. Таким образом, мы всегда даём пользователю мотив для ввода своих данных.

Использование пароля необязательно, но возможно, подробнее см. далее.

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

Человек имеет возможность и просто войти под своим именем, то есть представиться по собственной инициативе. Также человек может, наоборот, выйти с сайта, чтобы предупредить доступ третьих лиц к его данным.

Сбор данных об анонимном пользователе

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

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

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

Первое представление и вход на сайт

Словами «представление» и «вход» обозначаются процедуры узнавания или аутентификации для пользователя. То есть мы не говорим пользователю, что он может быть узнанным или аутентифицированным, это слишком сложно. Мы просто предлагаем ему представиться. Если он узнан и хочет получить доступ к кошельку, то есть надо пройти процедуру аутентификации, мы просто предлагаем представиться еще раз.

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

При входе мы спрашиваем адрес электронной почты и говорим, что туда отправится ссылка для входа. При получении письма человек кликает на ссылку и заходит на сайт.

Письма со ссылками для входа всегда отличаются от других писем (напоминаний и рекомендаций). Письмо со ссылкой для входа всегда просто текстовое, и в нём сказано, что по этой ссылке пользователь входит на сайт от своего имени. Там сказано, что это письмо нельзя передавать третьим лицам, так как они смогут поменять эл. адрес или создать пароль и лишить исходного пользователя доступа к собственным покупкам.

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

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

Имя или почта пишется в углу, если сайт узнал человека. Это единственное внешнее отличие сайта для узнанного и анонимного пользователей.

Основной способ входа

Основным способом входа является вход по почте и паролю. «Основной» — означает, что везде, где пользователь будет осуществлять вход, он будет сразу видеть привычную форму входа с двумя полями ввода (почта и пароль).

Нужно отметить, что вход (аутентификацию в терминах ТЗ) пользователь осуществляет в небольшом количестве случаев. То есть на сайте будет как минимум две формы ( «формы» в концептуальном смысле этого слова) — форма, которая предлагает пользователю ввести почту, чтобы что-то не потерялось и т. д., и форма входа. Важно понимать, что на первой форме будет только одно поле для указания почты, потому что это не форма входа; а на второй, в соответствии с понятием «основного способа входа», будет два поля: для почты и пароля. И, соответственно, аутентификация через соц. сети будет доступна тоже только на второй форме.

Пароль

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

При любом входе на сайт помимо поля для электронной почты есть галочка «у меня есть пароль, и я хочу зайти по нему».

Процесс откладывания, покупки и подписки непредставившимся пользователем

При откладывании материалов мы пишем: «Представьтесь, чтобы отложенное не потерялось». Пользователь может указать свой электронный адрес, и мы отправим ему ссылку для входа на сайт, которая будет содержать код узнавания и вести в его отложенные материалы. Если пользователь уже был на сайте ранее и откладывал что-то, а в этот раз сайт его просто не узнал, то когда он перейдёт по ссылке из письма, в отложенном у него будет всё, что он когда-либо откладывал.

Если непредставившийся человек пытается что-то купить или на что-то подписаться, мы спрашиваем его адрес электронной почты (объясняем, что пришлём туда ссылку для доступа к купленному в будущем, или будем присылать туда новые выпуски — в случае подписки). Если он до этого что-то уже покупал, значит по ссылке будет всё купленное им когда-либо.

Естественно, после покупки купленное доступно в браузере сразу, без похода в почту. Ссылкой в почте можно воспользоваться в будущем, либо в случае чтения с другого устройства.

Для покупки и подписки обязательно указывать почтовый адрес.

Другие процессы, которые требуют узнавания пользователя (непубличные настройки, загрузка файлов), работают так же.

Использование денег со счёта

Пользователь может выбрать метод оплаты, и одним из вариантов является «из моего кошелька в Парке». При выборе этого метода оплаты анонимным или узнанным пользователем мы просим его аутентифицироваться (отправляем ему письмо со ссылкой, подтверждающей именно эту покупку). Пока аутентификация действительна, пользователь может покупать из кошелька беспрепятственно.

Там же мы предлагаем ему активировать «покупку в 1 клик», предупреждая о том, что это потенциально небезопасно и рекомендуется только в том случае, если кроме него этим компьютером никто не пользуется.

Определение статуса пользователя

Всего есть три кода, связанных с пользователем:

1. Идентификатор пользователя (может быть только в куке, хранится вечно).

2. Код сессии узнанного пользователя (может быть в куке и УРЛе, по решению пользователя хранится вечно или на время работы браузера)

3. Код сессии аутентифицированного пользователя (может быть в куке и УРЛе, хранится на время работы браузера, также может устареть на сервере)

При выходе все три куки, если они есть, удаляются.

Алгоритм определения статуса показан на схеме:

Loginza.ru — это сервис, который предоставляет возможность аутентификации через популярные социальные сети. Сервис взят в качестве примера.

Клиент реализовал собственный сценарий покупки.

Схема покупки, откладывания и переноса данных:

Алгоритмы покупки, откладывания и переноса данных:

Запросивший аккаунт — аккаунт, найденный по коду из ссылки (содержащей код узнанного или код аутентификации), по введенному паролю или при аутентификации по телефону и т. д.

Локальный аккаунт — аккаунт, который привязан к текущему компьютеру (этот аккаунт можно получить из куки или аналогов).

Обратите внимание, что при поиске аккаунта по данным, полученным
от loginza.ru, аккаунт ищется не только по идентификатору loginza.ru, но и по почте.

Работа авторизационных механизмов на примере некоторых сценариев

Первый раз на сайте:



Везде при определении статуса вызывается «Алгоритм определения статуса».

Ежедневное анонимное использование сайта:

Пользователь просто открывает сайт и пользуется.

Ежедневное использование в режиме узнанного:

Пользователь просто открывает сайт и пользуется.

Человек отложил книгу:

Случайный прохожий:

Николай пересылает себе:

Спамер шлёт Николаю:

Поделилась с подругой:

Создание пароля:

Регистрация телефона:

Доступ в кошелёк:

Вход через социальные сети:

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

В случае успешного входа loginza.ru возвращает тоукен, по которому можно получить идентификатор пользователя и другие данные.

Для реализации входа через социальные сервисы в базе, кроме поля с кодом пользователя, должно быть поле с неким идентификатором, который получается от сервиса loginza.ru.

Эта диаграмма повторяет действия на диаграмме «Алгоритм определения статуса», для ясности.

Если пользователь аутентифицируется при помощи социальной сети, API которой позволяет использовать её в качестве альтернативы электронной почты (например ВКонтакте, Фейсбук), то истинный аккаунт создаётся с привязкой к этой социальной сети и все сообщения, уведомления и т. д. отправляются в аккаунт пользователя в этой соц. сети. В таком истинном аккаунте даже может не быть почты, так как некоторые соц. сети не возвращают её.




© 2012

Дизайн-бюро
Артёма Горбунова

Вакансии
Пишите: mail@artgorbunov.ru

Большая Новодмитровская улица, дом 36, строение 2
Москва, Россия, 127015

 495646-84-89