設定密碼保護你的 FastAPI Docs|抬升 Raise

更新於 2021/03/05閱讀時間約 4 分鐘
這篇文章要教你如何透過權限控管,保護 FastAPI 生成的 API 文件,讓使用者需要經過授權才能進去
FastAPI 是一個 Python 的後端框架,具有自動生成 API 文件頁面的特色,幫助開發者可以快速開發並測試 API。
FastAPI 自動生成的的 API 文件
圖片取自 FastAPI 文件
然而,這些文件會隨著伺服器的部署,一同被公開到網路上。如果你想要避免閒雜人等進入 API 文件,可以參考以下的步驟:

1. 關閉預設 API Docs

透過在創建 App 時加上以下變數,可以關閉預設 API 文件功能。
from fastapi import FastAPI
app = FastAPI(docs_url=None, redoc_url=None, openapi_url = None)

2. 新增 HTTP Basic Auth 帳號密碼驗證

透過下列程式,我們新增一個驗證物件供 API 使用。
只要在建立 API 時加上這個物件,就會需要經過帳號密碼驗證才能使用該 API
import secrets
from fastapi import Depends, FastAPI, HTTPException, status
from fastapi.security import HTTPBasic, HTTPBasicCredentials


security = HTTPBasic()

def get_current_username(credentials: HTTPBasicCredentials = Depends(security)):
correct_username = secrets.compare_digest(credentials.username, "user")
correct_password = secrets.compare_digest(credentials.password, "password")
if not (correct_username and correct_password):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect email or password",
headers={"WWW-Authenticate": "Basic"},
)
return credentials.username

3. 成立文件後台的 API 並加上驗證機制

我們手動撰寫生成文件後台與 OpenAPI.json 的 API 並加上授權驗證
from fastapi.openapi.docs import get_swagger_ui_html
from fastapi.openapi.utils import get_openapi

@app.get("/docs", include_in_schema=False)
async def get_documentation(username: str = Depends(get_current_username)):
return get_swagger_ui_html(openapi_url="/openapi.json", title="docs")


@app.get("/openapi.json", include_in_schema=False)
async def openapi(username: str = Depends(get_current_username)):
return get_openapi(title = "FastAPI", version="0.1.0", routes=app.routes)

4. 完成,運行服務並至 /docs 登入查看文件

如果依照上面的範例,帳號是 user,密碼是 password,請視情況更改帳號密碼,或運用環境變數、設定檔導入。
成功的話你會看到如下圖的畫面

完整程式碼

