• Keine Ergebnisse gefunden

Single Sign-On im Web mittels JWT

N/A
N/A
Protected

Academic year: 2022

Aktie "Single Sign-On im Web mittels JWT"

Copied!
31
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Single Sign-On im Web mittels JWT

Marjan Bachtiari

1

(2)

1. Wofür das Ganze?

2. Grundlagen JWT

2.1. Überblick

2.2. Struktur eines Tokens 2.3. Zwei Arten von JWT

3. Single Sign-On

3.1. Im Allgemeinen 3.2. Mittels JWT

3.2.1. Erstellung 3.2.2. Validierung

4. Kleines Code Beispiel 5. Zusammenfassung

2

Aufbau

(3)

1. Wofür das Ganze?

3

(4)

In welchem Bereich bewegen wir uns?

4

(5)

Wieso ist das interessant?

5

(6)

2. Grundlagen JWT

6

(7)

2.1 Überblick

7

(8)

Was ist JWT

8

● offener Industriestandard [RFC7519]

● kompakt

● URL-safe

● “nur” ein Mittel, um Claims auszutauschen

(9)

Kompakt

9

● HTTP Authorisierungsheader geeignet (begrenzter Platz)

● erreicht durch JSON-Format

(10)

10

● also URL-encoded

nur in URL darstellbare ASCII-Zeichen verwendet

URL-safe

(11)

11

● JWT repräsentiert Set von Claims

● Claim = Name/ Value-Paar

Repräsentation von Claims

(12)

2.2 Struktur eines Tokens

12

(13)

13

● Header

“typ” und “alg” idR enthalten

● Payload

“iss”, “exp” und “iat” vor allem interessant

● Signatur

berechnet über Hash von Header und Payload

Grundsätzlicher Aufbau

(14)

2.3 Zwei Arten von JWTs

14

(15)

JWTs codiert als JWE oder JWS

15

(16)

16

● durch digitale Signatur oder MAC gesicherte JSON Struktur

● Aufbau:

JWS - JSON Web Signature

(17)

17

● durch Verschlüsselung geschütztes JSON Objekt

● Aufbau:

JWE - JSON Web Encryption

(18)

18

● Aufbau augenscheinlich

● Verschiedene Algorithmen-Arten in “alg” hinterlegt

● JWS hat payload, JWE ciphertext

Paar Unterschiede

(19)

3. Single Sign-On

19

(20)

3.1 Im Allgemeinen

20

(21)

3.2 Mittels JWT

21

(22)

3.2.1 Erstellung

22

1. JWT Claim Set mit gewünschten Claims definieren 2. Nachricht = BASE64URL(UTF8(JWT Claim Set))

3. Header generieren mit gewünschten Params (typ und alg) 4. BASE64URL(UTF8(JWS Protected Header))

(23)

3.2.1 Erstellung

23

5. JWS Signatur gemäß gewähltem Algorithmus berechnen 6. BASE64URL(JWS Signatur)

7. Wenn geschachtelt, wieder bei 3.) anfangen (Payload = jetzige JWS, in Header cty:JWT)

8. erhaltenes JWT als JWS-Repräsentation

(24)

3.2.2 Validierung

24

Wenn einer der folgenden Schritte fehl schlägt, muss JWT abgelehnt werden 1. Verifizieren, dass JWT mind. 1 Punkt enthält

2. Base64url decode den encoded Header

3. Verifizieren, dass resultierende Bytes UTF-8 codierte Repräsentation von gültigem JSON Objekt sind

4. Wenn geschachtelte Signaturen, alle einzeln prüfen, ansonsten Ergebnis 3. = Header

(25)

3.2.2 Validierung

25

5. Verifizieren, dass resultierender Header nur Params und Werte enthält, die verstanden und unterstützt werden

6. Base64url decode den JWS Payload 7. Base64url decode die JWS Signatur

8. Signatur gegen eigene berechnete Signatur validieren 9. Wenn geschachtelt, wiederhole 4 - 8

10. Ausschließlich wenn alle Signaturen/ MACs gestimmt haben, JWT validiert

(26)

4. Kleines Code Beispiel

26

(27)

Token Generierung in Rails

27

(28)

5. Zusammenfassung

28

(29)

29

● kleiner Overhead

● einfache Nutzung über verschiedene Domains hinweg

● Zustand User nicht auf Server gespeichert (zustandslose Authentifizierung)

● kann den Bedarf von DB-Abfragen senken, da self-contained

(30)

Vielen Dank für Eure Aufmerksamkeit!

30

(31)

31

* RFC7519

* RFC7515

* RFC7159

* RFC4949

* RFC2104

* https://developer.atlassian.com/static/connect/docs/latest/concepts/understanding-jwt.html

* https://jwt.io/

* https://github.com/jwt/ruby-jwt

* https://securedb.co/community/jwt-vs-jws-vs-jwe/

* http://jose.readthedocs.org/en/latest/

* Folien Hübner IT-Sicherheit WS15/16

Quellenangaben

Referenzen

ÄHNLICHE DOKUMENTE

user name(s) and password) are stored in a session database encrypted using AES in CBC mode, using a 256 bit encryption key and a 128 bit initialization vector (IV).. These two

Beachten Sie hierbei, dass Sie nicht auf das automatische Hot-Deployment (JWS) von Axis zurückgreifen, sondern den Web Service als kompilierte Klasse über den zu erstellenden

The reason why HoK+ mitigates the RelayState Spoofing attack is that no SAML assertion will be issued by IdP in case of an attack, since the authentication request is bound to the

These fundamental enhancements can be achieved through the introduction of a Security Assertion Markup Language (SAML) based (Shibboleth) single sign-on framework, adapted to

Außerdem erreicht Single Sign-On beim Endbenutzer eine sehr hohe Akzeptanz, da, im Ge- gensatz zu vielen anderen Security-Lösungen, der Benutzer nicht eingeschränkt wird,

∗ WPA2 (AES: Advanced Encryption Standard, CCMP: Counter Cipher Mode with Block Chai- ning Message Authentication Code Protocol).

Einfache Bestimmung, ob es eine Verbindung zwischen zwei Knoten

[r]