Стартап дня: платформа для авторизации пользователей на сайтах Auth0

Сервис предоставляет инструменты авторизации по подписке.

Директор по стратегии и анализу Mail.Ru Group Александр Горный каждый день рассказывает о примечательных проектах.

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

Появились социальные сети и вход на сайт с их помощью. Появилась Active Directory. Появилась двухфакторная аутентификация. Появились новые требования по безопасности и устойчивости к перебору. Появилась сертификация HIPAA. И всё это не только много кода, это всё много разного кода: разные библиотеки, разные SDK, разные API. Фронтенд теперь пишется для трёх платформ, а не для одной.

Американский стартап Auth0 написал современную авторизацию, оформил её в аккуратный SDK и продаёт по подписке. Рекламный слоган: «Начните программировать бизнес-идеи в первый день разработки, а не на четвертый месяц». Минимальный пакет бесплатен, максимальный публичный тариф — $1400 в месяц за 10 тысяч активных пользователей. При больших объёмах нужно индивидуально договариваться.

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

Те, для кого несколько центов на пользователя непринципиальны, остаются с сервисом навсегда, таких тоже много. Auth0 потратил $54 млн инвестиций, сейчас у него 3500 платящих клиентов и, судя по их пиару, это близко к пределу американского рынка. В последнем раунде компания привлекла $55 млн для международного развития.

0
12 комментариев
Написать комментарий...
Artem Golovin

Последние три месяца пользуемся Auth0 при ~2500 пользователях, нужна единая авторизация на нескольких продуктах. Наш продукт нишевый.
 
Из плюсов:
— не надо поддерживать собственный oauth сервер, который отключили и перевели пользователей в auth0;
— auth0 несет ответственность за данные пользователей, апдейты, защиту;
— у них быстрые серваки, и все работает из коробки;
— В мобильные приложения легко встроить, да и в веб несложно. Хотя занимает время. Это не 5 минут, это пара дней работы, учитывая всякие кейсы, рефреш токена, подтверждение имейла и так далее;
—Логи и по ним даже можно что-то понять;

Из минусов:
— Теперь на нашем сайте вместо модального окошка логина идет переход на сайт на auth0. Это раздражает + уход с нашего сайта;
— Можно сделать форму на сайте, но тогда невозможен рефреш токена. Т. е. рефреш только при условии логина через сайт auth0;
— Отсутствует локализация статусов сброса пароля и подтверждения регистрации, только на английском. Хотя локализовывается сам виджет. Ну как локализовывается — вручную переписывается текст, благо его можно менять :-) 
— Стиль виджета тоже меняется, но не сильно.
— Невозможно поменять пароль через апи с токеном юзера. Можно только сбросить с последующей отправкой письма и переходом на auth0 — усложнение жизни пользователю;
— Невозможно через апи запросить заново отправить письмо подтверждения имейла;
— Невозможно покрыть тестами "кастомные" правила/хуки (на js, кстати). Доки к ним не всегда правильные, кое-где устаревшие. И что глупое — невозможно тестировать вручную правило не сохраняя. Сохраненное автоматом попадает в продакшен и включается. Ну тут мы все знаем к чему приводит ручная проверка кода на продакшене :-) 
— Если что-то сломалось — удачи в поиске ошибки, ведь auth0 отдает довольно общую ошибку, а отдебажить их код невозможно. Если кто-то что-то не то прописал в конфигах — посмотреть историю изменений и откатить невозможно, не гит же.
— Ну и самое бесячее — сложно тестировать. Это касается как ручного тестирования, так и автоматических тестов. Особенно такие кейсы как рефреш токена или некие ошибки. Поэтому интеграция не настолько быстрая и приятная как кажется.

Ох, как-то длинно получилось. В целом, на беке все хорошо и приятно, но на фронте получаются костыли и не очень красивые нетестируемые решения, плюс редирект пользователей на сайт и формы auth0.

Ответить
Развернуть ветку
Dan Kozlov

