Browse Source

Update tutorial/security/simple-oauth2.md

Forgot the `tutorial/` in the messages of the two previous `Update` commits, but it was already pushed. Sorry about that.
pull/14015/head
Nils Lindemann 2 weeks ago
parent
commit
aac2e8c04c
  1. 44
      docs/de/docs/tutorial/security/simple-oauth2.md

44
docs/de/docs/tutorial/security/simple-oauth2.md

@ -1,8 +1,8 @@
# Einfaches OAuth2 mit Password und Bearer
# Einfaches OAuth2 mit Password und Bearer { #simple-oauth2-with-password-and-bearer }
Lassen Sie uns nun auf dem vorherigen Kapitel aufbauen und die fehlenden Teile hinzufügen, um einen vollständigen Sicherheits-Flow zu erhalten.
## `username` und `password` entgegennehmen
## `username` und `password` entgegennehmen { #get-the-username-and-password }
Wir werden **FastAPIs** Sicherheits-Werkzeuge verwenden, um den `username` und das `password` entgegenzunehmen.
@ -18,7 +18,7 @@ Aber für die Login-*Pfadoperation* müssen wir diese Namen verwenden, um mit de
Die Spezifikation besagt auch, dass `username` und `password` als Formulardaten gesendet werden müssen (hier also kein JSON).
### <abbr title="Geltungsbereich">`scope`</abbr>
### <abbr title="Geltungsbereich">`scope`</abbr> { #scope }
Ferner sagt die Spezifikation, dass der Client ein weiteres Formularfeld "`scope`" („Geltungsbereich“) senden kann.
@ -32,7 +32,7 @@ Diese werden normalerweise verwendet, um bestimmte Sicherheitsberechtigungen zu
* `instagram_basic` wird von Facebook / Instagram verwendet.
* `https://www.googleapis.com/auth/drive` wird von Google verwendet.
/// info
/// info | Info
In OAuth2 ist ein „Scope“ nur ein String, der eine bestimmte erforderliche Berechtigung deklariert.
@ -44,11 +44,11 @@ Für OAuth2 sind es einfach nur Strings.
///
## Code, um `username` und `password` entgegenzunehmen.
## Code, um `username` und `password` entgegenzunehmen. { #code-to-get-the-username-and-password }
Lassen Sie uns nun die von **FastAPI** bereitgestellten Werkzeuge verwenden, um das zu erledigen.
### `OAuth2PasswordRequestForm`
### `OAuth2PasswordRequestForm` { #oauth2passwordrequestform }
Importieren Sie zunächst `OAuth2PasswordRequestForm` und verwenden Sie es als Abhängigkeit mit `Depends` in der *Pfadoperation* für `/token`:
@ -72,7 +72,7 @@ Wenn Sie es erzwingen müssen, verwenden Sie `OAuth2PasswordRequestFormStrict` a
* Eine optionale `client_id` (benötigen wir für unser Beispiel nicht).
* Ein optionales `client_secret` (benötigen wir für unser Beispiel nicht).
/// info
/// info | Info
`OAuth2PasswordRequestForm` ist keine spezielle Klasse für **FastAPI**, so wie `OAuth2PasswordBearer`.
@ -84,7 +84,7 @@ Da es sich jedoch um einen häufigen Anwendungsfall handelt, wird er zur Vereinf
///
### Die Formulardaten verwenden
### Die Formulardaten verwenden { #use-the-form-data }
/// tip | Tipp
@ -102,7 +102,7 @@ Für den Fehler verwenden wir die Exception `HTTPException`:
{* ../../docs_src/security/tutorial003_an_py310.py hl[3,79:81] *}
### Das Passwort überprüfen
### Das Passwort überprüfen { #check-the-password }
Zu diesem Zeitpunkt liegen uns die Benutzerdaten aus unserer Datenbank vor, das Passwort haben wir jedoch noch nicht überprüft.
@ -112,7 +112,7 @@ Sie sollten niemals Klartext-Passwörter speichern, daher verwenden wir ein (gef
Wenn die Passwörter nicht übereinstimmen, geben wir denselben Fehler zurück.
#### Passwort-Hashing
#### Passwort-Hashing { #password-hashing }
„Hashing“ bedeutet: Konvertieren eines Inhalts (in diesem Fall eines Passworts) in eine Folge von Bytes (ein schlichter String), die wie Kauderwelsch aussieht.
@ -120,7 +120,7 @@ Immer wenn Sie genau den gleichen Inhalt (genau das gleiche Passwort) übergeben
Sie können jedoch nicht vom Kauderwelsch zurück zum Passwort konvertieren.
##### Warum Passwort-Hashing verwenden?
##### Warum Passwort-Hashing verwenden? { #why-use-password-hashing }
Wenn Ihre Datenbank gestohlen wird, hat der Dieb nicht die Klartext-Passwörter Ihrer Benutzer, sondern nur die Hashes.
@ -128,7 +128,7 @@ Der Dieb kann also nicht versuchen, die gleichen Passwörter in einem anderen Sy
{* ../../docs_src/security/tutorial003_an_py310.py hl[82:85] *}
#### Über `**user_dict`
#### Über `**user_dict` { #about-user-dict }
`UserInDB(**user_dict)` bedeutet:
@ -144,13 +144,13 @@ UserInDB(
)
```
/// info
/// info | Info
Eine ausführlichere Erklärung von `**user_dict` finden Sie in [der Dokumentation für **Extra Modelle**](../extra-models.md#uber-user_indict){.internal-link target=_blank}.
Eine ausführlichere Erklärung von `**user_dict` finden Sie in [der Dokumentation für **Extra Modelle**](../extra-models.md#about-user-in-dict){.internal-link target=_blank}.
///
## Den Token zurückgeben
## Den Token zurückgeben { #return-the-token }
Die Response des `token`-Endpunkts muss ein JSON-Objekt sein.
@ -182,7 +182,7 @@ Den Rest erledigt **FastAPI** für Sie.
///
## Die Abhängigkeiten aktualisieren
## Die Abhängigkeiten aktualisieren { #update-the-dependencies }
Jetzt werden wir unsere Abhängigkeiten aktualisieren.
@ -196,7 +196,7 @@ In unserem Endpunkt erhalten wir also nur dann einen Benutzer, wenn der Benutzer
{* ../../docs_src/security/tutorial003_an_py310.py hl[58:66,69:74,94] *}
/// info
/// info | Info
Der zusätzliche Header `WWW-Authenticate` mit dem Wert `Bearer`, den wir hier zurückgeben, ist ebenfalls Teil der Spezifikation.
@ -214,11 +214,11 @@ Das ist der Vorteil von Standards ...
///
## Es in Aktion sehen
## Es in Aktion sehen { #see-it-in-action }
Öffnen Sie die interaktive Dokumentation: <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>.
### Authentifizieren
### Authentifizieren { #authenticate }
Klicken Sie auf den Button „Authorize“.
@ -234,7 +234,7 @@ Nach der Authentifizierung im System sehen Sie Folgendes:
<img src="/img/tutorial/security/image05.png">
### Die eigenen Benutzerdaten ansehen
### Die eigenen Benutzerdaten ansehen { #get-your-own-user-data }
Verwenden Sie nun die Operation `GET` mit dem Pfad `/users/me`.
@ -260,7 +260,7 @@ Wenn Sie auf das Schlosssymbol klicken und sich abmelden und dann den gleichen V
}
```
### Inaktiver Benutzer
### Inaktiver Benutzer { #inactive-user }
Versuchen Sie es nun mit einem inaktiven Benutzer und authentisieren Sie sich mit:
@ -278,7 +278,7 @@ Sie erhalten die Fehlermeldung „Inactive user“:
}
```
## Zusammenfassung
## Zusammenfassung { #recap }
Sie verfügen jetzt über die Tools, um ein vollständiges Sicherheitssystem basierend auf `username` und `password` für Ihre API zu implementieren.

Loading…
Cancel
Save