https://github.com/s-4i5/device-auth
Авторизация юзера через пин мобильного приложения
https://github.com/s-4i5/device-auth
golang grpc jwt-authentication mciroservice postgresql tls
Last synced: 6 months ago
JSON representation
Авторизация юзера через пин мобильного приложения
- Host: GitHub
- URL: https://github.com/s-4i5/device-auth
- Owner: S-4I5
- Created: 2024-07-09T23:18:36.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-21T20:53:19.000Z (over 1 year ago)
- Last Synced: 2025-01-25T08:26:40.185Z (about 1 year ago)
- Topics: golang, grpc, jwt-authentication, mciroservice, postgresql, tls
- Language: Go
- Homepage:
- Size: 95.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Device Auth
## 1. Description
Кластер сервисов, обеспечивающих авторизацию пользователя через мобильный телефон, как это сделано в банковских приложениях
## 2. Deployment
```
docker-compose up -d --build
```
## 3. Quick explanation / Flow
Есть два сервиса - user-service и device-service
Первый отвечает за работу с пользователя, второй - мобильными телефонами
Для начала нужно зарегистрировать новый device:
POST localhost:8081/api/v1/auth/sign-in
```
{
"phoneNumber" : "+xxx"
}
```
Он возвращает:
```
{
"codeToken" : "..."
}
```
Это токен, с которым нужно будет подтвердить устройство, используя код, который должен на него придти(в нашем случае он просто будет написан в консоль сервиса, денег на телефонию нет :skull:)
Подтверждаем устройство:
PATCH localhost:8081/api/v1/auth/verify-device?code={тут код} + codeToken
После запроса придёт уже device токен, с которым далее нужно трогать остальные эндпоинты
```
{
"token" : "..."
}
```
Установка пина:
PATCH localhost:8081/api/v1/auth/set-pin + device token
```
{
"pinCode" : "123"
}
```
Если всё ок - 200 и пустое тело
"Привязка" юзера:
Для этого необходимо получить токен юзера, которого необходимо привязать. Это можно сделать через /login || /sign-up в user-service //TODO: use something like "bind token" instead of user token
PATCH localhost:8081/api/v1/auth/bind-user + device token
```
{
"userToken" : "..."
}
```
Если всё ок - 200 и пустое тело
Далее можно логиниться:
POST localhost:8081/api/v1/auth/login
```
{
"pin" : "123"
}
```
И в ответ получим токен user-a, которому устройство было привязано)
```
{
"token" : "..."
}
```
Чтобы его проверить, можно получить инфо о юзере в user-service:
GET localhost:8080/api/v1/user/me
User-service sign-Up/login:
POST localhost:8080/api/v1/auth/sign-in:
```
{
"email" : "xxx@gmail.com",
"password" : "xxx",
"phoneNumber" : "xxx"
}
```
POST localhost:8080/api/v1/auth/login:
Если указан телефон - ищем пользователя используя его, иначе по почте
```
{
"email" : "xxx@gmail.com",
"password" : "xxx",
"phoneNumber" : "xxx"
}
```
В ответ везде получим:
```
{
"token" : "..."
}
```