https://github.com/awl-s/fingerprint
https://github.com/awl-s/fingerprint
Last synced: 3 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/awl-s/fingerprint
- Owner: Awl-S
- Created: 2023-05-23T16:08:36.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-11-09T07:19:25.000Z (over 1 year ago)
- Last Synced: 2025-02-26T01:24:20.553Z (over 1 year ago)
- Language: Go
- Size: 7.81 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# OAuth Server
OAuth сервер на основе Go и фреймворка Gin для авторизации устройств через их уникальные "fingerprints", состоящие из комбинации IP-адреса и User-Agent.
## Описание
Этот сервер предоставляет простой механизм авторизации устройств. Он генерирует уникальные "fingerprints" для каждого устройства на основе его IP-адреса и User-Agent. Если устройство уже было авторизовано, оно получает ответ "already authorized", если нет — "authorized".
Этот сервер можно использовать в различных приложениях для ограниченной авторизации по устройствам, например, для валидации новых устройств или повышения безопасности.
## Особенности
- Генерация уникальных "fingerprints" на основе IP-адреса и User-Agent.
- Проверка авторизации устройства на основе уникального "fingerprint".
- Обработка запросов с помощью HTTP метода GET.
- Простой и быстрый процесс установки и развертывания.
## Структура проекта
Проект состоит из следующих компонентов:
1. **`main.go`** — Основной файл, содержащий логику сервера и обработчики запросов.
2. **`oauthServer`** — Структура для хранения данных об авторизованных устройствах.
## Установка
### Требования
- Go 1.18+.
- Gin Framework для работы с HTTP запросами.
### Шаги для установки
1. Клонируйте репозиторий:
```bash
git clone https://github.com/yourcompany/oauth-server.git
```
2. Перейдите в директорию проекта:
```bash
cd oauth-server
```
3. Установите зависимости:
```bash
go mod tidy
```
4. Запустите сервер:
```bash
go run main.go
```
Сервер будет доступен по адресу `http://localhost:8080`.
## Использование
1. Для того чтобы авторизовать устройство, отправьте GET-запрос на путь `/authorize`:
```bash
curl -X GET http://localhost:8080/authorize
```
2. Ответ сервера будет следующим:
- Если устройство авторизовано ранее:
```json
{
"status": "already authorized"
}
```
- Если устройство авторизовано в первый раз:
```json
{
"status": "authorized"
}
```
## Архитектура
### `OAuthServer`
Структура `OAuthServer` отвечает за хранение всех уникальных "fingerprints". Когда устройство впервые пытается авторизоваться, его "fingerprint" сохраняется в память и далее используется для проверки последующих попыток авторизации.
### HTTP обработчик
Обработчик `AuthorizeHandler` получает IP-адрес клиента и его User-Agent, генерирует уникальный "fingerprint" и проверяет, был ли он уже сохранен в списке авторизованных устройств. Если "fingerprint" уже существует, сервер возвращает статус "already authorized". В противном случае, устройство считается авторизованным и "fingerprint" добавляется в список.
## Развертывание в продакшн
Для развертывания OAuth сервера в продакшн необходимо учитывать следующие моменты:
- Применение HTTPS для защиты данных при передаче.
- Мониторинг состояния сервера (например, с помощью Prometheus).
- Возможность настройки дополнительного слоя безопасности, например, капчи или двухфакторной аутентификации.
## Лицензия
Этот проект распространяется под лицензией MIT.