TOTP Structure

<< Click to Display Table of Contents >>

Navigation:  Strukturen und Muster >

TOTP Structure

Beschreibung

TOTP Unterstützung fällt in die Zwei-Faktor-Authentifizierung. Dazu wird für jeden Benutzer ein Secret erstellt und in der Datenbank abgelegt. Dieses Secret kann man mittels der API nicht abrufen. Man kann allerdings jederzeit ein neues Secret erzeugen. Dem Benutzer ein QR Code eerstellt, den dieser mit dem Handy und der entsprechenden App regsitrieren kann.

Arbeitsmodell

Beim Anlegen eines Benutzers wird immer ein Secret erzeugt und beim neuen Nutzer abgelegt (die Konfigurationsdaten liegen beim Customer s.u.).

Beim Benutzer wird die Nutzung aber noch nicht freigeschaltet (totpDisabled = false, User Konfigurationsdaten s.u.).

Wenn sich der Benutzer neu anmeldet, dann checkt der Client ab, ob der Customer das gerne möchte (globalEnabled = true). Hat der Benutzer beim Login eine Nummer eingegeben und diese ist richtig, dann gilt der qrCode als accepted und beim Login wird zukünftig das neue Verfahren dem Benutzer vorgeschrieben (totpDisabled = false, totpQRAccepted = true ).

Wenn der Benutzer kein Handy hat, kann der Benutzer beim Admin ein neues Secret einfordern. Das Verfahren setzt die Authentifikation zurück (totpDisabled = true, totpQRAccepted = false ) via API createUserScret

Solange der Benutzer den QRCode noch nicht akzeptiert hat, kann er diesen immer wieder anfordern. In dem Client-UI-Dialog kann der Benutzer den QR Code mit seinem Handy scannen. In dem Dialog sollte auch ein Test-Modus sein, damit der Benutzer dies auch mal ausprobieren kann (via API userCheckTOTPCounter)

Der Benutzer kann jederzeit in seinen Apps die Secret selber neu erstellen lassen

Ein admin kann eine feste Nummer bei jedem Benutzer-Account hinterlegen, die ebenfalls getestet wird.

Folgender Änderungen am Modell werden angebracht:

Enumerations

EnumTOTPAlgorithm - md5, sha1, sha256, sha512

Customer

Es wird ein Konfigurationsobjekt beim Customer abgelegt, das die gesamten Konfigurationsdaten enthält:

oglobalEnabled (Boolean) - soll der Service überhaupt angeboten werden

oAlgorithmus (sha1) - enumeration

odigits

operiod

oIssuer

olabel

oURL to icon

oVordergrundfarbe

oHintergrundfarbe

oOpt. Server Path to local qrencode

Account (Benutzer)

Beim Benutzer kann man den TOTP-Check komplett ausschalten. Das ist z.B. in einem Fehlerfall notwendig.

totpDisabled (true)

totpFixedNumber - Integer

totpQRAccepted - Boolean (false)

totpSecret - Array of Bytes

PreloginStructure

Bei der Anmeldung sollte das Programm in das Lage sein herauszubekommen, ob TOTP gewünscht ist und das muß in den Login-APi Call ggfs eingetragen werden. Der Login-Dialog muß also ein entsprechendes Feld ausweisen.

 

totpSupportEnabled

totpDigits

 

API

Die folgende API wurde definiert:

Name

Parameter

Rückgabewert

Beschreibung

UserCheckTOTPCounter

integer, opt. userGop (admin usage)

true/false/error

Benutzer checkt einen aktuellen TOTP Code

GetTOTPConfiguration

customerGop

 

 

UpdateTOTPConfiguration

customerGop

 

 

GetUserTOTPConfiguration

userGop

 

 

UpdateUserTOTPConfiguration

userGop

 

 

UserAcceptQRCode

true/false

true/false/error

Benutzer akzeptiert den QR Code

GetUserQCode

opt. userGop (admin usage)

string

Gibt die URL zu einem PNG mit QR Code

CreateUserSecret

array of userGop, (opt.) customerGop

true/false/error

Erzeugt ein neues Secret beim Benutzer