OAuth

Thema 4 und 5 Brünnler

Thema 4 und 5 Brünnler


B. F.
Diese Lernkarten behandeln das OAuth-Protokoll auf Universitätsniveau und konzentrieren sich auf die verschiedenen OAuth-Flows, Token-Typen und Sicherheitsmechanismen. Sie erklären, wie Clients, Server und Ressourcen miteinander interagieren, um Autorisierungen durchzuführen, und gehen auf spezifische Endpunkte wie UserInfo und Check ID ein. Die Karteikarten sind besonders nützlich für Entwickler und IT-Spezialisten, die OAuth in ihren Anwendungen implementieren oder verstehen möchten, da sie detaillierte Informationen zu den einzelnen Schritten, Token-Eigenschaften und Sicherheitsaspekten bieten.
Flashcards
39
Students
1
Language
German
Category
Computer Science
Level
University
Created / Updated
13.01.2019 / 24.01.2019

Flashcards

Was ist der Grundgedanke von OAuth bzw was will damit verhindert werden?

Zugriff auf Daten/Ressourcen von einer Dritt-Applikationen gewähren ohne dabei seine Credentials an diese Partei bekannt geben zu müssen

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.

Wie sieht der High-level Flow aus um ein mittels einem Authorization Server Zugriff auf eine Ressource zu erhalten?

Zeichnen Sie es in das untenstehende Bild ein

Alice gibt dem Authorization Server das OK, dass auf die Ressource zugegriffen werden kann

Authorization Server stellt der Web App ein access token aus.

Web Applikation führt Request mit access token aus

 

Was ist bearer authentication / bearer token?

Bearer authentication auch token authentication genannt.

Ist die authentication/authorization mittels einem Token

bearer = Träger 

Wie sollte der access/bearer token bei einer Request übermittelt werden?

mittels dem HTTP Header

Ist ein access token langlebig oder kurzlebig?

kurzlebig, typischerweise 30min gültig

Damit OAuth funktioniert, muss vorgängig der Client (Webapplikation) mit dem Authorization Server registriert werden.

Welche Informationen muss der Client bekanntgeben und welche der Authorization Server?

Client: Name und redirect URL

Authorization server: client_id, client secret

Wie sieht der Web Application Authorization Flow von OAuth aus? Es sind fünf Schritte

In welchem Schritt befinden wir uns hier?

Schritt A

im welchem Schritt befinden wir uns hier?

Schritt B & C

In welchem Schritt befinden wir uns hier?

Schritt D

In welchem Schritt befinden wir uns hier?

Schritt E

In was unterscheiden sich der access token und der der refresh token?

Der refresh token besitzt die Eigenschaft, dass er access tokens erneuern kann. So muss nicht jedes Mal der User interagieren

refresh tokens laufen nicht ab, access tokens jedoch schon

Access token wird im header geschickt, refresh token wird im POST geschickt

In welchen Schritten sollten man HTTPS verwenden?

in allen

Warum schickt der authorization server nicht direkt einen access token stattdessen einen Authorization Code?

 

least priviliges -> user agent braucht den access_token gar nicht, also wird ihm dieser auch nicht geschickt...

What kind of CSRF attack would be possible, if the client didn’t check the variable state?

die Variable state wird mit der Session ID gefüllt. Damit ist garantiert, dass der Authorization Code ausschliesslich mit der selben Session ausgestellt werden kann

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?

- Dieser Flow wird dann verwendet wenn der Client auch gleichzeitig der Resource Owner ist

- Braucht dennoch Registration des Clients

- Beispiel: Facebbok verwendet dieses Verfahren damit 3th Party Apps auf die User-Statistiken zugreifen können

- Empfohlen für Machine to machine communication

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?

Ist ein weiterer Endpoint für den Authorization Server

Damit können einem OAuth authorization Server Informationen über einen ausgestellten Token abgefragt werden.

- Beispiele der Infos sind: ablaufdatum, access_type, scope, usw. Siehe auch Bild

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 Chain Grant Type Profile und was kann damit gemacht werden?

Ist ein weiterer Endpoint für den Authorization Server

Damit kann ein Ressource Server Daten von einem weiteren Ressource Server mit dem selben TOken abfragen.

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

Was ist der Unterschied zwischen Internal und Delegated Identity?

Internal: Credentials wegen vonder Applikation gesichert und abgelegt

Delegated: Credentials liegen bei einem Idp (identity provider) und werden bei der Anmeldung dort abgefragt/verglichen

Wie sieht der OpenID Connect Flow aus?

Der ist gleich wie OAuth. Jedoch werden mehr Informationen mitgegeben. SIehe Bild

-Scope ist ein anderer

-zusätzlich noch ein id_token

 

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)

 

Für was wird der UserInfo Endpoint verwendet?

Die Infos im id_token ist lediglich eine Laufnummer des Users. Um also mehr Informationen über den User zu erhalten, muss der UserInfo Endpoint abgefragt werden.

Dieser Request wird nomal mit dem Access token aufgerufen.

Warum ist die id_token signiert? Was könnte sonst gemacht werden?

Es wäre eine Replay Attacke möglich bei Client Side Flow. 

Im Audience Eintrag steht wer die Abfrage starten kann. Deshalb kann der TOken nicht für andere Dienste verwenden.

Da er auch signiert ist, kann dieser nicht verändert werden.

Study