Python auth lib for https://iam.stlcode.ru service
Project description
Библиотека для сервиса авторизации STLock (powered by SmartTechnoLab)
Статус: В разработке
Библиотека Python STLock
Быстрый старт
Пример с библиотекой FastAPI
pip install stlock
pip install fastapi
pip install uvicorn
main.py:
from fastapi import FastAPI, HTTPException, Body, Query
from stlock import AuthClient
# создание экземпляра класса
AC = AuthClient(
endpoint="https://d5du1ra5pgq6gr2ba1jc.apigw.yandexcloud.net/",
user_pool_id="USER_POOL_ID",
owner_id="OWNER_ID",
api_key="API_KEY"
)
app = FastAPI()
# Регистрация пользователя
@app.post("/register", status_code=201)
def register_user(username=Body(...), email=Body(...), phone=Body(...), password=Body(...)):
data, status_code = AC.register(username, email, phone, password)
if status_code >= 400:
raise HTTPException(status_code, data)
return data
# Авторизация пользователя
@app.post('/login')
def login(username: str = Body(...), password: str = Body(...)):
data, status_code = AC.authorize_user(username, password)
if status_code >= 400:
raise HTTPException(status_code, data)
return data
# Обмен refresh токена но новые refresh и access токены
@app.post("/refresh")
def do_refresh_token(refresh_token=Body(...)):
data, status_code = AC.do_refresh(refresh_token['refresh_token'])
if status_code >= 400:
raise HTTPException(status_code, data)
return data
# Отозвать refresh token для выхода из аккаунта
@app.post("/logout")
def do_refresh_token(refresh_token=Body(...)):
data, status_code = AC.unauthorized(refresh_token['refresh_token'])
if status_code >= 400:
raise HTTPException(status_code, data)
return data
# Получение информации из токена
@app.get("/user")
def get_user_info(token: str = Query(...)):
user_data = AC.decode(token)
return user_data
Для запуска сервера:
uvicorn main:app
Описание методов:
AC.register(username, email, phone, password)
Создаёт нового пользователя в базе данных
AC.authorize_user(username, password)
Авторизирует запрос на логин пользователя, выдаёт access & refresh токены
AC.decode(access_token)
Декодирует токен, возвращает словарь с данными о пользователе
AC.do_refresh(refresh_token)
Обменивает refresh token на новый access и refresh токены
AC.unauthorized(refresh_token)
Отзывает refresh_token
примеры запросов :
создание пользователя:
Input:
POST http://localhost:8000/register
Body {
"username": "test",
"email": "test@gmail.com",
"phone": "79111111111",
"password": "test"
}
Output:
{
"policy_ids": [],
"user_pool_id": "0e2173b5-b55f-4ea4-bec5-450e2c12a458",
"owner_id": "b3893a06-5931-4160-9e62-938ab173b6c8",
"username": "test6",
"email": "test6@gmail.com",
"phone": "79520546024",
"id": "a351d4db-4e7f-48ef-b667-e7af3a480086",
"status": "ACTIVE",
"creation_timestamp": 1693303651
}
авторизация пользователя:
Input:
POST http://localhost:8000/login
Body {
"username": "test",
"password": "test"
}
Output:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI3YWZkYjM5Yi0zZDZmLTQyZTMtODU1NS02NjE2OGRjYTczNDAiLCJleHAiOjE2OTMzMDQzMDEsImlhdCI6MTY5MzMwMzcwMSwidHlwZSI6IkFDQ0VTUyIsImF1ZCI6IlVTRVIiLCJzdWIiOiI1ZjMzMTE1MS00OWQxLTRkMTItYTk3Ny1hOTRhMjIzYTk0OGEiLCJvd25lcl9zdWIiOiJiMzg5M2EwNi01OTMxLTQxNjAtOWU2Mi05MzhhYjE3M2I2YzgiLCJ1c2VyX3Bvb2xfc3ViIjoiMGUyMTczYjUtYjU1Zi00ZWE0LWJlYzUtNDUwZTJjMTJhNDU4In0.gsVRcQ0R_tlL_s1aHz71YilLEuEH7Gyn3BgY6a4acgc",
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJhZTBjZWYwYS02MzU0LTRlYjYtODQwNi04NDY2NjE4ZGM1MDMiLCJleHAiOjE2OTMzMDczMDEsImlhdCI6MTY5MzMwMzcwMSwidHlwZSI6IlJFRlJFU0giLCJhdWQiOiJVU0VSIiwic3ViIjoiNWYzMzExNTEtNDlkMS00ZDEyLWE5NzctYTk0YTIyM2E5NDhhIiwib3duZXJfc3ViIjoiYjM4OTNhMDYtNTkzMS00MTYwLTllNjItOTM4YWIxNzNiNmM4IiwidXNlcl9wb29sX3N1YiI6IjBlMjE3M2I1LWI1NWYtNGVhNC1iZWM1LTQ1MGUyYzEyYTQ1OCJ9.MufGATyo2Co9evSRXd0yPTEhsLgYdb5r4qOUrsMwWmw"
}
Обновление токена:
Input:
POST http://localhost:8000/refresh
Body {
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI0MjRhYjhlMy0zMzA3LTQ0MjgtODY0Ny1iNjQzMTYwZjQxMjciLCJleHAiOjE2OTMzMDc0NDYsImlhdCI6MTY5MzMwMzg0NiwidHlwZSI6IlJFRlJFU0giLCJhdWQiOiJVU0VSIiwic3ViIjoiY2Y3ZmRmYzYtYTU0ZC00MDFlLWIxYTUtMGFiYmFkMWNjNjQzIiwib3duZXJfc3ViIjoiYjM4OTNhMDYtNTkzMS00MTYwLTllNjItOTM4YWIxNzNiNmM4IiwidXNlcl9wb29sX3N1YiI6IjBlMjE3M2I1LWI1NWYtNGVhNC1iZWM1LTQ1MGUyYzEyYTQ1OCJ9.KMHpDmVTJWsaY4L1Z6DwtiSapSNOKvRqr-4omb_96Fk"
}
Output:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiYjZjNmEzMC05Y2Y2LTQwNTEtODc5Yi1kMjU1YTQ2MjkxZDIiLCJleHAiOjE2OTMzMDQ0NTksImlhdCI6MTY5MzMwMzg1OSwidHlwZSI6IkFDQ0VTUyIsImF1ZCI6IlVTRVIiLCJzdWIiOiJjZjdmZGZjNi1hNTRkLTQwMWUtYjFhNS0wYWJiYWQxY2M2NDMiLCJvd25lcl9zdWIiOiJiMzg5M2EwNi01OTMxLTQxNjAtOWU2Mi05MzhhYjE3M2I2YzgiLCJ1c2VyX3Bvb2xfc3ViIjoiMGUyMTczYjUtYjU1Zi00ZWE0LWJlYzUtNDUwZTJjMTJhNDU4In0.GI_hkak_GhjdeSPH25K66fggB_QhNohyLQJ1PXoz3ag",
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIzNWJiOTVkNS0yOTFiLTQyNTQtOTU4Zi02NmE4YmQyY2NjZTEiLCJleHAiOjE2OTMzMDc0NTksImlhdCI6MTY5MzMwMzg1OSwidHlwZSI6IlJFRlJFU0giLCJhdWQiOiJVU0VSIiwic3ViIjoiY2Y3ZmRmYzYtYTU0ZC00MDFlLWIxYTUtMGFiYmFkMWNjNjQzIiwib3duZXJfc3ViIjoiYjM4OTNhMDYtNTkzMS00MTYwLTllNjItOTM4YWIxNzNiNmM4IiwidXNlcl9wb29sX3N1YiI6IjBlMjE3M2I1LWI1NWYtNGVhNC1iZWM1LTQ1MGUyYzEyYTQ1OCJ9.FfXom1owSaTjaFCBpj8nSZXK-d4MEetFpJCMvYQ44mQ"
}
Отзыв refresh токена:
Input:
POST http://localhost:8000/logout
Body {
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIzNWJiOTVkNS0yOTFiLTQyNTQtOTU4Zi02NmE4YmQyY2NjZTEiLCJleHAiOjE2OTMzMDc0NTksImlhdCI6MTY5MzMwMzg1OSwidHlwZSI6IlJFRlJFU0giLCJhdWQiOiJVU0VSIiwic3ViIjoiY2Y3ZmRmYzYtYTU0ZC00MDFlLWIxYTUtMGFiYmFkMWNjNjQzIiwib3duZXJfc3ViIjoiYjM4OTNhMDYtNTkzMS00MTYwLTllNjItOTM4YWIxNzNiNmM4IiwidXNlcl9wb29sX3N1YiI6IjBlMjE3M2I1LWI1NWYtNGVhNC1iZWM1LTQ1MGUyYzEyYTQ1OCJ9.FfXom1owSaTjaFCBpj8nSZXK-d4MEetFpJCMvYQ44mQ"
}
Output:
STATUS_CODE: 200
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stlock-0.0.9.tar.gz.
File metadata
- Download URL: stlock-0.0.9.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.0rc2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5dcf5beb33e91edb13f8d741b8351eb5d2db96483bc5a6ad4f5e06c0571ccbcc
|
|
| MD5 |
52a88cfd1c38aa7bdda1284c91374f19
|
|
| BLAKE2b-256 |
ce8dbe81717fa30f1d496404b41fc10d548518bd188c183664d2a6bb00bf1281
|
File details
Details for the file stlock-0.0.9-py3-none-any.whl.
File metadata
- Download URL: stlock-0.0.9-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.0rc2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47d3ee58773ac7259de2241cc197dabe1d524304d91f1a26f1bd4e1beb5160ff
|
|
| MD5 |
116ce22b279db694bb0bd927c2428e9b
|
|
| BLAKE2b-256 |
b01d7e30f0120a7a174ffa2c9ad25301fe2d6bee48bbafb7ef11fe7c733c43ac
|