Skip to content

Независимая система авторизации по jwt-токену, созданная в рамках хакатона usetech.

Notifications You must be signed in to change notification settings

Mitsushidu/usetech-hackathon

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

USETECH hackathon case 3

Описание

Сервис позволяющий создавать пользователей и предоставлять им доступ к эндпоинтам по токену. Основной целью является создание независимой утилиты для обработки токенов и предоставления доступа, которая может встраиваться в любую систему

Реализованный функционал: Создание пользователся, предоставление доступа к эндпоинту для пользователя по токену, генерация JWT ключей через keycloak.

Как работать с проектом:

  1. Устанавливаем и активируем venv

     python -m venv venv
     python3 -m pip install --upgrade pip
     source venv/Scripts/activate
     pip install -r 'requirements.txt'
  2. Устанавливаем Docker и Docker Compose:

  3. Клонируем репозиторий:

    git clone git@github.com:Mitsushidu/usetech-hackathon.git
  4. Создаем файл .env:

    sudo nano .env

    Заполняем его следующими данными:

    SECRET_KEY=secret_key
    
    DB_VENDOR=POSTGRES
    DB_ADDR=postgres
    DB_DATABASE=keycloak
    DB_USER=keycloak
    DB_SCHEMA=public
    DB_PASSWORD=password
    KEYCLOAK_ADMIN=admin
    KEYCLOAK_ADMIN_PASSWORD=admin
    
  5. Запускаем контейнеры Docker

    docker compose up
  6. Создаем пользователя в keycloak. Для этого переходим по ссылке localhost:8080, далее консоль администратора. Вводим логин и пароль сохраненные в .env. Далее создаем клиента, вписываем client_id и ставим галочку на client authenication. После чего переходим в профиль созданного клиента. Копируем client secret во вкладке credentials. Добавляем переменные в .env

    CLIENT_ID=your_client_id
    CLIENT_SECRET=your_client_secret
    
  7. Получаем jwt-токен

    python3 _gettoken.py

Для проверки работоспособности используем api:

  1. Создаем миграции:

    docker compose exec backend python manage.py migrate
  2. Создаём суперпользователя Django

    docker compose exec backend python manage.py migrate
    
  3. Переходим в админ панель localhost:8000/admin и создаем там пользователя с client_id, добавляем эндпоинты для тестирования localhost:8000/service1 и localhost:8000/service2 и добавляем доступ пользователю к одному из эдпоинтов.

  4. Отправляем запрос на оба эндпоинта, добавив в header jwt ключ в формате jwt: your_jwt_key. В результате с эндпоинта, к которому есть доступ приходит код 200, а с другого код 403. Токен действует ограниченное время, поэтому если он истек, в ответе эндпоинта будет код 401

Технический стек:

  • Django = 4.2.5
  • djangorestframework = 3.14.0
  • PyJWT = 2.8.0
  • Postgres
  • Docker
  • Keycloak

Автор: mitsushidu

About

Независимая система авторизации по jwt-токену, созданная в рамках хакатона usetech.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 97.7%
  • Dockerfile 2.3%