На уровне прототипа и первых тестов экономика всегда оправдывается, разработка стоит дороже. Потом, когда бизнес масштабируется, можно потратить время на перевод всей информации к себе. Auth0 пользовательские данные, конечно, отдаёт. В итоге выйдет переплата, но время и деньги на старте куда важнее, чем в середине пути.
Последние три месяца пользуемся Auth0 при ~2500 пользователях, нужна единая авторизация на нескольких продуктах. Наш продукт нишевый.
Из плюсов:
— не надо поддерживать собственный oauth сервер, который отключили и перевели пользователей в auth0;
— auth0 несет ответственность за данные пользователей, апдейты, защиту;
— у них быстрые серваки, и все работает из коробки;
— В мобильные приложения легко встроить, да и в веб несложно. Хотя занимает время. Это не 5 минут, это пара дней работы, учитывая всякие кейсы, рефреш токена, подтверждение имейла и так далее;
—Логи и по ним даже можно что-то понять;
Из минусов:
— Теперь на нашем сайте вместо модального окошка логина идет переход на сайт на auth0. Это раздражает + уход с нашего сайта;
— Можно сделать форму на сайте, но тогда невозможен рефреш токена. Т. е. рефреш только при условии логина через сайт auth0;
— Отсутствует локализация статусов сброса пароля и подтверждения регистрации, только на английском. Хотя локализовывается сам виджет. Ну как локализовывается — вручную переписывается текст, благо его можно менять :-)
— Стиль виджета тоже меняется, но не сильно.
— Невозможно поменять пароль через апи с токеном юзера. Можно только сбросить с последующей отправкой письма и переходом на auth0 — усложнение жизни пользователю;
— Невозможно через апи запросить заново отправить письмо подтверждения имейла;
— Невозможно покрыть тестами "кастомные" правила/хуки (на js, кстати). Доки к ним не всегда правильные, кое-где устаревшие. И что глупое — невозможно тестировать вручную правило не сохраняя. Сохраненное автоматом попадает в продакшен и включается. Ну тут мы все знаем к чему приводит ручная проверка кода на продакшене :-)
— Если что-то сломалось — удачи в поиске ошибки, ведь auth0 отдает довольно общую ошибку, а отдебажить их код невозможно. Если кто-то что-то не то прописал в конфигах — посмотреть историю изменений и откатить невозможно, не гит же.
— Ну и самое бесячее — сложно тестировать. Это касается как ручного тестирования, так и автоматических тестов. Особенно такие кейсы как рефреш токена или некие ошибки. Поэтому интеграция не настолько быстрая и приятная как кажется.
Ох, как-то длинно получилось. В целом, на беке все хорошо и приятно, но на фронте получаются костыли и не очень красивые нетестируемые решения, плюс редирект пользователей на сайт и формы auth0.
Если не секрет, что за сервис? Почему решили отказаться от своей авторизации?
Вроде ж авторизация — проблема решённая давно (если не нужна куча примочек). Если у вас популярный ЯП и фреймворк, как правило есть настраиваемые библиотеки, которые можно подключить за три пинка.
Я не теоретик, если что, связка 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 можно очень много вещей, но без нескольких дней чтения документации не обойтись, если конечно задача не просто сделать базовую аутентифицаию пользователя.
Артём а у них же там есть бесплатный пакет до 10к юзеров. Зачем платить?
У бесплатных аккаунтов нет custom domains, нельзя менять дизайн имейла и еще каких-то фишек нет.
Пользуюсь IdentityServer4, бесплатное, на net core, open source.