An open API service indexing awesome lists of open source software.

https://github.com/awl-s/fingerprint


https://github.com/awl-s/fingerprint

Last synced: 3 days ago
JSON representation

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.