PushAll Auth — аутентификация и обратная связь с пользователем

da29da3dd9c44beb8fa1284c5b647e62.png
Для чего мы используем электронную почту? Чаще всего, мы используем Email для регистрации и входа на различных сайтах, а также чтобы держать связь с этими сайтами — они могут прислать вам информацию о вашем аккаунте, уведомления и прочее. Однако при такой регистрации вы даруете сайтам ваш постоянный Email, на который они смогут писать при любой возможности, и отписка не всегда может помочь. Ваш ящик может попасть третьим лицам и попасть списки рассылок спама. Антиспам хорошо –, но до разумного предела.

Мы уже давно позиционируем наш сервис как замену Email. И вот теперь мы подходим к возможности осуществлять вход на сторонних сайтах используя PushAll ID.
Ранее у нас уже была возможность указать Callback URL для получения ID, но сделать повторный вход было невозможно.

Из главных особенностей входа через PushAll можно выделить:

  1. Анонимность. Если вы заходите в PushAll через Google аккаунт без Google+ или через Email, то сторонний сайт узнает только ваш ID.
  2. Контролируемая обратная связь. Можно в любой момент отписаться от канала, он больше не сможет вас потревожить. Пока вы подписаны — вы будете получать мгновенные уведомления.

Мы реализовали кнопку «Открыть» после подписки и альтернативную OAuth-модель входа. Также в конце статьи расскажем о новом микросервисе, который мы сделали для Host-Tracker.com

Зачем нужна такая аутентификация?


Как минимум это полезно для микросервисов. Ранее нужно было делать на авторизацию через социальные сети, чтобы как то определять пользователя для сохранения настроек микросервиса. Теперь же получается 2 в одном — микросервис может отправлять уведомления, а PushAll реализует определение пользователя для хранения настроек или выполнения какой-либо другой механики.

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

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

При авторизации через PushAll пользователь уже будет ожидать привычную для него механику: авторизовался, получил доступ к сайту и возможностям доступным лишь для зарегистрированных пользователей, закрыл вкладку — точно уверен что придет уведомление. Авторизация пользователя через PushAll предполагает, что вы будете слать уведомления о событиях.

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

Как этим пользоваться?


Вам нужно указать ваш Callback URL и выбрать нужно ли вам использовать подход с получением ID используя протокол схожий с OAuth.

1c3566ba286743659517e6d8a1aea401.png

Вся механика работы такова:

  1. Вы размещаете ссылку вашего канала на вашем сайте, например pushall.ru/adminvk или ссылку с быстрым входом — pushall.ru/sign.php? subid=1586
  2. Пользователь переходит по ней и подписывается на канал
  3. В новом окне открывается ваш сайт, на который переданы данные для аутентификации пользователя

Если пользователь еще не зарегистрирован в PushAll — он может войти через Google-аккаунт после чего также перейдет на ваш сайт. Или же зарегистрироваться по почте и зайти через почту и также попадет в итоге на ваш сайт.

Он в любой момент также может нажать — Открыть и будет произведен переход по аутентификационной ссылке.

Есть 2 подхода проверки пользователя

Текущий подход без дополнительного запроса


Вам придут GET-параметры:

pushalluserid=ID&time=UNIXTIME&sign=ПОДПИСЬ
pushalluserid — ID пользователя

Для проверки подписи используйте md5(key.pushalluserid.time.ipAddress).

  • ipAddress: IP-пользователя
  • key — ключ вашего канала.
  • time — время с начала эпохи UNIX.

Вы можете сами определять уровень доверия по time — чем больше времени прошло тем меньше уровень доверия

Из недостатков данного метода — пусть и маловероятно, но данный запрос возможно подделать. Он даже может быть не сгенерирован у нас, а где то на стороне просто зная ваш ключ (если вы его где то указали вдруг)

Новый подход схожий с OAuth


Мы постарались передать «дух OAuth» оставив большую часть названий полей и ответ неизменным. Вам вернется code, который надо будет отправить через API чтобы получить ID пользователя.
pushall.ru/api.php? type=oauth&code=CODE&client_id=ID_КАНАЛА&client_secret=КЛЮЧ_КАНАЛА
Вы также можете передавать привычные id и key — скрипт понимает и то и другое.

