Атрибут client_secret
Атрибут client_secret принадлежит классу
OAuth2PasswordRequestForm и содержит секретную строку клиента,
переданную в теле POST-запроса. Значение приходит из поля
client_secret формы. Если поле не передано, атрибут принимает
значение None. Атрибут применяется при аутентификации
конфиденциальных клиентов, которым сервер выдал секрет вместе с
идентификатором client_id. Доступ к атрибуту получают через
объект формы, внедрённый в обработчик маршрута с помощью
Depends.
Синтаксис
form.client_secret
Пример
Давайте объявим маршрут, который принимает форму и выводит значение секрета клиента:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2PasswordRequestForm
app = FastAPI()
@app.post('/token')
def login(form: OAuth2PasswordRequestForm = Depends()):
return {'client_secret': form.client_secret}
Результат выполнения кода при передаче секрета 'abcde':
{"client_secret": "abcde"}
Пример
Давайте проверим секрет клиента и вернём признак успешной проверки:
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import OAuth2PasswordRequestForm
app = FastAPI()
@app.post('/token')
def login(form: OAuth2PasswordRequestForm = Depends()):
if form.client_secret != 'abcde':
raise HTTPException(status_code=401, detail='invalid client')
return {'client_id': form.client_id, 'grant_type': form.grant_type}
Результат выполнения кода при корректном секрете:
{"client_id": "user", "grant_type": "password"}
Пример
Давайте обработаем случай, когда секрет клиента не передан:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2PasswordRequestForm
app = FastAPI()
@app.post('/token')
def login(form: OAuth2PasswordRequestForm = Depends()):
if form.client_secret is None:
return {'client_secret': 'not provided'}
return {'client_secret': form.client_secret}
Результат выполнения кода без поля client_secret:
{"client_secret": "not provided"}
Смотрите также
-
класс
OAuth2PasswordRequestForm,
который описывает форму запроса токена -
атрибут
client_id,
который хранит идентификатор клиента -
атрибут
grant_type,
который хранит тип предоставления доступа -
функция
Depends,
которая внедряет форму в обработчик маршрута