Last active 1711463786

ThermalCube revised this gist 1711463786. Go to revision

1 file changed, 3 insertions, 1 deletion

gistfile1.txt renamed to OTP.md

@@ -1,3 +1,4 @@
1 + ```plantuml
1 2 @startuml
2 3
3 4 skin rose
@@ -56,4 +57,5 @@ RegisterAPI -> DB: UpdateOTP(CustomerInfo, OTP-Secret)
56 57 RegisterAPI -> User: OK
57 58
58 59
59 - @enduml
60 + @enduml
61 + ```

ThermalCube revised this gist 1711450019. Go to revision

1 file changed, 59 insertions

gistfile1.txt(file created)

@@ -0,0 +1,59 @@
1 + @startuml
2 +
3 + skin rose
4 +
5 + actor User
6 + participant RestAPI
7 + participant RegisterAPI
8 + database Redis
9 + database DB
10 +
11 + == Login ==
12 +
13 + User -> RestAPI: Login(Email, Passwort)
14 + RestAPI --> RestAPI: Login(Email, Password)
15 + RestAPI --> RestAPI: Generate TempToken
16 + RestAPI -> Redis: SET TempToken(CustomerInfo) TTL=120s
17 + RestAPI -> User: TempToken
18 +
19 + == OTP Recovery ==
20 +
21 + User -> RegisterAPI: OTP_Recovery(TempToken)
22 + RegisterAPI -> Redis: GET TempToken
23 + RegisterAPI --> RegisterAPI: Generate Captcha
24 + RegisterAPI -> User: Captcha-Bild
25 +
26 + == Captcha ==
27 +
28 + User -> RegisterAPI: Solve_Captcha(TempToken, Captcha-Code)
29 + RegisterAPI --> RegisterAPI: Validate Captcha
30 +
31 + RegisterAPI -> User: RecoveryContacts[]
32 + User -> RegisterAPI: Recover(TempToken, RecoveryContacts[0])
33 +
34 + == Send RecoveryToken ==
35 +
36 + RegisterAPI --> RegisterAPI: Generate RecoveryToken
37 + RegisterAPI -> DB: SET CustomerInfo(RecoveryToken)
38 + RegisterAPI -> User: Send_SMS(RecoveryToken)
39 +
40 + == Initialize new OTP ==
41 +
42 + User -> RegisterAPI: Initialize_OTP(TempToken, RecoveryToken)
43 + RegisterAPI -> Redis: SET CustomerInfo(OTP-Secret) TTL=?
44 + RegisterAPI -> Redis: GET TempToken(CustomerInfo)
45 + RegisterAPI -> DB: GET CustomerInfo(RecoveryToken)
46 + RegisterAPI --> RegisterAPI: Validate RecoveryToken
47 + RegisterAPI --> RegisterAPI: Generate OTP-Secret
48 + RegisterAPI -> User: OTP-Secret
49 + User --> User: Scan QR-Code/OTP-Secret
50 + User --> User: Generate_OTP(OTP-Secret)
51 + User -> RegisterAPI: Validate_OTP(TempToken, OTP-Code)
52 + RegisterAPI -> Redis: GET TempToken(CustomerInfo)
53 + RegisterAPI -> Redis: GET CustomerInfo(OTP-Secret)
54 + RegisterAPI --> RegisterAPI: Validate_OTP(OTP-Secret, OTP-Code)
55 + RegisterAPI -> DB: UpdateOTP(CustomerInfo, OTP-Secret)
56 + RegisterAPI -> User: OK
57 +
58 +
59 + @enduml
Newer Older