FastAPI教程 安全性簡(jiǎn)介

2021-11-03 09:38 更新

有許多方法可以處理安全性、身份認(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)看一些小的概念。

沒(méi)有時(shí)間?

如果你不關(guān)心這些術(shù)語(yǔ),而只需要立即通過(guò)基于用戶名和密碼的身份認(rèn)證來(lái)增加安全性,請(qǐng)?zhí)D(zhuǎn)到下一章。

OAuth2

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ī)制。

OAuth 1

有一個(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

OpenID Connect 是另一個(gè)基于 OAuth2 的規(guī)范。

它只是擴(kuò)展了 OAuth2,并明確了一些在 OAuth2 中相對(duì)模糊的內(nèi)容,以嘗試使其更具互操作性。

例如,Google 登錄使用 OpenID Connect(底層使用OAuth2)。

但是 Facebook 登錄不支持 OpenID Connect。它具有自己的 OAuth2 風(fēng)格。

OpenID(非「OpenID Connect」)

還有一個(gè)「OpenID」規(guī)范。它試圖解決與 OpenID Connect 相同的問(wèn)題,但它不是基于 OAuth2。

因此,它是一個(gè)完整的附加系統(tǒng)。

如今它已經(jīng)不是很流行,沒(méi)有被廣泛使用了。

OpenAPI

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 定義了以下安全方案:

  • apiKey:一個(gè)特定于應(yīng)用程序的密鑰,可以來(lái)自:查詢參數(shù)。請(qǐng)求頭。cookie。
  • http:標(biāo)準(zhǔn)的 HTTP 身份認(rèn)證系統(tǒng),包括:bearer: 一個(gè)值為 Bearer 加令牌字符串的 Authorization 請(qǐng)求頭。這是從 OAuth2 繼承的。HTTP Basic 認(rèn)證方式。HTTP Digest,等等。
  • oauth2:所有的 OAuth2 處理安全性的方式(稱為「流程」)。 *以下幾種流程適合構(gòu)建 OAuth 2.0 身份認(rèn)證的提供者(例如 Google,F(xiàn)acebook,Twitter,GitHub 等): * implicit * clientCredentials * authorizationCode但是有一個(gè)特定的「流程」可以完美地用于直接在同一應(yīng)用程序中處理身份認(rèn)證:password:接下來(lái)的幾章將介紹它的示例。
  • openIdConnect:提供了一種定義如何自動(dòng)發(fā)現(xiàn) OAuth2 身份認(rèn)證數(shù)據(jù)的方法。此自動(dòng)發(fā)現(xiàn)機(jī)制是 OpenID Connect 規(guī)范中定義的內(nèi)容。

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 實(shí)用工具

FastAPI 在 fastapi.security 模塊中為每個(gè)安全方案提供了幾種工具,這些工具簡(jiǎn)化了這些安全機(jī)制的使用方法。

在下一章中,你將看到如何使用 FastAPI 所提供的這些工具為你的 API 增加安全性。

而且你還將看到它如何自動(dòng)地被集成到交互式文檔系統(tǒng)中。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)