W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
有許多方法可以處理安全性、身份認(rèn)證和授權(quán)等問(wèn)題。
而且這通常是一個(gè)復(fù)雜而「困難」的話題。
在許多框架和系統(tǒng)中,僅處理安全性和身份認(rèn)證就會(huì)花費(fèi)大量的精力和代碼(在許多情況下,可能占編寫的所有代碼的 50% 或更多)。
FastAPI 提供了多種工具,可幫助你以標(biāo)準(zhǔn)的方式輕松、快速地處理安全性,而無(wú)需研究和學(xué)習(xí)所有的安全規(guī)范。
但首先,讓我們來(lái)看一些小的概念。
如果你不關(guān)心這些術(shù)語(yǔ),而只需要立即通過(guò)基于用戶名和密碼的身份認(rèn)證來(lái)增加安全性,請(qǐng)?zhí)D(zhuǎn)到下一章。
OAuth2是一個(gè)規(guī)范,它定義了幾種處理身份認(rèn)證和授權(quán)的方法。
它是一個(gè)相當(dāng)廣泛的規(guī)范,涵蓋了一些復(fù)雜的使用場(chǎng)景。
它包括了使用「第三方」進(jìn)行身份認(rèn)證的方法。
這就是所有帶有「使用 Facebook,Google,Twitter,GitHub 登錄」的系統(tǒng)背后所使用的機(jī)制。
有一個(gè) OAuth 1,它與 OAuth2 完全不同,并且更為復(fù)雜,因?yàn)樗苯影擞嘘P(guān)如何加密通信的規(guī)范。
如今它已經(jīng)不是很流行,沒(méi)有被廣泛使用了。
OAuth2 沒(méi)有指定如何加密通信,它期望你為應(yīng)用程序使用 HTTPS 進(jìn)行通信。
Tip
在有關(guān)部署的章節(jié)中,你將了解如何使用 Traefik 和 Let's Encrypt 免費(fèi)設(shè)置 HTTPS。
OpenID Connect 是另一個(gè)基于 OAuth2 的規(guī)范。
它只是擴(kuò)展了 OAuth2,并明確了一些在 OAuth2 中相對(duì)模糊的內(nèi)容,以嘗試使其更具互操作性。
例如,Google 登錄使用 OpenID Connect(底層使用OAuth2)。
但是 Facebook 登錄不支持 OpenID Connect。它具有自己的 OAuth2 風(fēng)格。
還有一個(gè)「OpenID」規(guī)范。它試圖解決與 OpenID Connect 相同的問(wèn)題,但它不是基于 OAuth2。
因此,它是一個(gè)完整的附加系統(tǒng)。
如今它已經(jīng)不是很流行,沒(méi)有被廣泛使用了。
OpenAPI(以前稱為 Swagger)是用于構(gòu)建 API 的開(kāi)放規(guī)范(現(xiàn)已成為 Linux Foundation 的一部分)。
FastAPI 基于 OpenAPI。
這就是使多個(gè)自動(dòng)交互式文檔界面,代碼生成等成為可能的原因。
OpenAPI 有一種定義多個(gè)安全「方案」的方法。
通過(guò)使用它們,你可以利用所有這些基于標(biāo)準(zhǔn)的工具,包括這些交互式文檔系統(tǒng)。
OpenAPI 定義了以下安全方案:
Tip
集成其他身份認(rèn)證/授權(quán)提供者(例如Google,F(xiàn)acebook,Twitter,GitHub等)也是可能的,而且較為容易。
最復(fù)雜的問(wèn)題是創(chuàng)建一個(gè)像這樣的身份認(rèn)證/授權(quán)提供程序,但是 FastAPI 為你提供了輕松完成任務(wù)的工具,同時(shí)為你解決了重活。
FastAPI 在 fastapi.security 模塊中為每個(gè)安全方案提供了幾種工具,這些工具簡(jiǎn)化了這些安全機(jī)制的使用方法。
在下一章中,你將看到如何使用 FastAPI 所提供的這些工具為你的 API 增加安全性。
而且你還將看到它如何自動(dòng)地被集成到交互式文檔系統(tǒng)中。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: