Что такое auth0?
Auth0 – это аутентификация как служебный инструмент, который упрощает реализацию функций, связанных с проверкой подлинности на вашем сайте. Если вы создали приложение и хотите просто передать функции аутентификации и авторизации, такой сервис, как Auth0, вы должны рассмотреть.
Позвольте мне кратко изложить, что Auth0 может предложить:
- единый вход в систему
- многофакторная аутентификация
- вход в систему без пароля
- Управление пользователями
- и многое другое
В этой статье мы рассмотрим несколько методов единого входа, которые вы можете реализовать в своих веб-приложениях, чтобы использовать функции аутентификации, предоставляемые службой Auth0.
В первой половине статьи мы рассмотрим, как настроить базовую функцию аутентификации в веб-приложении на стороне сервера. Во второй половине я объясню, как вы можете защитить свои пользовательские API, установив авторизацию OAuth с помощью службы Auth0.
Кое-что для проверки адресов электронной почты
- Fgribreau/mailchecker – эта библиотека для тех, кто не уверен, существует ли на самом деле введенный пользователем электронный адрес;
- Egulias/EmailValidator – еще один репозиторий с готовыми решениями для проверки электронных адресов в PHP.
Описание веток
sozdanie-formy-registratsii-i-avtorizatsii-v-php – В этой ветке находятся исходники функционала, который был реализован в статье Создание формы регистрации и авторизации
The Logout script
Finally, Let’s create a logout.php file with the following code in it.
Login-script
Мы начнем с файла login.php.
Php: getting started using auth0-php
The Auth0-PHP SDK integrates into your PHP applications providing straightforward user login and signup. It supports social identity providers such as Facebook, Google, or Twitter, as well as enterprise providers such as Active Directory. The SDK provides convenient methods for accessing Auth0’s Authentication and Management endpoints.
The Auth0-PHP repository is open source and hosted on GitHub. We appreciate all contributions, including bug reports, enhancement proposals, and pull requests.
Installing the Auth0 PHP SDK requires Composer, the standard dependency management utility for PHP. Composer allows you to declare the dependent libraries your project needs and installs them for you. Please ensure Composer is installed and accessible from your shell before continuing.
Next, run the following shell command within your project directory to install the SDK:
This will create a
vendor
subfolder within your project and download all the dependencies needed to use the PHP SDK. This will also create a
vendor/autoload.php
file necessary for the SDK to work with your application, which we’ll import later.
To use the Auth0 Authentication and Management APIs, you’ll need a free Auth0 account and an Application:
Go to vhod-v-lichnyj-kabinet.ru/signup and create your account.
Once you are in the dashboard, go to Applications, then Create Application.
Give your Application a name, select Regular Web Application, then Create
Click the Settings tab for the required credentials used below. To learn more, see Application Settings.
You should use environment variables to store and load sensitive Auth0 credentials. This eliminates the need for hard-coding them into your application. Let’s create an .env
file within the root of our project directory to store our application’s credentials:
The easiest way to use environment variables in your project is to use a library like PHP Dotenv along with a local .env
file. Create a .env
file (make sure this is not accessible publicly and is excluded from version control) and add the following values:
You should never commit this file to version control or share it in an unsecure manner. The contents should be handled with care and treated like a password.
As PHP is unable to read our .env
file natively, you’ll need to install a PHP library to do so. For the purposes of this documentation we’ll be using vlucas/phpdotenv
, but any “dotenv” library you prefer will work. From our project directory, run the following shell command to install the library:
We’re ready to configure and initialize an instance of the SDK within our new PHP application. Let’s start by creating the PHP source file we’ll be working with for this demonstration, index.php
, and use the following snippet to get started:
Congratulations! Your application is now set up and ready to use with Auth0. You can now move on to building an example application using one of our PHP quickstarts. Choose the type of application you’re looking to build to follow along with a quickstart suited for your needs:
Step 1: creating a login form in html
Below is the Login Form in HTML. Paste it in a file named login.php
Step 1: creating registration form in html
We will create a PHP file named register.php with the following code in it. This is a simple HTML form with some basic validation. If you are not familiar with HTML then you can get it from many online sites who give ready-made html5 login form templates.
Архив обновлен 24.02.2022г.
Внимание:
Если вы используете данный скрипт на локальном сервере типа
DENWER XAMPP
, то не
стоит ждать писем на свой почтовый ящик. Письма лежат в заглушке
sendmail
. В
Denwer
вы их можете
найти по пути
Z:tmp!sendmail
открыть данные файлы вы сможете в любом почтовом клиенте.
Библиотеки для аутентификации и авторизации
- Aura.Auth– обеспечивает функциональность аутентификации и отслеживание сеансов с использованием различных адаптеров;
- Opauth– фреймворк аутентификации с несколькими провайдерами;
- Sentinel Social– библиотека для аутентификации в социальных сетях;
- Sentinel– независимая от фреймворка библиотека аутентификации и авторизации;
- PHPGangsta/GoogleAuthenticator – у этой библиотеки есть не только мощное название, но и развитая функциональность: с ней вы сможете реализовать двухфакторную аутентификацию через Google.
Библиотеки для работы с датой и временем
- CalendR– библиотека управления календарем;
- Carbon– простое расширение API DateTime;
- Yasumi– библиотека, которая поможет вам рассчитать даты и названия праздников.
Библиотеки для работы с разметкой
- Cebe/Markdown – быстрый и расширяемый парсер Markdown;
- Decoda– легкая библиотека парсера разметки;
- Emoji– библиотека, преобразующая символы и имена Unicode в изображения смайликов;
- HTML в Markdown– преобразует HTML в Markdown;
- HTML5 PHP – библиотека парсера и сериализатора HTML5;
- PHP Markdown– парсер Markdown.
Библиотеки для управления качеством кода и форматированием
- PHP CodeSniffer– библиотека, которая обнаруживает нарушения стандартов кода PHP, CSS и JS;
- PHP CS Fixer– библиотека для исправления стандартов кодирования;
- PHP Mess Detector– библиотека, которая сканирует код на наличие ошибок, неоптимальных решений, неиспользуемых параметров и многого другого.
Библиотеки и приложения для приема платежей и интернет-магазинов
- Money– реализация денежного шаблона Фаулера на PHP;
- Brick/Money– финансовая библиотека для PHP с поддержкой контекстов, округления сумм и конвертации валют;
- OmniPay– независимая от платформы библиотека для обработки платежей с несколькими шлюзами;
- Swap– библиотека курсов валют.
Все для парсинга сайтов
- Imangazaliev/Didom – очень быстрый парсер и HTML-scrapper;
- Oscarotero/Embed – хорошее решение для извлечения любой информации с веб- страницы;
- Friensofphp/Goutte – простой web-scrapper;
- Symfony/Panther – библиотека тестирования браузера для PHP и Symfony;
- Mvdbos/Php-Spider– настраиваемый и расширяемый PHP-парсер.
Вызов конечной точки пользовательского api
После того, как у вас есть токен доступа, вы можете вызвать свою конечную точку API, включив ее в заголовок.
Давайте посмотрим, как работает этот код!
Сначала мы подготовили ссылку, которая отправляет пользователя на сервер Auth0, чтобы начать поток авторизации.
Защитите свои пользовательские api с помощью oauth2
В этом разделе мы рассмотрим, как вы можете защитить свои пользовательские API, выполнив поток предоставления кода авторизации OAuth2. Надеюсь, вы знакомы со стандартным потоком предоставления кода авторизации, так как мы не будем вдаваться в подробности этого. Ознакомьтесь с некоторыми нашими другими сообщениями здесь, на Envato Tuts , если вы хотите ускориться с OAuth2.
Вместо этого мы сразу же погрузимся в реальную реализацию. Идем дальше и создаем файл auth_code_grant_example.php со следующим содержимым.
Индексный файл
Наконец, давайте рассмотрим файл index.php, который является точкой входа нашего приложения.
Инструменты для построения навигационных структур
- KnpMenu– библиотека меню;
- Menu– гибкая библиотека меню с понятным интерфейсом.
Инструменты для работы с паролями
- Timoh6/GenPhrase– генерируем безопасные случайные парольные фразы;
- Ircmaxell/Password_compact – работа с совместимостью новых функций паролей PHP 5.5;
- Hackzilla/Password-Generator – полезное решение для генерации случайных паролей;
- Ircmaxell/PHPPasswordlib – еще одно решение для работы с генерацией и проверкой паролей.
Интеграция аутентификации на стороне сервера
В этом разделе мы рассмотрим, как можно быстро настроить базовую аутентификацию для серверных веб-приложений с использованием Auth0. Фактически команда Auth0 уже предоставляет удобный пример GitHub, который демонстрирует основные примеры, поэтому мы будем использовать это вместо того, чтобы изобретать колесо.
Прежде чем двигаться вперед, обязательно установите Composer, поскольку он будет использоваться для установки фактических SDK Auth0 с использованием файла composer.json. Кроме того, если вы хотите следовать вместе с примерами в этой статье, продолжайте и получите бесплатную учетную запись с Auth0.
Когда нужно разобрать url
- Jeremykendall/PHP-DomainParser– библиотека для парсинга суффиксов домена;
- Jwage/Purl– библиотека для работы с URL;
- Sabre-io/Uri– функциональная библиотека для взаимодействия с URL;
- Uri– еще одна библиотека для работы с URL.
Конечная точка api с защитой auth0
Файл фиктивного файла API demo_api_server.php может выглядеть примерно так:
Настройка проекта
Давайте двигаться вперед и захватим копию образцов проекта.
Несколько решений для работы с изображениями
- Thephpleague/ColorExtractor – если надо извлечь цвет из изображения, эта библиотека определенно для вас;
- Thephpleague/Glide – набор решений для обработки img по запросу;
- Jenssegers/ImageHash– библиотека для создания хэша изображений;
- Psliwa/ImageOptimizer– все необходимое для оптимизации изображения;
- Intervention/Image – если нужно обработать картинку, вам сюда.
Подключение к базы данных
В корневую папку сайта, создаем файл с названием “dbconnect.php”. В этом файле, добавляем следующий код:
<?php
// Указываем кодировку
header('Content-Type: text/html; charset=utf-8');
$server = "localhost"; /* имя хоста (уточняется у провайдера), если работаем на локальном сервере, то указываем localhost */
$username = "имя_пользователя_бд"; /* Имя пользователя БД */
$password = "пароль_пользователя_бд"; /* Пароль пользователя, если у пользователя нет пароля то, оставляем пустым */
$database = "имя_базы_данных"; /* Имя базы данных, которую создали */
// Подключение к базе данный через MySQLi
$mysqli = new mysqli($server, $username, $password, $database);
// Проверяем, успешность соединения.
if ($mysqli->connect_errno) {
die("<p><strong>Ошибка подключения к БД</strong></p><p><strong>Код ошибки: </strong> ". $mysqli->connect_errno ." </p><p><strong>Описание ошибки:</strong> ".$mysqli->connect_error."</p>");
}
// Устанавливаем кодировку подключения
$mysqli->set_charset('utf8');
//Для удобства, добавим здесь переменную, которая будет содержать название нашего сайта
$address_site = "http://testsite.local";
?>
Полезные библиотеки, не вошедшие в топ
- BitExpert/disco – контейнер на PHP, совместимый со стандартом PSR-11;
- Malukenho/PsyGit – кому-то может понравиться эта библиотека, которая позволяет работать с Git через PHP;
- Wapmorgan/Morphos – библиотека для тех, кто следит за грамотностью, ее основные функции: правильное склонение имен существительных, географических названий и количественных числительных;
- PHPOffice/PhpSpreadsheet – библиотека для работы с таблицами Excel;
- Mjaschen/phpgeo – библиотека для работы с географическими координатами;
- Seldaek/monolog – библиотека для логирования;
- Filp/whoops – библиотека для красивого вывода ошибок в браузере – другими словами, whoops.
***
Рейтинг фреймворков – понятие относительное. Преимущество той или иной библиотеки заключается совсем не цифрах, а в обычном удобстве. Используйте их для решения своих повседневных задач или, по мере необходимости, для каждого отдельного случая.
Если вы не увидели в нашем списке своих любимых библиотек PHP, пожалуйста, не стесняйтесь рекомендовать их в комментариях. Нам важно ваше мнение.
Получение маркера доступа
Когда пользователь нажимает на ссылку «Вход», они будут отправлены на сервер Auth0 для аутентификации. После аутентификации им будет предложено разрешить приложению доступ к вашему профилю. После авторизации пользователь будет перенаправлен обратно в ваше приложение с кодом в качестве параметра $ _GET.
Затем мы можем обменять этот код, чтобы получить токен доступа.
Проверка маркера доступа
Вы обязаны проверять токен доступа, прежде чем предоставлять доступ к защищенному ресурсу. И это именно то, что мы сделали в следующем фрагменте. Мы использовали класс утилиты JWTVerifier для проверки токена доступа.
Решения для маршрутизации приложений
- AuraRouter– многофункциональная библиотека маршрутизации;
- FastRoute – набор методов для скоростноймаршрутизации;
- Klein/Klein – удобный маршрутизатор;
- C9s/Pux– очередная библиотека, используемая для настройки маршрутизации.
Решения для создания шаблонов
- Arnault-rb/MtHaml – тут прописаны инструменты для реализации шаблонов HAML в PHP;
- Bobthecow/Mustаche– инструменты для реализации шаблонов с использованием фигурных скобок на PHP;
- Plates – стандартная PHP-библиотека с множеством шаблонов.
Структура таблицы: bez_reg
--
-- Структура таблицы `bez_reg`
--
CREATE TABLE IF NOT EXISTS `bez_reg` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(200) NOT NULL,
`pass` varchar(32) NOT NULL,
`salt` varchar(32) NOT NULL,
`active_hex` varchar(32) NOT NULL,
`status` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Сценарий выхода
Затем давайте быстро взглянем на файл logout.php.
Файл reg_form.html
Так как регистрация пользователей у нас готова, самое время написать авторизацию. Создадим форму для авторизации
пользователей, далее напишем обработчик формы авторизации и на последок сделаем скрипт show.php который
будет показывать нам авторизированны мы в системе или нет.
Файлы проекта
Давайте быстро рассмотрим каждый файл в стартовом проекте.
Заключение
Сегодня мы прошли через службу Auth0, которая обеспечивает аутентификацию и авторизацию в качестве службы. После введения службы Auth0 мы рассмотрели несколько практических примеров, чтобы продемонстрировать, как вы могли бы интегрировать их с вашими PHP-приложениями.
Пожалуйста, не стесняйтесь размещать свои предложения и запросы, используя приведенный ниже канал!