с нашим младшим инженером-программистом Мэттом Барреттом.

Поскольку мы продолжаем расширять ассортимент наших продуктов, Мэтт сравнивает два возможных решения для аутентификации — Auth0 и Ory Kratos.

Создание платформы

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

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

Выбор решения для аутентификации

После первоначальной оценки множества предлагаемых решений мы решили более подробно рассмотреть два продукта с противоположных концов рынка: Auth0 и Ory Kratos.

Auth0,полностью размещенное облачное решение,продает себя за счет простоты внедрения. В руководстве по быстрому запуску указывается 15-минутный период времени, необходимый для запуска процесса входа в существующее веб-приложение React. Это возможно, поскольку Auth0 предоставляет экраны аутентификации из коробки — нет необходимости создавать собственные экраны входа и регистрации. Однако эта простота сопряжена с некоторыми недостатками, такими как ограничения на уровень настройки и текущие расходы, которые растут по мере увеличения вашей пользовательской базы. Auth0 управляется через онлайн-панель, с помощью которой вы можете настроить параметры безопасности, потоки пользователей и другие параметры конфигурации.

Ори Кратос, с другой стороны, представляет собой решение с открытым исходным кодом для аутентификации пользователей на основе API. Он не включает предварительно созданные экраны аутентификации и должен быть размещен самостоятельно (если только не используется Ory Cloud, облачный вариант Ory Kratos). Хотя это означает, что настройка Ory сопряжена с дополнительными затратами, это также дает полную свободу в создании собственных экранов проверки подлинности и полный контроль над действиями пользователей, при этом Ory отвечает только за свои узкоспециализированные задачи.

Основная функциональность

Первое, что нам нужно было подтвердить, это то, что оба продукта соответствуют потребностям наших продуктов, и поэтому мы определили 7 ключевых критериев приемлемости:

· Настраиваемый пользовательский интерфейс
· Настраиваемые требования к паролю
· Управление сессиями
· Проверка электронной почты
· Проверка телефона/двухфакторная аутентификация
· Восстановление учетной записи
· Поддержка переноса существующего входа

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

Настраиваемый интерфейс

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

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

Напротив, Ори Кратос не накладывает ограничений на ваш пользовательский интерфейс. Хотя вам нужно будет создать его с нуля, у вас есть полная свобода оформления страницы входа в систему по своему усмотрению. Пока ваши текстовые поля/кнопки правильно подключены к Kratos, их внешний вид не имеет отношения к функционированию процесса аутентификации. Поскольку дизайн и UX являются основой нашей философии разработки в Phlo, эта дополнительная свобода была основным фактором в процессе принятия нами решений.

Настраиваемые требования к паролю

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

Auth0 поставляется с 5 заранее определенными уровнями надежности пароля, что позволяет вам выбрать, какой уровень применять. Уровни следующие:

· Нет (по умолчанию): не менее 1 символа любого типа.
· Низкий: не менее 6 символов.
· Удовлетворительно: не менее 8 символов, включая строчную букву, прописную букву и цифру.
· Хорошо: не менее 8 символов, включая не менее 3 из следующих 4 типа символов: строчная буква, прописная буква, цифра, специальный символ.
· Отлично: не менее 10 символов, включая не менее 3 из следующих 4 типы символов: строчная буква, прописная буква, цифра, специальный символ. Не более 2 одинаковых символов подряд.

Однако у Ory Kratos есть только 3 параметра для настройки, когда речь идет о политике паролей, два из которых настраиваются только в том смысле, что их можно включать или выключать. К ним относятся: минимальная длина, проверка подобия идентификатора (которая проверяет, похож ли пароль на идентификатор пользователя) и проверка I Been I Been Pwned (которая проверяет, был ли пароль найден в Ive I Been Pwned? База данных Been Pwned).

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

Перенос существующих учетных записей

Третьей областью, в которой два продукта заметно отличались, были методы, предлагаемые для миграции пользователей из существующей базы данных. Принимая решение, мы хотели остаться открытыми для возможности использования выбранного продукта для входа на всей платформе Phlo, что означает перенос учетных записей пользователей из наших существующих решений. И Auth0, и Kratos могут поддерживать это, хотя процесс проще с Auth0.

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

Миграция в Ory выполняется путем передачи пользовательских данных в ту же конечную точку, которая использовалась для создания учетной записи. Этот метод поддерживает хешированные пароли, зашифрованные с использованием алгоритмов PKBDF2, Argon2 или BCrypt.

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

Принятие решения

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

Auth0 предлагал скорость, простоту и поддержку. Это было бы быстро и легко настроить, и у нас был бы доступ к их специальной группе поддержки, если бы мы столкнулись с какими-либо серьезными проблемами. Однако за это пришлось платить, как в буквальном (см. ниже), так и в переносном смысле, принесение в жертву свободы дизайна и зависимость от стороннего поставщика.

Ори Кратос предложил свободу проектирования процесса входа в систему в соответствии с нашим видением, используя программное обеспечение с открытым исходным кодом, которое мы можем разместить у себя. Несмотря на отсутствие специальной поддержки, прием, который мы получили на Ory Slack, был исключительным. На все наши вопросы были даны ответы в течение нескольких минут, и у нас было четкое представление о том, как выглядит будущее Ory.

Несмотря на необходимость дополнительного времени на предварительную разработку, Ory Kratos покорил нас как гибкое и масштабируемое решение с сильным сообществом поддержки.

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