Раскрытие информации : я инженер в Auth0 .
Это зависит от одного основного момента ... вам нужно решить, если:
- вы хотите потратить значительное количество времени (и косвенно потратить деньги) на создание и / или обслуживание своего собственного провайдера идентификации и сервера авторизации
- или вы предпочитаете напрямую тратить деньги и использовать стороннего поставщика аутентификации, такого как Auth0.
Оба варианта вполне жизнеспособны с точки зрения ваших функциональных требований. Благодаря пользовательской разработке вы полностью контролируете функциональность, которую решаете поддерживать, поэтому я сосредоточу часть ответа на том, как Auth0 может отвечать перечисленным требованиям .
Однако, прежде чем перейти к этому, независимо от вашего решения, для аутентификации вы должны сосредоточиться на OpenID Connect вместо OAuth2. Последнее будет более подходящим, если вы планируете также иметь в своем составе API, а не просто разделять монолит на отдельные веб-приложения.
Как перенести существующих пользователей в систему на основе Auth0?
Вы можете либо принять решение о продолжении использования своей базы данных и положиться на Auth0, чтобы обеспечить полное соответствие протоколам, связанным с аутентификацией, которые вам могут понадобиться, либо вы можете перенести своих пользователей в управляемые базы данных Auth0 и перестать беспокоиться о том, как вы храните и проверяете пароли.
Если вы предпочитаете продолжать использовать базу данных, см. Раздел «Аутентификация пользователей с помощью имени пользователя и пароля с использованием настраиваемой базы данных».
Приложения часто используют пользовательские базы данных для аутентификации. Auth0 позволяет вам легко подключаться к этим репозиториям и использовать их в качестве поставщиков удостоверений, сохраняя учетные данные пользователя и предоставляя множество дополнительных функций.
(Документы ссылаются на MySQL только в качестве примера, другие движки баз данных поддерживаются)
С другой стороны, вы можете легко перемещать учетные данные пользователей в базы данных Auth0, используя процесс миграции, описанный в разделе «Миграция пользователей в Auth0».
Auth0 поддерживает автоматическую миграцию пользователей в Auth0 из пользовательского подключения к базе данных. Эта функция добавляет пользователей в базу данных Auth0 по одному при каждом входе в систему и позволяет не просить пользователей сбросить все свои пароли одновременно.
Вы также можете создать всех своих пользователей в Auth0 через API управления, если вы предпочитаете, чтобы все они сразу начали использовать наш алгоритм хэширования паролей. У этого есть побочный эффект требования, чтобы пользователи сбросили свой пароль.
Как продолжать использовать пользовательскую двухэтапную аутентификацию (вопросы проверки)?
Конвейер аутентификации, предоставляемый Auth0, полностью настраивается с помощью правил . Это означает, что даже если вам не нужно было реализовывать какие-либо связанные с протоколом вещи, вы все равно можете точно настроить мелкие детали того, как происходит аутентификация в вашем приложении.
Это включает в себя возможность дальнейшего использования существующих вопросов проверки в качестве способа выполнения двухэтапного процесса аутентификации, когда пользователь предоставляет исходный пароль, проверенный Auth0, а затем вы запрашиваете у них дополнительную информацию из пользовательского правила. (правила - это просто Javascript, поэтому возможности безграничны)
Однако вы также можете отказаться от вопросов проверки и использовать Auth0 Guardian для повышения безопасности процесса проверки подлинности.
Как настроить внешний вид интерфейса аутентификации?
С Auth0 вы можете мгновенно получить чистый интерфейс аутентификации, используя стандартные страницы входа в систему или виджеты аутентификации, такие как Lock . Все они поддерживают некоторую степень настройки, и вы всегда можете решить сделать свой собственный пользовательский интерфейс самостоятельно и вместо этого использовать библиотеки Auth0 более низкого уровня ( Auth0.js ), которые не ограничивают пользовательский интерфейс.
Для получения дополнительной информации о настройке:
Как предотвратить явное согласие страниц?
Вы можете использовать Auth0 как в качестве провайдера идентификации для аутентификации, так и в качестве сервера авторизации OAuth2 (в настоящее время доступен только в регионе США) для ваших API.
Как поставщик идентификационных данных вам не нужно беспокоиться о страницах согласия, пользователь аутентифицируется с помощью своих учетных данных, управляемых Auth0, а затем перенаправляется в ваше приложение - и все.
В сценарии OAuth2 как услуга, когда разрешение разрешено, план действий включает в себя возможность обхода страниц согласия для определенных приложений.
В заключение, это кажется очень интересным и сложным проектом, который вы получили, так что удачи независимо от вашего окончательного решения.
Я уже прошел через нечто подобное на предыдущей работе, когда мне пришлось заново внедрить систему аутентификации унаследованного приложения. Мы внедрили нашего собственного провайдера идентификации и сервер авторизации, и, честно говоря, у меня все еще есть ощущение, что мы, возможно, забыли что-то действительно важное.
Я думаю, что это самая большая проблема с развертыванием вашей собственной безопасности, будут случаи, когда крайние сроки навязывают ярлыки, а безопасность не очень хорошая область для создания ярлыков.
Если у вас есть дополнительные вопросы, дайте мне знать, если вы думаете, что я могу быть полезен.