Главное Авторские колонки Вакансии Образование
535 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

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

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

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. Вы размещаете ссылку вашего канала на вашем сайте, например https://pushall.ru/adminvk или ссылку с быстрым входом – https://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 пользователя.

https://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, и далее переходить уже на сам сайт.

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

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

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

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

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

0816adac6bcc410fa0bc099d815420b1.png

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

3e06e8271ca1498b9d2c977dca9f9550.png

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

9f79f9cdfc4040d9a53180d0ea168d6d.png

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

4c8342160d284bc19a5319782ee167f1.png

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

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

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

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.