214 lines
11 KiB
Markdown
214 lines
11 KiB
Markdown
# Harmony
|
||
|
||
Давайте добавим раздел о запуске вашего проекта Django в README файл, чтобы новые пользователи и разработчики могли легко начать работу.
|
||
|
||
---
|
||
|
||
## Запуск проекта Django
|
||
|
||
Чтобы запустить проект Django локально, следуйте этим шагам:
|
||
|
||
### Шаг 1: Клонирование репозитория
|
||
|
||
|
||
|
||
```bash
|
||
git clone https://git.myterior.kz/Lowlight_Akbota/Harmony
|
||
cd djangoproject1
|
||
```
|
||
|
||
|
||
### Шаг 2: Установка зависимостей
|
||
|
||
Убедитесь, что у вас установлен Python и pip. Затем установите зависимости проекта:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
Это установит все необходимые библиотеки Python, указанные в файле `requirements.txt`.
|
||
|
||
### Шаг 3: Настройка базы данных
|
||
|
||
Проекты Django часто используют базу данных для хранения данных. Выполните миграции, чтобы настроить вашу базу данных:
|
||
|
||
```bash
|
||
python manage.py migrate
|
||
```
|
||
|
||
### Шаг 4: Создание суперпользователя (необязательно)
|
||
|
||
Чтобы получить доступ к административной панели Django, создайте суперпользователя:
|
||
|
||
```bash
|
||
python manage.py createsuperuser
|
||
```
|
||
|
||
Следуйте инструкциям на экране, чтобы завершить создание.
|
||
|
||
### Шаг 5: Запуск сервера разработки
|
||
|
||
Запустите локальный сервер разработки Django:
|
||
|
||
```bash
|
||
python manage.py runserver
|
||
```
|
||
|
||
После запуска сервера, ваше приложение будет доступно по адресу [http://localhost:8000](http://localhost:8000) в вашем веб-браузере.
|
||
|
||
### Шаг 6: Переход к аутентификации через Keycloak
|
||
|
||
Чтобы начать процесс аутентификации через Keycloak, перейдите по URL, который вы настроили для входа через Keycloak (например, `/login`), который инициирует перенаправление на страницу входа Keycloak.
|
||
|
||
---
|
||
|
||
Добавив этот раздел в ваш README файл, вы предоставите четкие инструкции по запуску и базовой настройке вашего Django проекта. Это облегчит новым пользователям и разработчикам начало работы с вашим проектом и поможет им быстрее ориентироваться в его структуре и функциональности.
|
||
|
||
|
||
|
||
Давайте интегрируем Keycloak с Django и добавим соответствующий раздел в README, чтобы описать процесс интеграции и использования. Это будет дополнительный раздел в вашем README файле, посвященный настройке аутентификации через Keycloak.
|
||
|
||
---
|
||
|
||
|
||
|
||
## Интеграция Keycloak с Django
|
||
|
||
Keycloak предоставляет систему управления идентификацией и доступом, которую можно интегрировать с вашим приложением Django для аутентификации пользователей. Ниже приведены шаги для настройки и интеграции Keycloak с Django.
|
||
|
||
### Шаг 1: Настройка Keycloak
|
||
|
||
1. **Создание Realm**: Войдите в административную панель Keycloak и создайте новый realm.
|
||
|
||
2. **Создание Client**: Внутри созданного realm создайте новый client. Задайте `Client ID` и укажите `Valid Redirect URIs` (например, `http://localhost:8000/*` для разработки). Также, выберите `confidential` в качестве типа доступа и сохраните секретный ключ клиента.
|
||
|
||
3. **Пользователи**: Создайте пользователей в Keycloak, которые будут использоваться для входа в ваше Django приложение.
|
||
|
||
### Шаг 2: Настройка Django
|
||
|
||
Для интеграции Keycloak с Django, вам понадобится установить библиотеку, которая упростит взаимодействие с Keycloak, например, `python-keycloak` или аналогичную.
|
||
|
||
#### Установка зависимостей
|
||
|
||
```bash
|
||
pip install python-keycloak
|
||
```
|
||
|
||
#### Конфигурация
|
||
|
||
Добавьте настройки Keycloak в `settings.py` вашего проекта Django:
|
||
|
||
```python
|
||
KEYCLOAK_CONFIG = {
|
||
'SERVER_URL': 'http://keycloak-server/auth/',
|
||
'REALM': 'your-realm',
|
||
'CLIENT_ID': 'your-client-id',
|
||
'CLIENT_SECRET': 'your-client-secret',
|
||
'CALLBACK_URL': 'http://localhost:8000/callback/',
|
||
}
|
||
```
|
||
|
||
### Шаг 3: Реализация Аутентификации
|
||
|
||
Используйте предоставленные ранее функции для реализации процесса аутентификации:
|
||
|
||
- `keycloak_login` для инициации процесса входа через Keycloak.
|
||
- `keycloak_redirect` для обработки перенаправления от Keycloak после аутентификации пользователя.
|
||
|
||
### Шаг 4: Маршрутизация
|
||
|
||
Добавьте URL-маршруты в `urls.py` для обработки входа через Keycloak и обратного перенаправления:
|
||
|
||
```python
|
||
from django.urls import path
|
||
from .views import keycloak_login, keycloak_redirect
|
||
|
||
urlpatterns = [
|
||
path('login/', keycloak_login, name='keycloak_login'),
|
||
path('callback/', keycloak_redirect, name='keycloak_redirect'),
|
||
]
|
||
```
|
||
|
||
### Шаг 5: Запуск
|
||
|
||
Запустите ваше приложение Django и используйте `/login` для начала процесса аутентификации через Keycloak.
|
||
|
||
---
|
||
|
||
|
||
Понял, давайте включим в README детали о функциях, которые вы мне предоставили, описывая их использование в контексте интеграции Keycloak с Django. Это поможет создать полное руководство по интеграции.
|
||
|
||
---
|
||
|
||
## Использование Keycloak для аутентификации в Django
|
||
|
||
После настройки Keycloak и Django, вам нужно будет использовать следующие функции для обработки аутентификации:
|
||
|
||
### Функция `keycloak_login`
|
||
|
||
Эта функция инициирует процесс аутентификации пользователя, перенаправляя его на страницу входа в Keycloak.
|
||
|
||
```python
|
||
def keycloak_login(request):
|
||
# Создаем экземпляр Keycloak OpenID клиента с вашими настройками
|
||
keycloak_openid = KeycloakOpenID(
|
||
server_url=settings.KEYCLOAK_CONFIG['SERVER_URL'],
|
||
client_id=settings.KEYCLOAK_CONFIG['CLIENT_ID'],
|
||
realm_name=settings.KEYCLOAK_CONFIG['REALM'],
|
||
client_secret_key=settings.KEYCLOAK_CONFIG['CLIENT_SECRET']
|
||
)
|
||
|
||
# Получаем URL для аутентификации от Keycloak и перенаправляем пользователя
|
||
redirect_uri = settings.KEYCLOAK_CONFIG['CALLBACK_URL']
|
||
auth_url = keycloak_openid.auth_url(redirect_uri=redirect_uri)
|
||
return redirect(auth_url)
|
||
```
|
||
|
||
### Функция `keycloak_redirect`
|
||
|
||
Эта функция обрабатывает перенаправление от Keycloak после аутентификации пользователя, извлекая код авторизации и обменивая его на токен доступа.
|
||
|
||
```python
|
||
@require_http_methods(["GET"])
|
||
def keycloak_redirect(request):
|
||
# Извлекаем код авторизации из запроса
|
||
authorization_code = request.GET.get('code')
|
||
if authorization_code:
|
||
# Здесь вы можете обменять код на токен и произвести дальнейшие действия
|
||
return HttpResponse("Authorization code received.")
|
||
else:
|
||
return HttpResponse("Authorization code not found.", status=400)
|
||
```
|
||
|
||
### Взаимодействие с Keycloak
|
||
|
||
Для управления сессиями и пользователями, вы можете использовать функции `get_keycloak_admin_token`, `get_user_sessions`, и `logout_user`. Эти функции позволяют вам программно управлять сессиями пользователя в Keycloak, включая их выход из системы.
|
||
|
||
#### Получение административного токена
|
||
|
||
```python
|
||
def get_keycloak_admin_token():
|
||
# Код для получения административного токена Keycloak
|
||
```
|
||
|
||
#### Получение сессий пользователя
|
||
|
||
```python
|
||
def get_user_sessions(admin_token, user_id):
|
||
# Код для получения списка сессий пользователя
|
||
```
|
||
|
||
#### Выход пользователя
|
||
|
||
```python
|
||
def logout_user(admin_token, session_id):
|
||
# Код для завершения сессии пользователя
|
||
```
|
||
|
||
### Интеграция с вашим Django приложением
|
||
|
||
Используйте эти функции в вашем Django приложении для управления процессом аутентификации и сессиями пользователя. Вы можете настроить перенаправления, обработку ошибок и уведомления для пользователя в соответствии с вашими требованиями безопасности и пользовательским опытом.
|
||
|
||
---
|
||
|
||
Это руководство по интеграции Keycloak с Django поможет обеспечить безопасную и удобную систему аутентификации в вашем веб-приложении. Включение этих функций и их описаний в ваш README файл улучшит документацию проекта и поможет другим разработчикам понять, как использовать эти возможности в своих проектах. |