Вам вернется JSON — {«access_token»:»1»}
Где 1 — ID пользователя.

CODE живет всего 5 минут, его нужно успеть передать за это время. Он одноразовый — то есть получить по нему еще раз ID не получится. По хорошему вам стоит указывать в Callback URL промежуточную страницу, которая будет обрабатывать CODE и аутентифицировать пользователя по принятому ID, и далее переходить уже на сам сайт.

Используя ссылку pushall.ru/sign.php? subid=ID_КАНАЛА можно аутентифицировать пользователя в один клик, если он уже подписан на ваш канал.

Про аутентификацию и авторизацию


По сути через PushAll Auth вы можете аутентифицировать пользователя, чтобы точно определить кто это, но также используя ID как токен, вы получаете возможность выполнять запросы к API в cистеме PushAll то есть вы получаете авторизацию в PushAll с ограниченным набором возможностей — отправкой Push-уведомлений.

Как это выглядит


Крупных примеров использования еще нет, но можно привести в пример созданный недавно нами микросервис для Host-Tracker.com
image

Присылает имя таски, статус, время даунтайма и время начала даунтайма. При клике — кидает на страницу аналитики таски. Ушло на все меньше 1 часа.

3e06e8271ca1498b9d2c977dca9f9550.png
Для использования нужно только подписаться на канал, вписать URL и сохранить.

image
Или же например можно взять AdminVK там схожая схема, кнопка «Открыть» переходит к настройкам микросервиса

4c8342160d284bc19a5319782ee167f1.png
Данные примеры сделаны при использовании внутренней авторизации PushAll, но ничто не мешает использовать передаваемые данные для аутентификации и работы этих сервисов.
Например есть сторонние IT-вопросник и MySeries в обоих используется сторонняя аутентификация, при этом сервисы в итоге используют только push-уведомления через PushAll.

Функционал еще на стадии тестирования и доработок, приветствуются предложения и фидбек.

