bochsdbg / oauth-test

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Тест OAuth2

Быстрый запуск

Исходники:

git clone https://git.empherino.net/NEb0/oauth-test.git
cd oauth-test

Зеркало исходников на github: https://github.com/bochsdbg/oauth-test

Сборка и запуск:

docker build . -t oauth-test && docker run --rm -p 8000:8000 -it oauth-test

Демо: https://oauth-test.empherino.net/

Тестовые доступы

Админский доступ admin:123

Также для тестирования предустановлено два пользователя:

test:123
test2:123

Функционал

1. Бэкэнд

1.1 Вход по логину/паролю

1.2 Регистрация по логину/паролю

1.3 Перенаправления для аутентификации пользователей, для более удобного входа, в случае, когда пользователь приходит с клиента

1.4 API, в том числе функциональное (просмотр профиля пользователя, просмотр и отзыв токенов), и авторизационное (вход регистрация пользователей по логину/паролю, а также стандартизированное API oauth-протокола)

2. Фронтенд

2.1 Вход по OAuth2

2.2 Интерфейсная часть к API сервера:

2.2.1 "домашняя" страница

2.2.2 Просмотр "профиля" пользователя

2.2.3 Для админа: возможность просмотра существующих токенов обновления и токенов доступа для всех пользователей, с возможностью их отзыва ("удаления") как по одному, так и всех access_token-ов для одного пользователя сразу

Техническое описание

Приложение разделено на две части: клиент (/frontend) и сервер (/backend). Сервер представляет собой как сервер приложений, так и авторизационный центр. Физически их можно разнести на разные машины, но в данном приложении используется разделение исключительно по роутингу, чтобы упростить развертывание в докере.

Реализована схема OAuth2 Code Exchange с расширением PKCE, т.к. это единственная схема, позволяющая обходиться без разделения общего секрета (client_secret), и рекомендуема для использования в SPA. Упрощенное описание протокола доступно по ссылке: https://www.oauth.com/oauth2-servers/pkce/ . Полное: https://tools.ietf.org/html/rfc7636

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

About

License:MIT License


Languages

Language:TSQL 49.1%Language:PHP 23.1%Language:Vue 13.8%Language:JavaScript 10.2%Language:HTML 1.6%Language:Dockerfile 1.1%Language:CSS 0.8%Language:Shell 0.3%