Originally published at https://tsraise.com on March 5, 2021.
    avatar-img
    1會員
    13內容數
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    抬升 Raise的沙龍 的其他內容
    這篇文章分享我如何透過使用瀏覽器內建的編輯文字工具,大幅提高我的工作效率
    在我的前一篇文章中,我玩雙鍵盤,而為評估雙鍵盤的打字成效,我使用打字速度測試工具評估單、雙鍵盤的打字速度差異。令人意外的是,單、雙鍵盤,對打字速度的結果差不多。為什麼會這樣呢?以下是我的解釋。
    因為想丟的研究計畫,跟 AI 與人的互動有關,於是決定看這部電影。其講述人類與 AI 如何互動的想像。這篇文章記錄我的觀影心得。
    這篇文章將說明我如何在 MacOS 使用雙鍵盤配置改善我的打字體驗,以及我的使用結果評測。評測結果發現在打字速度測驗上單雙鍵盤速度並沒有差異,但在實際寫程式上,還是單鍵盤會比較快速。
    這篇文章分享我如何透過使用瀏覽器內建的編輯文字工具,大幅提高我的工作效率
    在我的前一篇文章中,我玩雙鍵盤,而為評估雙鍵盤的打字成效,我使用打字速度測試工具評估單、雙鍵盤的打字速度差異。令人意外的是,單、雙鍵盤,對打字速度的結果差不多。為什麼會這樣呢?以下是我的解釋。
    因為想丟的研究計畫,跟 AI 與人的互動有關,於是決定看這部電影。其講述人類與 AI 如何互動的想像。這篇文章記錄我的觀影心得。
    這篇文章將說明我如何在 MacOS 使用雙鍵盤配置改善我的打字體驗,以及我的使用結果評測。評測結果發現在打字速度測驗上單雙鍵盤速度並沒有差異,但在實際寫程式上,還是單鍵盤會比較快速。
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    不知道大家平常有沒有使用私密處保養品或是有看過私密處保養品牌推薦的?我覺得對我們女生來說保養真的是非常重要的一件事情,前陣子天氣很熱,朋友說要去游泳池游泳然後我在更衣室的時候我就聞到一股很重很重的腥味,我真的是完全不行,我不知道是哪裡傳來的,後來發現好像是旁邊的一個看起來也是二十幾歲的女生傳來的感覺
    Thumbnail
    這篇文章我們要繼續介紹另一個產品『傾倒偵測貼紙(Tiltwatch)』,這是一款能偵測快遞包裹是否受到傾斜或倒放後變色的貼紙。
    Thumbnail
    我想要進一步分享一個事半功倍的關鍵方法:找出你的ROLE MODEL. 為什麼這很重要? 因為有個參考目標可以幫助你釐清自己想要的方向,從觀摩他人的成功模式找到有效率的方式前進,可以縮短撞牆摸索的期間。
    Thumbnail
    ​ 新北市淡水區的福祐宮俗稱淡水媽祖廟,建立於清朝乾隆皇帝壬寅四十七年(西元一七八二年)創建,至今年已經有三百三十八年歷史,是淡水最早草創的廟宇。 新北市定古蹟福佑宮相關資訊:: ​ 新北市淡水區中正路200號 ​ 02   2621     1731 ​ AM6:00-PM20:30 ​ 新北市定
    Thumbnail
    今天文章的所有圖片 就是要告訴各位 同樣的一波能量 (一件事)  你可以決定折射出 彩虹般的能量 (看事情的方向) 歡迎,親愛的讀者 我們大角星團體以及這一邊的其他人視你為引領集體的光之團體,但你們大多數人認為你什麼都沒在做。你沒有伴隨著抗議和顯著的行動在引領,而是在伴隨著你超前的意識之光
    Thumbnail
    你會不會害怕打針或抽血呢?動物同樣會對打針抽血感到緊張害怕,而大多會使出渾身解數的招式來躲避檢查,比如說是像泥鰍一樣扭動身軀趁機會逃離診療台,或者是跟獸醫師正面對決,用銳利的爪子及牙齒表達牠們的不悅。在這種情況下,如何讓動物在檢查過程中保持穩定就顯得非常重要……
    薪資保密的議題其實一點也不新鮮,甚至可以說是個被討論已久的主題. 但不論過了多久,這個主題依然會被勞工(受薪階級)熱烈地討論著,因為薪水代表的事情太多太多了,也因此每個人看待薪資的角度都會有微妙的不同. 以下從三個角度,來探討薪水代表的事情吧! 1.同事的角度 與你職位愈接近的同
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    不知道大家平常有沒有使用私密處保養品或是有看過私密處保養品牌推薦的?我覺得對我們女生來說保養真的是非常重要的一件事情,前陣子天氣很熱,朋友說要去游泳池游泳然後我在更衣室的時候我就聞到一股很重很重的腥味,我真的是完全不行,我不知道是哪裡傳來的,後來發現好像是旁邊的一個看起來也是二十幾歲的女生傳來的感覺
    Thumbnail
    這篇文章我們要繼續介紹另一個產品『傾倒偵測貼紙(Tiltwatch)』,這是一款能偵測快遞包裹是否受到傾斜或倒放後變色的貼紙。
    Thumbnail
    我想要進一步分享一個事半功倍的關鍵方法:找出你的ROLE MODEL. 為什麼這很重要? 因為有個參考目標可以幫助你釐清自己想要的方向,從觀摩他人的成功模式找到有效率的方式前進,可以縮短撞牆摸索的期間。
    Thumbnail
    ​ 新北市淡水區的福祐宮俗稱淡水媽祖廟,建立於清朝乾隆皇帝壬寅四十七年(西元一七八二年)創建,至今年已經有三百三十八年歷史,是淡水最早草創的廟宇。 新北市定古蹟福佑宮相關資訊:: ​ 新北市淡水區中正路200號 ​ 02   2621     1731 ​ AM6:00-PM20:30 ​ 新北市定
    Thumbnail
    今天文章的所有圖片 就是要告訴各位 同樣的一波能量 (一件事)  你可以決定折射出 彩虹般的能量 (看事情的方向) 歡迎,親愛的讀者 我們大角星團體以及這一邊的其他人視你為引領集體的光之團體,但你們大多數人認為你什麼都沒在做。你沒有伴隨著抗議和顯著的行動在引領,而是在伴隨著你超前的意識之光
    Thumbnail
    你會不會害怕打針或抽血呢?動物同樣會對打針抽血感到緊張害怕,而大多會使出渾身解數的招式來躲避檢查,比如說是像泥鰍一樣扭動身軀趁機會逃離診療台,或者是跟獸醫師正面對決,用銳利的爪子及牙齒表達牠們的不悅。在這種情況下,如何讓動物在檢查過程中保持穩定就顯得非常重要……
    薪資保密的議題其實一點也不新鮮,甚至可以說是個被討論已久的主題. 但不論過了多久,這個主題依然會被勞工(受薪階級)熱烈地討論著,因為薪水代表的事情太多太多了,也因此每個人看待薪資的角度都會有微妙的不同. 以下從三個角度,來探討薪水代表的事情吧! 1.同事的角度 與你職位愈接近的同