Комментарии (3)

  • 1 февраля 2017 в 07:40 (комментарий был изменён)

    0

    Вам чем-то не нравится электронная почта, раз в её упоминании почти кругом употребляется корень «спам»?

    Что ж, минусы подхода, сразу:
     — для использования я должен дополнительно доверять сервису PushAll (раньше — только собственному почтовому серверу)
     — Push-уведомления — это из серии «здесь и сейчас» — они во многих ситуациях отвлекают
     — почту я читаю, когда вздумается, она сохранится на почтовом сервере, если что — как с этим обстоит дело в вашем подходе? Я читал про дополнение к Chrome — планируется ли поддержка других браузеров?

    Реклама. Я понимаю, что себя не похвалишь — кто тебя похвалит? Но писать утверждения вида «В 1000 раз эффективнее Email рассылок» я бы не стал. Как минимум до момента, пока Push-уведомления не начнут использовать полноценный HTML и собирать полноценную аналитику прочтений. Не стоит сравнивать ботинки и апельсины, чесслово.

    Да, и проверьте орфографию на вашем сайте, хотя бы на главной. «Эксперементально» таки режет взгляд.

    А так да, реализация достаточно интересная. Но поскольку полноценное использование таки платное, я пока понаблюдаю, подожду отзывов.

    Удачи.

    • 1 февраля 2017 в 08:26 (комментарий был изменён)

      0

      1. Основные кейсы использования были это чисто микросервисы для уведомлений, я не заставляю использовать например для авторизации в интернет-банке. Просто теперь можно не прикручивать еще поверх авторизацию в социальной сети, чтобы просто как то идентифицировать пользователя для предоставления сохранения настроек сервиса. Также нужно понимать, что с Email вы также должны доверять не только собственному серверу, но еще и внешнему серверу, на который вы отправляете почту. Более того — если предположить что вдруг захотят каким то образом войти под этим пользователем в системе, то они как минимум не знают логина, в почта всегда известен логин пользователя, но не известен только пароль. По ID нельзя авторизоваться.

      2–3. Мы уже писали статью — там есть и история, и приоритеты и время жизни. Например подписались вы на какой то сайт с онлайн трансляциями, вам приходят уведомления о том, что кто-то вещает. Но если вы пропустите уведомление например на 2–3 часа — оно не будет вам показано, так как время жизни пройдет, но в истории оно будет — можно будет кликнуть и перейти, к примеру, к записи трансляции.

      Насчет хранения истории и т.д. «Я читал про дополнение к Chrome — планируется ли поддержка других браузеров?»
      В любом браузере доступна история через интерфейс PushAll, даже без дополнения. Также если открыть например статью про IT вопросник https://habrahabr.ru/company/pushall/blog/320758/ там есть скриншоты того, как это все выглядит на мобильных устройствах. То есть по факту вы при авторизации пользователя получаете нативные пуши на его мобилки с историей, приоритезацией, временем жизни.

      Мы сейчас разрабатываем улучшения, к примеру режим не беспокоить, чтобы можно было в рабочее время нерабочие уведомления временно откладывать до конца рабочего дня. У нас даже есть раздел пропущенные — туда можно складывать то не должно отвлекать в рабочее время.

      image

      У нас есть полноценная статистика. Даже с учетом того, что например на Safari собрать её невозможно — все методы приёма вроде веб-пушей, дополнения и на мобильных устройствах позволяют отследить приём уведомления. На основе этого например будет скрывание уведомлений на других устройствах если вы их прочли уже на одном. И по этой статистике 80% кликов делается в течении первых 10 секунд, и если контент интересный то конверсия кликов за первые 10 минут достигает более 20%. К примеру если делать Email рассылку на 100 000 человек вряд ли вы будете расчитывать, что за 10 секунд вы получите хотя бы 100 кликов. Да даже 10 кликов маловероятно.
      По пушу за 10 секунд вполне 1% кликнет — вот вот уже 1000 кликов за первые 10 секунд как минимум. Разве это не в 1000 раз эффективнее? Особенно если вам нужно донести моментальную информацию.

      Также пользователь сам выбирает как получать ему уведомления. Он может получать их на почту выбрав время между отдельными письмами. Уведомления будут объединяться в общие письма в стандартизированном виде.

      Использование бесплатное. Платный тариф лишь добавляет некоторые косметические вещи и более приоритетную по скорости рассылку, в остальном отличий нет.

      Насчет ассоциации «Email — Spam» Тут очень большая связь так как Email не имеет защиты кроме спам-фильтра от недобросовестных рассылок. В PushAll вы нажимаете отписаться и вам больше ничего не получится прислать. Возможно мы еще проработаем этот момент так, чтобы можно было прислать ровно одно уведомление в этом случае.

      • 1 февраля 2017 в 09:25

        0

        > По пушу за 10 секунд вполне 1% кликнет — вот вот уже 1000 кликов за первые 10 секунд как минимум. Разве это не в 1000 раз эффективнее?

        На всякий случай напоминаю про существование часовых поясов. Не все ваши пользователи в Сети «прямщас». Так что аргумент не вполне работает.

        > У нас есть полноценная статистика.

        Можно как-то посмотреть? Насколько она сопоставима по подробностям с GA/Piwik?

        И вопрос, который вы не затронули: поддержка HTML. Без него конкурировать с почтой затруднительно.

        > Тут очень большая связь так как Email не имеет защиты кроме спам-фильтра от недобросовестных рассылок.

        С одной стороны — да, слабое место электронной почты — спам. Но для него уже изобретено множество костылей разной степени удобства. Осталось посмотреть, насколько удобнее для работы подписка на несколько десятков push-каналов по сравнению с подпиской на аналогичное количество рассылок.

        > Платный тариф лишь добавляет некоторые косметические вещи

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

        Обширную полемику по остальным пунктам затевать не стану. Мнится мне, эти способы уведомления (почта и push) всё же не взаимозаменяемы. Сейчас, по крайней мере.

© Habrahabr.ru