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

Что такое auth0?

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

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

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

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

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

The Logout script

Finally, Let’s create a logout.php file with the following code in it.

Login-script

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

Как сделать систему авторизации и регистрации на php –

// Проверяем нажата ли кнопка отправки формы

if(isset($_REQUEST[‘doGo’])){

    // Все последующие проверки, проверяют форму и выводят ошибку

    // Проверка на совпадение паролей

    if($_REQUEST[‘pass’]!==$_REQUEST[‘pass_rep’]){

        $error=‘Пароль не совпадает’;

    }

    // Проверка есть ли вообще повторный пароль

    if(!$_REQUEST[‘pass_rep’]){

        $error=‘Введите повторный пароль’;

    }

    // Проверка есть ли пароль

    if(!$_REQUEST[‘pass’]){

        $error=‘Введите пароль’;

    }

    // Проверка есть ли email

    if(!$_REQUEST[’email’]){

        $error=‘Введите email’;

    }

    // Проверка есть ли логин

    if(!$_REQUEST[‘login’]){

        $error=‘Введите login’;

    }

    // Если ошибок нет, то происходит регистрация

    if(!$error){

        $login=$_REQUEST[‘login’];

        $email=$_REQUEST[’email’];

        // Пароль хешируется

        $pass=password_hash($_REQUEST[‘pass’],PASSWORD_DEFAULT);

        // Если день рождения не был указан, то будет самый последний год из доступных

        $DOB=$_REQUEST[‘year_of_birth’];

        // Добавление пользователя

        mysqli_query($db,“INSERT INTO `users` (`login`, `email`, `password`, `DOB`) VALUES (‘”.$login.“‘,'”.$email.“‘,'”.$pass.“‘, ‘”.$DOB.“‘)”);

        // Подтверждение что всё хорошо

        echo‘Регистрация прошла успешна’;

    }else{

        // Если ошибка есть, то выводить её

        echo$error;

    }

}

?>

<!DOCTYPE html>

<html lang=“ru”>

<head>

    <meta charset=“UTF-8”>

    <meta name=“viewport”content=“width=device-width, initial-scale=1.0”>

    <meta httpequiv=“X-UA-Compatible”content=“ie=edge”>

    <title>Зарегистрироваться</title>

</head>

<body>

    <form action=“<?= $_SERVER[‘SCRIPT_NAME’] ?>”>

        <p>Логин:<input type=“text”name=“login”id=“”><samp style=“color:red”>*</samp></p>

        <p>EMail:<input type=“email”name=“email”id=“”><samp style=“color:red”>*</samp></p>

        <p>Пароль:<input type=“password”name=“pass”id=“”><samp style=“color:red”>*</samp></p>

        <p>Повторитепароль:<input type=“password”name=“pass_rep”id=“”><samp style=“color:red”>*</samp></p>

        <?php$year=date(‘Y’);?>

        Годрождения:

        <select name=“year_of_birth”id=“”>

        <option value=“”></option>

            <?phpfor($i=$year14;$i>$year14100;$i){?>

                <option value=“<?= $i ?>”><?=$i?></option>

            <?php}?>

        </select>

        <p><input type=“submit”value=“Зарегистрироваться”name=“doGo”></p>

    </form>

</body>

</html>

Конечная точка api с защитой auth0

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

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

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

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

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

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

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

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

Структура файлов:

css/
– файлы стилей
reset.css
– сбрасывает все стандартные стили элементов
style.css
– главный файл стилей формы и страницы пользователя
img/ico
– используемые пиктограммы
js/
– java script файлы
main.js
– содержит javascript управления регистрационной формой
php/language/
– файлы содержащие языковые конфиги
en.phpru.php
– английский и русский конфиги, соотвтетственно, состоят из ассоциативного массива, описывающего выводимые надписи на странице.
model/
– файлы обработки данных
validation.php
– файл содержит класс, который проверяет введенные пользователем данные в регистрационной форме, и взводит флаги ошибок, в случае если что-то введено неверно, также, здесь же происходит обработка введенных данных.
Database.php
– абстрактный класс для работы с базой данных.
MyDatabase.php
– класс, наследуемый от Database, содержит методы для работы с базой данных mydb
view/
– файлы отображения
header.php
– заголовочный файл, содержит доктайп, тайтл, подключение стилей.
lang-switch.php
– файл содержит переключатель языка.
registration-form.php
– формы регистрации и авторизации.

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

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

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

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

Шаг 8

И последний штрих. Мы можем ограничивать доступ не только к странице админки, но и к любой другой. Для этого достаточно открыть сессию и проверить наличие метки в ней. Чтобы не копировать на каждую новую страницу эти блоки кода — мы их можем вынести в отдельный файл (auth.php) и затем просто подключать этот файл на страницах, к которым нужно ограничить доступ по паролю. Содержимое файла auth.php будет таким:

Заключение

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

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

Похожее:  Подтверждение адреса электронной почты на PHP | PHP

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *