oauth2.0 stlock
Project description
Библиотека 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(
client_id="client", # id клиента
client_secret="secret", # secret клиента
code_redirect_uri="http://localhost:8000/code", # ссылка перенаправления запроса с кодом
service_endpoint="https://bbac70hrtmfdqn5drnga.containers.yandexcloud.net", # ссылка на сервис авторизации
)
# service_endpoint="https://bba6q6chdp0eatf6n0ms.containers.yandexcloud.net"
# dev версия проекта, очищается каждые 24 часа
app = FastAPI()
# Регистрация пользователя
@app.post("/register", status_code=201)
def register_user(username=Body(...), password=Body(...)):
data, status_code = AC.register(username, password)
if status_code >= 400:
raise HTTPException(status_code, data["detail"])
return data
# Авторизация пользователя, редирект на http://localhost:8000/code
@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["detail"])
return data
# Получение кода после редиректа, заполняется в code_redirect_uri
@app.get('/code')
def getcode(code=Query(None)):
data, status_code = AC.get_tokens(code)
if status_code >= 400:
raise HTTPException(status_code, data["detail"])
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'])
print(data, status_code)
if status_code >= 400:
raise HTTPException(status_code, data["detail"])
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, password)
Создаёт нового пользователя в базе данных
AC.authorize_user(username, password)
Авторизирует запрос на логин пользователя, перенаправляет на страницу с кодом в query запросе
AC.get_tokens(code)
Выдаёт токены пользователя (access, refresh)
AC.decode(token)
Декодирует токен, возвращает словарь с данными о пользователе
AC.do_refresh(token)
Обменивает refresh token на новый access и refresh токены
примеры запросов :
создание пользователя:
Input:
POST http://localhost:8000/register
Body {
"username": "user1",
"password": "Password123!"
}
Output:
{
"detail": "User registred"
}
авторизация пользователя:
Input:
POST http://localhost:8000/login
Body {
"username": "user1",
"password": "Password123!"
}
Output:
{
"access_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJjbGllbnQiLCJleHAiOjE2ODQ4NTgzNzgsInN1YiI6ImQ5YjBmYjE1LWJjYmQtNDNkNy1hMDdlLTAxNTIwMjBlZWI2ZiIsInJvbGUiOiJUZXN0In0.5_CHG7IR0DDulJcaPF8owduWsVsI2a5Vvbx-gyG_Xi2JIs9tpaPfJircy8WZXkeZ_3Mk8tAuvaxhTn7ytWXtdA",
"expires_in": 60,
"refresh_token": "MJFMYZGWNWQTNDA5MI01NTU0LTHIMMYTYTI4MJM0MTZKMJHM",
"token_type": "Bearer"
}
Информация о пользователе:
Input:
GET http://localhost:8000/user?token=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJjbGllbnQiLCJleHAiOjE2ODQ4NTgzNzgsInN1YiI6ImQ5YjBmYjE1LWJjYmQtNDNkNy1hMDdlLTAxNTIwMjBlZWI2ZiIsInJvbGUiOiJUZXN0In0.5_CHG7IR0DDulJcaPF8owduWsVsI2a5Vvbx-gyG_Xi2JIs9tpaPfJircy8WZXkeZ_3Mk8tAuvaxhTn7ytWXtdA
Output:
{
"aud": "client",
"exp": 1684858378,
"sub": "d9b0fb15-bcbd-43d7-a07e-0152020eeb6f",
"role": "Test"
}
Обновление токена:
Input:
POST http://localhost:8000/refresh
Body {
"refresh_token": "MJFMYZGWNWQTNDA5MI01NTU0LTHIMMYTYTI4MJM0MTZKMJHM"
}
Output:
{
"access_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJjbGllbnQiLCJleHAiOjE2ODQ4NTg0MzgsInN1YiI6ImQ5YjBmYjE1LWJjYmQtNDNkNy1hMDdlLTAxNTIwMjBlZWI2ZiIsInJvbGUiOiJUZXN0In0.5hFJg-U6i9E9GFp0Gxsn9ME3Dy-JtqKEyZotHT7WmnAsdZeLrDBjDU20ttb5f5HMLep8SWruTOoWjlfiZuGBKg",
"expires_in": 60,
"refresh_token": "NTC1ZDY5YJYTZTC0MC01ZJRMLTHJZTUTY2E1MMFJMTAZNZI0",
"token_type": "Bearer"
}
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
stlock-0.0.7.2.tar.gz
(3.7 kB
view details)
File details
Details for the file stlock-0.0.7.2.tar.gz.
File metadata
- Download URL: stlock-0.0.7.2.tar.gz
- Upload date:
- Size: 3.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
192798afa8fef2b1f0eaa610acb5ea82e7d0625f43b91b8ea5d9837e2112181f
|
|
| MD5 |
cb1c6577e89d906e0f74c2b764d7df0c
|
|
| BLAKE2b-256 |
c520ca907e33570cad38f8af3862cc958edcb4cf95bd8daa67a11ed6abe5bfac
|