Skip to content

mak733/BFG_auth

Repository files navigation

Задача:

Вам предоставляется задача спроектировать и реализовать приложение на Golang, которое выполняет несколько методов в операционной системе Linux и возвращает результат выполнения посредством REST API в формате JSON. К каждому методу применяется Role-Based Access Control (RBAC). В качестве базы данных используется ETCD. Приложение должно предоставлять возможность управления элементами RBAC (Identity Providers, Users, Groups, Roles, Permissions, Objects) с помощью CRUD методов. Аутентификация пользователей должна осуществляться по паролю, после успешной аутентификации выдается JWT токен, который используется для дальнейших вызовов методов API.

Требования:

  1. Реализовать методы для работы с элементами RBAC:

    • Создание, чтение, обновление и удаление (CRUD) Identity Providers, Users, Groups, Roles, Permissions и Objects.
  2. Аутентификация и авторизация:

    • Реализовать аутентификацию пользователей по паролю.
    • После успешной аутентификации пользователю выдается JWT токен, который должен быть использован для аутентификации при дальнейших вызовах методов API.
    • Реализовать авторизацию на основе RBAC. Методы API должны проверять права доступа пользователя на выполнение операций.
  3. Реализовать методы API:

    • Вернуть текущее системное время и дату.
    • Вернуть емкость корневой директории: занято, свободно, всего.
    • Вернуть текущую версию системы.
    • Вернуть default gateway и текущий IP адрес.
    • Вернуть емкость RAM: занято, свободно, всего.
  4. Использование базы данных ETCD:

    • Использовать ETCD в качестве базы данных для хранения информации о элементах RBAC (Identity Providers, Users, Groups, Roles, Permissions, Objects).
  5. Проектирование с учетом масштабируемости:

    • При проектировании приложения выбрать один из паттернов проектирования, который обеспечит масштабируемость и возможность работы над проектом многочисленными разработчиками.
  6. Тестирование ( опционально ):

    • Написать unit-тесты для всех методов API и функциональных возможностей приложения.
    • Покрыть тестами различные сценарии использования и возможные ошибки.
  7. Документация:

    • Предоставить документацию к API, описывающую все доступные методы и форматы данных.
  8. Безопасность ( опционально ):

    • Обеспечить защиту от возможных уязвимостей и атак, таких как инъекции, переполнения буфера и т.д.
  9. Размещение на GitHub:

    • Загрузить исходный код проекта на GitHub с подробным описанием и инструкциями по развертыванию.

Ожидаемый результат:

В результате выполнения проекта должно быть разработано приложение на Golang, реализующее методы API с применением RBAC и хранением данных в ETCD. Приложение должно успешно работать на хост системе Linux и удовлетворять всем поставленным требованиям.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published