ForTrust dWallet
Relying Party de test (client demo)
Client de test care arată cum o aplicaţie terţă autentifică un utilizator EUDI Wallet prin ForTrust.

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.

Autentificare cu ForTrust

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.

1

Semnează mandat

Online · pe banca / merchant

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.

🎟️ Toate cele 3 demouri (Pass Hub)
2

Acces premium

Online · pe orice site RP

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.

⭐ Scanează QR & loghează-te
3

Verifică pe teren

Proximitate · NFC la merchant

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.

📱 TAP NFC pe validator

Ce trimite RP-ul demo către ForTrust

client_id
demo.rp.fortrust.ro
redirect_uri
https://dwallet.fortrust.ro/oidc/demo/callback/
nonce
GMXfjhWw_x9DbYEa8Z7-kcrf0dnrb9D8
state (CSRF)
FljVguwzVy7ZGneIJAx_-pUaNGEFq6g_
scope
openid profile
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=GMXfjhWw_x9DbYEa8Z7-kcrf0dnrb9D8&scope=openid%20profile&state=FljVguwzVy7ZGneIJAx_-pUaNGEFq6g_&response_type=vp_token

Fluxul (end-to-end)

  1. Utilizatorul apasă Autentificare → browserul face GET /oidc/authorize/
  2. ForTrust returnează pagină cu QR şi porneşte polling la /oidc/userinfo/{session_id}/
  3. Utilizatorul scanează QR-ul cu portofelul EUDI (sau apasă „Deschide wallet" pe acelaşi dispozitiv)
  4. Walletul face POST /oidc/response/ cu vp_token
  5. ForTrust verifică semnătura, trust chain-ul şi policy, marchează sesiunea completed
  6. Browserul primeşte verdictul, afişează claim-urile, iar RP-ul e notificat la redirect_uri?code=&state=
  7. RP-ul apelează GET /oidc/userinfo/{session_id}/ → primeşte claim-urile verificate