๐โโ - ๐ฅ ๐¶
โก๏ธ ๐ ๐ ๐ โ๏ธ ๐ ๐ฉโ๐ป ๐ ๏ธ ๐.
& ๐ โ๏ธ ๐ธ โ1๏ธโฃ ๐ โ๏ธ ๐ โก ๐ ๐ (โ๏ธ ๐ฑ ๐ธ).
& ๐ ๐ โ๏ธ ๐ ๐ธ ๐ โฎ๏ธ ๐ฉโ๐ป, โ๏ธ ๐ & ๐.
๐ฅ ๐ช โ๏ธ Oauth2๏ธโฃ ๐ ๐ โฎ๏ธ FastAPI.
โ๏ธ โก๏ธ ๐ ๐ ๐ฐ ๐ ๐ ๐ ๐ง ๐ ๐ ๐ฅ ๐ โน ๐ ๐ช.
โก๏ธ โ๏ธ ๐งฐ ๐ FastAPI ๐ต ๐โโ.
โ โซ๏ธ ๐¶
โก๏ธ ๐ฅ โ๏ธ ๐ & ๐ โ โซ๏ธ ๐ท, & โคด๏ธ ๐ฅ ๐ ๐ ๐ ๐ค โซ๏ธโ ๐ฅ.
โ main.py
¶
๐ ๐ผ ๐ main.py
:
from fastapi import Depends, FastAPI
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/items/")
async def read_items(token: str = Depends(oauth2_scheme)):
return {"token": token}
๐ โซ๏ธ¶
Info
๐ฅ โ python-multipart
.
๐คถ โ. pip install python-multipart
.
๐ โฉ๏ธ Oauth2๏ธโฃ โ๏ธ "๐จ ๐" ๐จ username
& password
.
๐ ๐ผ โฎ๏ธ:
$ uvicorn main:app --reload
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
โ โซ๏ธ¶
๐ถ ๐ ๐ฉบ: http://127.0.0.1:8000/docs.
๐ ๐ ๐ ๐ณ ๐ ๐:
โ ๐ผ โ
๐ โช โ๏ธ โจ ๐ "โ" ๐ผ.
& ๐ โก ๐ ๏ธ โ๏ธ ๐ฅ ๐ ๐-โถ๏ธ๏ธ โฉ ๐ ๐ ๐ช ๐.
& ๐ฅ ๐ ๐ โซ๏ธ, ๐ โ๏ธ ๐ฅ โ ๐จ ๐ username
& password
(& ๐ ๐ฆ ๐):
Note
โซ๏ธ ๐ซ ๐ค โซ๏ธโ ๐ ๐ ๐จ, โซ๏ธ ๐ ๐ซ ๐ท. โ๏ธ ๐ฅ ๐ ๐ค ๐ค.
๐ โ๏ธ ๐ซ ๐ธ ๐ ๐ฉโ๐ป, โ๏ธ โซ๏ธ ๐ ๐ง ๐งฐ ๐ ๐ฅ ๐ ๐ ๐ ๏ธ.
โซ๏ธ ๐ช โ๏ธ ๐ธ ๐ (๐ ๐ช ๐).
โซ๏ธ ๐ช โ๏ธ ๐ฅ ๐ฅณ ๐ธ & โ๏ธ.
& โซ๏ธ ๐ช โ๏ธ ๐, โน, โ & ๐ฏ ๐ ๐ธ.
password
๐ง¶
๐ โก๏ธ ๐ถ ๐ ๐ & ๐ค โซ๏ธโ ๐ ๐.
password
"๐ง" 1๏ธโฃ ๐ ("๐ง") ๐ฌ Oauth2๏ธโฃ, ๐ต ๐โโ & ๐ค.
Oauth2๏ธโฃ ๐ง ๐ ๐ฉโ๐ป โ๏ธ ๐ ๏ธ ๐ช ๐ฌ ๐ฝ ๐ ๐ ๐ฉโ๐ป.
โ๏ธ ๐ ๐ผ, ๐ FastAPI ๐ธ ๐ ๐ต ๐ ๏ธ & ๐ค.
, โก๏ธ ๐ โซ๏ธ โช๏ธโก๏ธ ๐ ๐ โ ๐:
- ๐ฉโ๐ป ๐
username
&password
๐ธ, & ๐ฏEnter
. - ๐ธ (๐โโ ๐ฉโ๐ป ๐ฅ) ๐จ ๐
username
&password
๐ฏ ๐ ๐ ๐ ๏ธ (๐ฃ โฎ๏ธtokenUrl="token"
). - ๐ ๏ธ โ
๐
username
&password
, & ๐จ โฎ๏ธ "๐ค" (๐ฅ ๐ซ ๐ ๏ธ ๐ ๐).- "๐ค" ๐ป โฎ๏ธ ๐ ๐ ๐ฅ ๐ช โ๏ธ โช โ ๐ ๐ฉโ๐ป.
- ๐, ๐ค โ ๐ โฎ๏ธ ๐ฐ.
- , ๐ฉโ๐ป ๐ โ๏ธ ๐น ๐ โ โช.
- & ๐ฅ ๐ค ๐, โ ๐. โซ๏ธ ๐ซ ๐ ๐งฒ ๐ ๐ ๐ ๐ท โพ (๐ ๐ผ).
- ๐ธ ๐ช ๐ ๐ค ๐ ๐ฑ.
- ๐ฉโ๐ป ๐ ๐ธ ๐ถ โ1๏ธโฃ ๐ ๐ธ ๐ธ ๐ฑ.
- ๐ธ ๐ช โ ๐
๐ฝ โช๏ธโก๏ธ ๐ ๏ธ.
- โ๏ธ โซ๏ธ ๐ช ๐ค ๐ ๐ฏ ๐.
- , ๐ โฎ๏ธ ๐ ๐ ๏ธ, โซ๏ธ ๐จ ๐
Authorization
โฎ๏ธ ๐ฒBearer
โ ๐ค. - ๐ฅ ๐ค ๐
foobar
, ๐Authorization
๐ ๐:Bearer foobar
.
FastAPI'โ OAuth2PasswordBearer
¶
FastAPI ๐ ๐ ๐งฐ, ๐ ๐ โ, ๐ ๏ธ ๐ซ ๐โโ โ.
๐ ๐ผ ๐ฅ ๐ โ๏ธ Oauth2๏ธโฃ, โฎ๏ธ ๐ ๐ง, โ๏ธ ๐จ ๐ค. ๐ฅ ๐ โ๏ธ OAuth2PasswordBearer
๐.
Info
"๐จ" ๐ค ๐ซ ๐ด ๐.
โ๏ธ โซ๏ธ ๐ 1๏ธโฃ ๐ โ๏ธ ๐ผ.
& โซ๏ธ ๐ช ๐ ๐ โ๏ธ ๐ผ, ๐ฅ ๐ Oauth2๏ธโฃ ๐ด & ๐ญ โซ๏ธโ โซ๏ธโ ๐ค โ1๏ธโฃ ๐ ๐ โฃ ๐ป ๐ ๐ช.
๐ ๐ผ, FastAPI ๐ ๐ โฎ๏ธ ๐งฐ ๐ โซ๏ธ.
๐โ ๐ฅ โ ๐ OAuth2PasswordBearer
๐ ๐ฅ ๐ถโโ๏ธ tokenUrl
๐ข. ๐ ๐ข ๐ ๐ ๐ ๐ฉโ๐ป (๐ธ ๐ ๐ฉโ๐ป ๐ฅ) ๐ โ๏ธ ๐จ username
& password
โ ๐ค ๐ค.
from fastapi import Depends, FastAPI
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/items/")
async def read_items(token: str = Depends(oauth2_scheme)):
return {"token": token}
Tip
๐ฅ tokenUrl="token"
๐ โ ๐ token
๐ ๐ฅ ๐ซ โ. โซ๏ธ โ ๐, โซ๏ธ ๐ ./token
.
โฉ๏ธ ๐ฅ โ๏ธ โ ๐, ๐ฅ ๐ ๐ ๏ธ ๐ https://example.com/
, โคด๏ธ โซ๏ธ ๐ ๐ https://example.com/token
. โ๏ธ ๐ฅ ๐ ๐ ๏ธ ๐ https://example.com/api/v1/
, โคด๏ธ โซ๏ธ ๐ ๐ https://example.com/api/v1/token
.
โ๏ธ โ ๐ โ โ ๐ญ ๐ ๐ธ ๐ง ๐ท ๐ง โ๏ธ ๐ผ ๐ โ ๐ณ.
๐ ๐ข ๐ซ โ ๐ ๐ / โก ๐ ๏ธ, โ๏ธ ๐ฃ ๐ ๐ /token
๐ 1๏ธโฃ ๐ ๐ฉโ๐ป ๐ โ๏ธ ๐ค ๐ค. ๐ โน โ๏ธ ๐, & โคด๏ธ ๐ ๐ ๏ธ ๐งพ โ๏ธ.
๐ฅ ๐ ๐ โ โ โก ๐ ๏ธ.
Info
๐ฅ ๐ ๐ถ โ "โ" ๐ ๐ช ๐ ๐ ๐ข ๐ tokenUrl
โฉ๏ธ token_url
.
๐ โฉ๏ธ โซ๏ธ โ๏ธ ๐ ๐ ๐ ๐. ๐ ๐ฅ ๐ ๐ช ๐ฌ ๐ ๐ ๐ ๐ซ ๐โโ โ ๐ ๐ช ๐ & ๐ โซ๏ธ ๐ ๐ โน ๐ โซ๏ธ.
oauth2_scheme
๐ข ๐ OAuth2PasswordBearer
, โ๏ธ โซ๏ธ "๐ง๐ฒ".
โซ๏ธ ๐ช ๐ค:
oauth2_scheme(some, parameters)
, โซ๏ธ ๐ช โ๏ธ โฎ๏ธ Depends
.
โ๏ธ โซ๏ธ¶
๐ ๐ ๐ช ๐ถโโ๏ธ ๐ oauth2_scheme
๐ โฎ๏ธ Depends
.
from fastapi import Depends, FastAPI
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/items/")
async def read_items(token: str = Depends(oauth2_scheme)):
return {"token": token}
๐ ๐ ๐ ๐ str
๐ ๐ ๏ธ ๐ข token
โก ๐ ๏ธ ๐ข.
FastAPI ๐ ๐ญ ๐ โซ๏ธ ๐ช โ๏ธ ๐ ๐ ๐ฌ "๐โโ โ" ๐ ๐ (& ๐ง ๐ ๏ธ ๐ฉบ).
๐ก โน
FastAPI ๐ ๐ญ ๐ โซ๏ธ ๐ช โ๏ธ ๐ OAuth2PasswordBearer
(๐ฃ ๐) ๐ฌ ๐โโ โ ๐ โฉ๏ธ โซ๏ธ ๐ โช๏ธโก๏ธ fastapi.security.oauth2.OAuth2
, โ ๐ ๐ โช๏ธโก๏ธ fastapi.security.base.SecurityBase
.
๐ ๐โโ ๐ ๐ ๐ ๏ธ โฎ๏ธ ๐ (& ๐ง ๐ ๏ธ ๐ฉบ) ๐ โช๏ธโก๏ธ SecurityBase
, ๐ โ FastAPI ๐ช ๐ญ โ ๐ ๏ธ ๐ซ ๐.
โซ๏ธโ โซ๏ธ ๐จ¶
โซ๏ธ ๐ ๐ถ & ๐ ๐จ ๐ Authorization
๐, โ
๐ฅ ๐ฒ Bearer
โ ๐ค, & ๐ ๐จ ๐ค str
.
๐ฅ โซ๏ธ ๐ซ ๐ Authorization
๐, โ๏ธ ๐ฒ ๐ซ โ๏ธ Bearer
๐ค, โซ๏ธ ๐ ๐จ โฎ๏ธ 4๏ธโฃ0๏ธโฃ1๏ธโฃ ๐ ๐ โ (UNAUTHORIZED
) ๐.
๐ ๐ซ โ๏ธ โ
๐ฅ ๐ค ๐ ๐จ โ. ๐ ๐ช ๐ญ ๐ ๐ฅ ๐ ๐ข ๐ ๏ธ, โซ๏ธ ๐ โ๏ธ str
๐ ๐ค.
๐ ๐ช ๐ โซ๏ธ โช ๐ ๐ฉบ:
๐ฅ ๐ซ โ ๐ฌ ๐ค, โ๏ธ ๐ โถ๏ธ โช.
๐¶
, 3๏ธโฃ โ๏ธ 4๏ธโฃ โ โธ, ๐ โช โ๏ธ ๐ ๐จ ๐โโ.