OAuth
Thema 4 und 5 Brünnler
Thema 4 und 5 Brünnler
-
- 1 / 39
-
Cartes-fiches
Was ist das Password Anti-Pattern und was für Probleme können mit diesem Pattern bestehen?
Password Anti-Pattern: Applikation/Webseite verlangt die Credentials einer Dritt-Webseite um auf die Ressourcen zuzugreifen
Probleme:
- Damit gibt man der Applikation vollen Zugriff auf die Drittapplikation
- Applikation muss das Passwort der Drittapplikation irgendwo bei sich ablegen
- Revocation schwierig
- Geringere Empfindlichkeit des Benutzers gegenüber Phishing
Bei OAuth wird kein Passwort verlangt. Mit was wird der Zugriff gewährleistet und welche Eigenschaften hat es?
Um Zugriff auf gewisse Ressourcen zu gewährleisten wird für die Seite ein ACCESS TOKEN ausgestellt.
Der Token ist zeitlich limitiert und kann revoziert werden
Wer stellt bei OAuth den Access Token aus?
Der Authorziation Server
In was unterscheiden sich OAuth 1.0 und 2.0
OAuth 1.0: Signaturbasierend -> API Requests mussten signiert werden
OAuth 2.0: Bearer tokens, braucht jedoch zwingend SSL -> API Requests müssen einfach Token mitgeben
Für was steht Auth im Wort OAuth?
Steht für Authorziation, und nicht wie viele denken, für Authentication
authorization: give authority or official power to do something
Welche vier Rollen gibt es bei OAuth?
Resource Server: hostet die Ressourcen auf welche zugegriffen werden soll. Meist ein API Provider
Ressource Owner: Besitzer der Ressourcen. Typischerweise der Enduser
Client: Führt die Requests im Namen des Ressource Owners aus. Typischerweise eine Web App oder Mobile App
Authorization Server: Holt die Zustimmung des Ressourcenbesitzers ein und erteilt dem Client einen access token.
Was ist bearer authentication / bearer token?
Bearer authentication auch token authentication genannt.
Ist die authentication/authorization mittels einem Token
bearer = Träger
Ist ein access token langlebig oder kurzlebig?
kurzlebig, typischerweise 30min gültig
In was unterscheiden sich der access token und der der refresh token?
Was gibt es für OAuth authorization flows?
- Server side flow / authorization code flow / web application flow (alles der selbe flow)
- client-side web application flow
- ressource owner password flow
- client credentials flow
Wie sieht der Client-Side Web Application Flow (implicit grant flow)aus und welche Eigenschaften hat er?
- Typisch für JS Applikationen welche im Browser laufen
- Keine Client Registration vorhanden da sie vom Ressource Owner nicht geheim gehalten werden kann.
- Kein Authorization Code vorhanden da der Access Token nicht vom Ressource Owner geheim gehalten werden kann
- Keine refresh tokens -> Grund? Weil API wird nur verwendet wenn der User die App startet. App läuft nicht wenn der User sie nicht startet
Wie sieht der Resource Owner Password Flow aus und welche Eigenschaften hat er?
- Client erhält die Resource owner credentials und schickt diese dem authorization server weiter
- Wird nur dann verwendet wenn der resource owner dem client vertraut.
- Ist dennoch besser als password anti-pattern:
- Client muss nämlich nicht das Passwort bei sich ablegen. Schickt es nur einmalig weiter damit er einen TOken erhält
- Token kann noch immer revoziert und eingeschränkt werden
Wie sieht der Client Credentials Flow aus und welche Eigenschaften hat er?
Was sind OAuth Profiles und welche gibt es?
Das sind Erweiterungen/Endpoints mit weiteren Möglichkeiten/Features um den OAuth Standard zu erweitern
- Token Introspection Profile
- Token Revocation Profile
- MAC Token Profile
- Chain Grand Type Profile
- Dynamic Client Registration Profile
Was ist ein Token Introspection Profile und was für Informationen liefert dieser?
Was ist ein Token Revocation Profile und was für Informationen liefert dieser?
Ist ein weiterer Endpoint für den Authorization Server
Damit kann einem OAuth authorization Server ein Token (refresh oder access)geschickt werden um ihn zu revozieren
Ist nur für den Client gedacht, aber nicht für Resource owner
Was ist ein MAC Token Profile und was kann damit gemacht werden?
Ist ein weiterer Endpoint für den Authorization Server
Damit kann einem OAuth authorization Server eine Nachricht ge MAC't geschickt werden statt mit einem Token
Was ist ein Dynamic Client Registration Profile und was kann damit gemacht werden?
Ist eine Erweiterung/Endpoint für den Authorization Server
Damit können Clients sich selber beim authorization server registrieren (client_id & client_secret generieren)
Anwendungsbeispiel: Mobile Apps. Dort will man nicht die selbe client_id und client_secret für alle Installationen der App
Was ist OpenID Connect?
OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server, as well as to obtain basic profile information about the End-User in an interoperable and REST-like manner.
Welches Problem löst OpenID
Man kann sich auf eine Webapp mit den Credentials von einer anderen Ressource (Google, FB, usw) anmelden.
Damit muss man sich nicht überall neu registrieren
Welche Eigenschaft hat ein OpenID Connect id_token?
Ist eigentlich nichts anderes als ein JWT (JSON Web Token) Base64 formatiert
Hier noch ein paar Infos zum JWT welche nützlich sein könnten:
The header contains the type of token and the hash algorithm used on the contents of the token.
The body, also called the payload, contains identity claims about a user. There are some claims with registered names, for things like the issuer of the token, the subject of the token (who the claims are about), and the time of issuance. Any number of additional claims with other names can be added. For the cases where the ID Token is returned in URLs, care must be taken to keep the JWT within the browser size limitations for URLs.
The signature is used by the recipient to verify that the sender of the JWT is who it says and to ensure that the message wasn't changed along the way.
Für was wird der Check ID Endpoint verwendet?
OpenID verlangt, dass die id_token Signatur verifiziert wird. (key=client_secret)
Es gibt Clients welche das nicht können oder dürfen und schicken deshalb den id_token an den Check ID Entpoint zum überprüfen.
Ist der TOken gültig, erhält man als Antwort ein JSON Objekt mit einigen Informationen (siehe Bild)