committed by
GitHub
1 changed files with 101 additions and 0 deletions
@ -0,0 +1,101 @@ |
|||||
|
# Sicherheit |
||||
|
|
||||
|
Es gibt viele Wege, Sicherheit, Authentifizierung und Autorisierung zu handhaben. |
||||
|
|
||||
|
Und normalerweise ist es ein komplexes und „schwieriges“ Thema. |
||||
|
|
||||
|
In vielen Frameworks und Systemen erfordert allein die Handhabung von Sicherheit und Authentifizierung viel Aufwand und Code (in vielen Fällen kann er 50 % oder mehr des gesamten geschriebenen Codes ausmachen). |
||||
|
|
||||
|
**FastAPI** bietet mehrere Tools, die Ihnen helfen, schnell und auf standardisierte Weise mit **Sicherheit** umzugehen, ohne alle Sicherheits-Spezifikationen studieren und erlernen zu müssen. |
||||
|
|
||||
|
Aber schauen wir uns zunächst ein paar kleine Konzepte an. |
||||
|
|
||||
|
## In Eile? |
||||
|
|
||||
|
Wenn Ihnen diese Begriffe egal sind und Sie einfach *jetzt* Sicherheit mit Authentifizierung basierend auf Benutzername und Passwort hinzufügen müssen, fahren Sie mit den nächsten Kapiteln fort. |
||||
|
|
||||
|
## OAuth2 |
||||
|
|
||||
|
OAuth2 ist eine Spezifikation, die verschiedene Möglichkeiten zur Handhabung von Authentifizierung und Autorisierung definiert. |
||||
|
|
||||
|
Es handelt sich um eine recht umfangreiche Spezifikation, und sie deckt mehrere komplexe Anwendungsfälle ab. |
||||
|
|
||||
|
Sie umfasst Möglichkeiten zur Authentifizierung mithilfe eines „Dritten“ („third party“). |
||||
|
|
||||
|
Das ist es, was alle diese „Login mit Facebook, Google, Twitter, GitHub“-Systeme unter der Haube verwenden. |
||||
|
|
||||
|
### OAuth 1 |
||||
|
|
||||
|
Es gab ein OAuth 1, das sich stark von OAuth2 unterscheidet und komplexer ist, da es direkte Spezifikationen enthält, wie die Kommunikation verschlüsselt wird. |
||||
|
|
||||
|
Heutzutage ist es nicht sehr populär und wird kaum verwendet. |
||||
|
|
||||
|
OAuth2 spezifiziert nicht, wie die Kommunikation verschlüsselt werden soll, sondern erwartet, dass Ihre Anwendung mit HTTPS bereitgestellt wird. |
||||
|
|
||||
|
!!! tip "Tipp" |
||||
|
Im Abschnitt über **Deployment** erfahren Sie, wie Sie HTTPS mithilfe von Traefik und Let's Encrypt kostenlos einrichten. |
||||
|
|
||||
|
|
||||
|
## OpenID Connect |
||||
|
|
||||
|
OpenID Connect ist eine weitere Spezifikation, die auf **OAuth2** basiert. |
||||
|
|
||||
|
Sie erweitert lediglich OAuth2, indem sie einige Dinge spezifiziert, die in OAuth2 relativ mehrdeutig sind, um zu versuchen, es interoperabler zu machen. |
||||
|
|
||||
|
Beispielsweise verwendet der Google Login OpenID Connect (welches seinerseits OAuth2 verwendet). |
||||
|
|
||||
|
Aber der Facebook Login unterstützt OpenID Connect nicht. Es hat seine eigene Variante von OAuth2. |
||||
|
|
||||
|
### OpenID (nicht „OpenID Connect“) |
||||
|
|
||||
|
Es gab auch eine „OpenID“-Spezifikation. Sie versuchte das Gleiche zu lösen wie **OpenID Connect**, basierte aber nicht auf OAuth2. |
||||
|
|
||||
|
Es handelte sich also um ein komplett zusätzliches System. |
||||
|
|
||||
|
Heutzutage ist es nicht sehr populär und wird kaum verwendet. |
||||
|
|
||||
|
## OpenAPI |
||||
|
|
||||
|
OpenAPI (früher bekannt als Swagger) ist die offene Spezifikation zum Erstellen von APIs (jetzt Teil der Linux Foundation). |
||||
|
|
||||
|
**FastAPI** basiert auf **OpenAPI**. |
||||
|
|
||||
|
Das ist es, was erlaubt, mehrere automatische interaktive Dokumentations-Oberflächen, Codegenerierung, usw. zu haben. |
||||
|
|
||||
|
OpenAPI bietet die Möglichkeit, mehrere Sicherheits„systeme“ zu definieren. |
||||
|
|
||||
|
Durch deren Verwendung können Sie alle diese Standards-basierten Tools nutzen, einschließlich dieser interaktiven Dokumentationssysteme. |
||||
|
|
||||
|
OpenAPI definiert die folgenden Sicherheitsschemas: |
||||
|
|
||||
|
* `apiKey`: ein anwendungsspezifischer Schlüssel, der stammen kann von: |
||||
|
* Einem Query-Parameter. |
||||
|
* Einem Header. |
||||
|
* Einem Cookie. |
||||
|
* `http`: Standard-HTTP-Authentifizierungssysteme, einschließlich: |
||||
|
* `bearer`: ein Header `Authorization` mit dem Wert `Bearer` plus einem Token. Dies wird von OAuth2 geerbt. |
||||
|
* HTTP Basic Authentication. |
||||
|
* HTTP Digest, usw. |
||||
|
* `oauth2`: Alle OAuth2-Methoden zum Umgang mit Sicherheit (genannt „Flows“). |
||||
|
* Mehrere dieser Flows eignen sich zum Aufbau eines OAuth 2.0-Authentifizierungsanbieters (wie Google, Facebook, Twitter, GitHub usw.): |
||||
|
* `implicit` |
||||
|
* `clientCredentials` |
||||
|
* `authorizationCode` |
||||
|
* Es gibt jedoch einen bestimmten „Flow“, der perfekt für die direkte Abwicklung der Authentifizierung in derselben Anwendung verwendet werden kann: |
||||
|
* `password`: Einige der nächsten Kapitel werden Beispiele dafür behandeln. |
||||
|
* `openIdConnect`: bietet eine Möglichkeit, zu definieren, wie OAuth2-Authentifizierungsdaten automatisch ermittelt werden können. |
||||
|
* Diese automatische Erkennung ist es, die in der OpenID Connect Spezifikation definiert ist. |
||||
|
|
||||
|
|
||||
|
!!! tip "Tipp" |
||||
|
Auch die Integration anderer Authentifizierungs-/Autorisierungsanbieter wie Google, Facebook, Twitter, GitHub, usw. ist möglich und relativ einfach. |
||||
|
|
||||
|
Das komplexeste Problem besteht darin, einen Authentifizierungs-/Autorisierungsanbieter wie solche aufzubauen, aber **FastAPI** reicht Ihnen die Tools, das einfach zu erledigen, während Ihnen die schwere Arbeit abgenommen wird. |
||||
|
|
||||
|
## **FastAPI** Tools |
||||
|
|
||||
|
FastAPI stellt für jedes dieser Sicherheitsschemas im Modul `fastapi.security` verschiedene Tools bereit, die die Verwendung dieser Sicherheitsmechanismen vereinfachen. |
||||
|
|
||||
|
In den nächsten Kapiteln erfahren Sie, wie Sie mit diesen von **FastAPI** bereitgestellten Tools Sicherheit zu Ihrer API hinzufügen. |
||||
|
|
||||
|
Und Sie werden auch sehen, wie dies automatisch in das interaktive Dokumentationssystem integriert wird. |
Loading…
Reference in new issue