Last active 1711463786

Revision e0dabe46f8f9accea04ae38533fa6b3bcac96de7

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