Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Аутентификация и авторизация с использованием Auth0 в PHP

by
Difficulty:IntermediateLength:LongLanguages:

Russian (Pусский) translation by Dima (you can also view the original English article)

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

Что такое Auth0?

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

Позвольте мне кратко изложить, что Auth0 может предложить:

  • единый вход в систему
  • многофакторная аутентификация
  • вход в систему без пароля
  • Управление пользователями
  • и многое другое

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

В первой половине статьи мы рассмотрим, как настроить базовую функцию аутентификации в веб-приложении на стороне сервера. Во второй половине я объясню, как вы можете защитить свои пользовательские API, установив авторизацию OAuth с помощью службы Auth0.

Интеграция аутентификации на стороне сервера

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

Прежде чем двигаться вперед, обязательно установите Composer, поскольку он будет использоваться для установки фактических SDK Auth0 с использованием файла composer.json. Кроме того, если вы хотите следовать вместе с примерами в этой статье, продолжайте и получите бесплатную учетную запись с Auth0.

Настройка проекта

Давайте двигаться вперед и захватим копию образцов проекта.

Для установки зависимостей выполните команду composer install.

Согласно файлу composer.json, он должен был установить пакеты vlucas/phpdotenv и auth0/auth0-php.

Библиотека vlucas/phpdotenv используется для инициализации переменных среды из файла .env. Таким образом, он позволяет отделить конфигурацию от кода, который изменяется между средами.

С другой стороны, пакет auth0/auth0-php является тем, который поможет нам настроить авторизацию в нашем приложении.

Далее, давайте настроим конфигурацию нашего приложения в файле .env. Идем дальше и создаем файл .env, копируя его из файла .env.example.

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

Вы должны найти большинство настроек в разделе Приложения> Стандартное приложение> Настройки на панели управления Auth0. Обратите внимание, что я использую приложение по умолчанию, созданное системой. Конечно, вы можете пойти и создать новое приложение, если хотите это сделать.

AUTH0_CALLBACK_URL - это URL вашего приложения, в котором Auth0 будет перенаправлять пользователей после входа в систему и выхода из системы. Значение, заданное в этом поле, должно быть настроено в разделе «Разрешенные обратные вызовы» в настройках приложения на панели управления Auth0.

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

  • index.php: Это основная страница, на которой отображается кнопка входа или выхода из системы на основе состояния пользователя.
  • login.php: этот скрипт будет инициирован, когда вы нажмете кнопку входа в систему, и перенаправит пользователей на интерфейс входа Auth0 для входа. После входа в систему они будут перенаправлены обратно на AUTH0_CALLBACK_URL.
  • logout.php: этот скрипт будет инициирован, когда вы нажмете кнопку выхода из системы, и перенаправит пользователей на Auth0 в фоновом режиме, выйдет из системы и вернет их обратно на AUTH0_CALLBACK_URL.

Файлы проекта

Давайте быстро рассмотрим каждый файл в стартовом проекте.

Login-Script

Мы начнем с файла login.php.

Вначале мы включили автозагрузчики, которые отвечают за загрузку классов, связанных с переменной Auth0 и средой. После этого мы инициализируем конфигурационные переменные из файла .env, используя функцию getenv.

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

Вы можете войти в систему, используя свои социальные учетные записи, такие как Facebook, Google и т. д., Или создать новую учетную запись при входе в систему. В любом случае Auth0 создаст записи для новых пользователей на своем конце. Вы можете включить различные социальные входы в разделе «Подключения»> «Социальные» на панели управления Auth0. Кроме того, вы можете проверить список пользователей, которые вошли в систему, используя Auth0 на панели управления Auth0 в разделе «Пользователи».

Сценарий выхода 

Затем давайте быстро взглянем на файл logout.php.

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

Индексный файл

Наконец, давайте рассмотрим файл index.php, который является точкой входа нашего приложения.

Здесь мы использовали метод getUser объекта $auth0, чтобы узнать, есть ли какой-либо активный сеанс. Если активного сеанса нет, мы отобразим ссылку «Вход», которая приведет пользователя к login.php и инициирует поток входа. С другой стороны, мы приветствуем пользователя и показываем ссылку «Выход», если пользователь уже вошел в систему.

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

Защитите свои пользовательские API с помощью OAuth2

В этом разделе мы рассмотрим, как вы можете защитить свои пользовательские API, выполнив поток предоставления кода авторизации OAuth2. Надеюсь, вы знакомы со стандартным потоком предоставления кода авторизации, так как мы не будем вдаваться в подробности этого. Ознакомьтесь с некоторыми нашими другими сообщениями здесь, на Envato Tuts +, если вы хотите ускориться с OAuth2.

Вместо этого мы сразу же погрузимся в реальную реализацию. Идем дальше и создаем файл auth_code_grant_example.php со следующим содержимым.

Давайте посмотрим, как работает этот код!

Давайте посмотрим, как работает этот код!

Сначала мы подготовили ссылку, которая отправляет пользователя на сервер Auth0, чтобы начать поток авторизации.

Пожалуйста, замените {AUDIENCE}, {CLIENT_ID} и {CALLBACK_URL} на значения, соответствующие вашему приложению. Параметр {AUDIENCE} должен быть заменен значением поля Идентификатор, найденным в API> {YOUR API APPLICATION}> Настройки на панели управления Auth0.

{SOME_RANDOM_STRING} следует заменить уникальным значением, которое трудно угадать. Эта строка используется для предотвращения атак CSRF. Кроме того, не забудьте заменить {AUTH0_DOMAIN} своим доменным именем, как мы обсуждали ранее.

Получение маркера доступа

Когда пользователь нажимает на ссылку «Вход», они будут отправлены на сервер Auth0 для аутентификации. После аутентификации им будет предложено разрешить приложению доступ к вашему профилю. После авторизации пользователь будет перенаправлен обратно в ваше приложение с кодом в качестве параметра $ _GET.

Затем мы можем обменять этот код, чтобы получить токен доступа.

Как вы можете видеть, для получения маркера доступа требуется один вызов CURL.

Вызов конечной точки пользовательского API

После того, как у вас есть токен доступа, вы можете вызвать свою конечную точку API, включив ее в заголовок.

Конечная точка API с защитой Auth0

Файл фиктивного файла API demo_api_server.php может выглядеть примерно так:

Давайте быстро рассмотрим важные части этого кода.

Проверка маркера доступа

Вы обязаны проверять токен доступа, прежде чем предоставлять доступ к защищенному ресурсу. И это именно то, что мы сделали в следующем фрагменте. Мы использовали класс утилиты JWTVerifier для проверки токена доступа.

{SIGNING_ALGORITHM} следует заменить значением поля Signing Algorithm, найденным в API> {YOUR API APPLICATION}> Settings.

Таким образом, вы можете защитить свои пользовательские API, если хотите использовать поток OAuth2 в службе Auth0.

Заключение

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

Пожалуйста, не стесняйтесь размещать свои предложения и запросы, используя приведенный ниже канал!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.