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

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

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

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

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

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

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

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

33
12 комментариев

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

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

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

4
Ответить

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

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

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

Ответить

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

Ответить

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

1
Ответить

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

Ответить

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

Ответить

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

Ответить