Если не секрет, что за сервис? Почему решили отказаться от своей авторизации?

Вроде ж авторизация — проблема решённая давно (если не нужна куча примочек). Если у вас популярный ЯП и фреймворк, как правило есть настраиваемые библиотеки, которые можно подключить за три пинка.

Я не теоретик, если что, связка python+Django+django-allauth+django-rest-auth даёт регистрацию, авторизацию, серверные шаблоны, REST-API и поддержку 25+ соц.сетей. OAuth не настраивал, но и там пакетов куча.

Ответить
Развернуть ветку
Artem Golovin
Если не секрет, что за сервис?

https://goabout.com/ — мы делаем "транспортные" решения для муниципалитетов в Нидерландах, это апи планировщиков маршрутов (aka местные google maps), тачскрины с картами на крупных станциях, вело- и каршеринг, продажа билетов на транспорт и специфичные для отдельных провинций штуки.

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

Поэтому нужна единая система авторизации, независимая от продукта. И тут вступает в дело oauth2.

Почему решили отказаться от своей авторизации?

Потому что у нас очень маленькая команда, пять человек. Из-за работы с муниципалитетами, мы должны следовать всем стандартам: от банальных своевременных патчей и до GDPR ("General Data Protection Regulation", который как раз в мае вступил в силу).

Именно зарегистрированных пользователей у нас не так много, держать свой сервак авторизации и постоянно за ним следить/обновлять — дорого. Auth0 уже сертифицирована и берет на себя ответственность — и все это за €30 в месяц при нашей нагрузке.

Ответить
Развернуть ветку
Dan Kozlov

Да, в вашем случае правильное решение. В общем и целом довольны? Количественно минусов больше, чем плюсов, но качественно плюсы сильно перевешивают, конечно, особенно по части эффективности.

Ответить
Развернуть ветку
Alex Barashkov

— Невозможно через апи запросить заново отправить письмо подтверждения имейла;
Можно. Если нужно будет могу показать как.

Ответить
Развернуть ветку
Artem Golovin

Давай. Но чтобы с запрашивать напрямую с фронта, а не через бек и management API.

Ответить
Развернуть ветку
Alex Barashkov

А вот это у тебя в первом пункте не было написано :) Для себя проблем с инициированием этого через бэк и managment API не увидели.

Ответить
Развернуть ветку
Artem Golovin

Потому что это костыль для очень очевидной задачи. Юзер должен иметь возможность отправить себе новое письмо (с лимитами, конечно) ;)

Ответить
Развернуть ветку
Alex Barashkov

Знаю многих людей, которые по началу очень скептически относились к Auth0. Что-то вроде: зачем тут нужен third-party service, лучше сами напишем. Но если внимательно присмотреться, то Auth0 это - монстр. В нем столько уже всего понапихано и столько разных кейсов предусмотрено. Понятно, что в большинстве проектов Auth0 используется скорей всего на процентов 20% максимум. Тут вам из коробки
- защита против брутфорса
- авторизация через разные приложения
- рефреш токена, админка, логи(в том числе гео)
- мощное api
- возможность написания кастомных middleware на node, которые будут исполняться прямо на auth0
- встроенные email оповещения
- мультифакторная аутентификация, paswordless аутентификация
И это еще лишь самое основное. Делать с помощью Auth0 можно очень много вещей, но без нескольких дней чтения документации не обойтись, если конечно задача не просто сделать базовую аутентифицаию пользователя.

Ответить
Развернуть ветку
Vadim Belov

Артём а у них же там есть бесплатный пакет до 10к юзеров. Зачем платить?

Ответить
Развернуть ветку
Artem Golovin

У бесплатных аккаунтов нет custom domains, нельзя менять дизайн имейла и еще каких-то фишек нет.

Ответить
Развернуть ветку
Andrey Knyazev

Пользуюсь IdentityServer4, бесплатное, на net core, open source.

Ответить
Развернуть ветку
9 комментариев
Раскрывать всегда