Autentificare cu ForTrust Wallet
Scope-ul WiFi credential necesită o atestare WiFi separată pre-emisă în wallet. Dacă walletul are doar mdoc PID, foloseşte Network access (PID) — acordă accesul pe identitatea pe care utilizatorul o are deja.
Pasul 1: Walletul tău are nevoie întâi de o credențial WiFi. Emite-ți una mai jos, apoi revino şi apasă Autentificare.
📶 Emite credențial WiFi (doctypero.fortrust.wifi.access.1)
Necesită sign-in ca admin staff (Django). După emitere, scanează QR-ul din pagina de issuance pentru a adăuga creditialul în wallet.
Click → redirect la ForTrust → scanează QR sau apasă „Deschide wallet" → claim-urile apar live.
Demo: Conţinut premium cu mandat recurent
Trei paşi independenţi care se leagă prin acelaşi pseudonim pairwise emis de wallet — RP-ul, banca şi validatorul ştiu că e acelaşi utilizator, fără să-i afle identitatea.
sha256:<wallet pairwise_sub> · aceeaşi valoare în toţi 3 paşii
Semnează mandat
Utilizatorul deschide app-ul băncii, scanează un QR cu wallet-ul EUDI şi semnează criptografic un mandat (PSD2 Art.18). Mandatul stochează holder_pseudonym + plafon + ciclu.
Acces premium
Pe un site cu conţinut gated, utilizatorul face login pseudonim. Serverul derivă holder_pseudonym şi interoghează tabela de mandate. Returnează doar premium_status=active/none — fără nume, fără CNP.
Verifică pe teren
La intrare/livrare, operatorul atinge wallet-ul cu cititorul NFC al validatorului. Validatorul vede acelaşi holder_pseudonym şi afişează „Abonament activ · PLĂTIT" — fără rețea, fără identitate.
Ce trimite RP-ul demo către ForTrust
- client_id
- demo.rp.fortrust.ro
- redirect_uri
- https://dwallet.fortrust.ro/oidc/demo/callback/
- nonce
- KPtwq-8Q2R6ps2fvKo_R6WdzWQ2ymNDs
- state (CSRF)
- 8lFsJBgaSE-YQZbdTjtvCclXVTcvSJLJ
- scope
- openid wifi
- response_type
- vp_token
URL-ul complet al cererii:
https://dwallet.fortrust.ro/oidc/authorize/?client_id=demo.rp.fortrust.ro&redirect_uri=https%3A%2F%2Fdwallet.fortrust.ro%2Foidc%2Fdemo%2Fcallback%2F&nonce=KPtwq-8Q2R6ps2fvKo_R6WdzWQ2ymNDs&scope=openid%20wifi&state=8lFsJBgaSE-YQZbdTjtvCclXVTcvSJLJ&response_type=vp_token
Fluxul (end-to-end)
- Utilizatorul apasă Autentificare → browserul face
GET /oidc/authorize/ - ForTrust returnează pagină cu QR şi porneşte polling la
/oidc/userinfo/{session_id}/ - Utilizatorul scanează QR-ul cu portofelul EUDI (sau apasă „Deschide wallet" pe acelaşi dispozitiv)
- Walletul face
POST /oidc/response/cuvp_token - ForTrust verifică semnătura, trust chain-ul şi policy, marchează sesiunea
completed - Browserul primeşte verdictul, afişează claim-urile, iar RP-ul e notificat la
redirect_uri?code=&state= - RP-ul apelează
GET /oidc/userinfo/{session_id}/→ primeşte claim-urile verificate