<< Click to Display Table of Contents >> Navigation: Strukturen und Muster > TOTP Structure |
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.
•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:
•EnumTOTPAlgorithm - md5, sha1, sha256, sha512
•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
•totpDisabled (true)
•totpFixedNumber - Integer
•totpQRAccepted - Boolean (false)
•totpSecret - Array of Bytes
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
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 |