Skip to content

Commit b82df4d

Browse files
authored
Merge pull request #1146 from italia/disco
feat: Consolidated eID Discovery Page + Wallet solution Selection page + Presentation QR-Code page
2 parents 0d6415d + 859b651 commit b82df4d

154 files changed

Lines changed: 14229 additions & 5 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.htmlhintrc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@
1515
"inline-style-disabled": false,
1616
"inline-script-disabled": false,
1717
"space-tab-mixed-disabled": "space",
18-
"id-class-value": "dash"
18+
"id-class-value": false
1919
}

.stylelintrc.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
"ignoreFiles": [
88
"**/node_modules/**",
99
"**/dist/**",
10-
"**/build/**"
10+
"**/build/**",
11+
"**/*.min.css",
12+
"**/spid/spid-sp-access-button.css"
1113
]
1214
}

docs/en/official-resources.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ The following official HTML components are available in the `official_resources/
3737
- **Authentication Button Component**: Official HTML/CSS component for authentication via IT-Wallet, based on the `Bootstrap Italia <https://italia.github.io/bootstrap-italia/docs/componenti/buttons/>`__ library - `View the component <https://github.com/italia/eid-wallet-it-docs/tree/versione-corrente/official_resources/authentication-button>`__ - `Live demo <_static/authentication-button/authentication-button.html>`__
3838
- **Discovery Page**: Official, self-contained HTML/CSS/JS template for selecting the authentication method (digital identity), based on the `Bootstrap Italia <https://italia.github.io/bootstrap-italia/>`__ library - `View the template <https://github.com/italia/eid-wallet-it-docs/tree/versione-corrente/official_resources/discovery-page>`__ - `Live demo <_static/discovery-page/disco.html>`__
3939
- **IT-Wallet Selection Page**: Official, self-contained HTML/CSS/JS template for selecting the digital wallet to continue authentication, based on the `Bootstrap Italia <https://italia.github.io/bootstrap-italia/>`__ library - `View the template <https://github.com/italia/eid-wallet-it-docs/tree/versione-corrente/official_resources/it-wallet-selection-page>`__ - `Live demo <_static/it-wallet-selection-page/it-wallet.html>`__
40+
- **IT-Wallet Presentation QR Code Page**: Official, self-contained HTML/CSS/JS template for the OpenID4VP remote presentation **Cross Device** flow (QR code page), including a demonstrative Authorization Request payload encoded with a custom URL scheme (``haip://``, Request Object by reference, as described in :ref:`remote-flow:Remote Flow`). The wallet cards on the Selection Page link to this demo. Based on the `Bootstrap Italia <https://italia.github.io/bootstrap-italia/>`__ library - `View the template <https://github.com/italia/eid-wallet-it-docs/tree/versione-corrente/official_resources/it-wallet-presentation-qr-code-page>`__ - `Live demo <_static/it-wallet-presentation-qr-code-page/qr-code-page.html>`__
41+
42+
Common static assets shared by the three pages above (Bootstrap Italia, CSS, shared JavaScript, SVG sprites, favicon, and logos) live in `official_resources/shared-ui/` and are referenced with relative paths ``../shared-ui/...``.
4043

4144
Brand Manual
4245
^^^^^^^^^^^^

docs/en/remote-flow.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,9 @@ The details of each step shown in the previous picture are described below.
121121
122122
https://wallet-solution.example.org/authorization?client_id=openid_federation%3Ahttps%3A%2F%2Frelying-party.example.org&request_uri=https%3A%2F%2Frelying-party.example.org&request_uri_method=post
123123
124-
Conversely, in the **Same Device Flow**, the Relying Party uses an HTTP response redirect (with status code set to 302) or an html page with an href button, containing the URL providing the same information as in the Cross-Device Flow (:ref:`WP_076–077 <wallet-credential-presentation-testcases>`).
124+
An official, self-contained HTML template for this **Cross Device** QR code page—including header, footer, accessibility, multilingual copy, and a configurable demonstrative payload—is provided in the :ref:`official-resources:HTML Components` section (**IT-Wallet Presentation QR Code Page**). It is linked from the wallet cards on the **IT-Wallet Selection Page** in the same section.
125+
126+
Conversely, in the **Same Device Flow**, the Relying Party uses an HTTP response redirect (with status code set to 302) or an html page with an href button, containing the URL providing the same information as in the Cross-Device Flow (:ref:`WP_076–077 <wallet-credential-presentation-testcases>`).
125127
Below is a non-normative example with Request Object by reference:
126128

127129
.. code-block:: http

docs/it/official-resources.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ I seguenti componenti HTML ufficiali sono disponibili nella cartella `official_r
3737
- **Authentication Button Component**: Componente HTML/CSS ufficiale per l'autenticazione tramite IT-Wallet, basato sulla libreria `Bootstrap Italia <https://italia.github.io/bootstrap-italia/docs/componenti/buttons/>`__ - `Vedi il componente <https://github.com/italia/eid-wallet-it-docs/tree/versione-corrente/official_resources/authentication-button>`__ - `Demo live <_static/authentication-button/authentication-button.html>`__
3838
- **Discovery Page**: Template HTML/CSS/JS ufficiale e autoconsistente per la selezione del metodo di autenticazione (identità digitale), basato sulla libreria `Bootstrap Italia <https://italia.github.io/bootstrap-italia/>`__ - `Vedi il template <https://github.com/italia/eid-wallet-it-docs/tree/versione-corrente/official_resources/discovery-page>`__ - `Demo live <_static/discovery-page/disco.html>`__
3939
- **IT-Wallet Selection Page**: Template HTML/CSS/JS ufficiale e autoconsistente per la selezione del portafoglio digitale (wallet) con cui proseguire l'autenticazione, basato sulla libreria `Bootstrap Italia <https://italia.github.io/bootstrap-italia/>`__ - `Vedi il template <https://github.com/italia/eid-wallet-it-docs/tree/versione-corrente/official_resources/it-wallet-selection-page>`__ - `Demo live <_static/it-wallet-selection-page/it-wallet.html>`__
40+
- **IT-Wallet Presentation QR Code Page**: Template HTML/CSS/JS ufficiale e autoconsistente per la pagina QR del flusso remoto di presentazione OpenID4VP (**Cross Device**), con payload dimostrativo di Authorization Request tramite custom URL scheme (``haip://``, Request Object by reference, come descritto in :ref:`remote-flow:Flusso Remoto`). Le card della Selection Page puntano a questa demo basata sulla libreria `Bootstrap Italia <https://italia.github.io/bootstrap-italia/>`__ - `Vedi il template <https://github.com/italia/eid-wallet-it-docs/tree/versione-corrente/official_resources/it-wallet-presentation-qr-code-page>`__ - `Demo live <_static/it-wallet-presentation-qr-code-page/qr-code-page.html>`__
41+
42+
Gli asset statici comuni alle tre pagine (Bootstrap Italia, CSS, JavaScript condivisi, sprite SVG, favicon e loghi) sono centralizzati in `official_resources/shared-ui/` e referenziati con percorsi relativi ``../shared-ui/...``.
4043

4144
Brand Manual
4245
^^^^^^^^^^^^

docs/it/remote-flow.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,9 @@ I dettagli di ogni passaggio mostrato nell'immagine precedente sono descritti di
121121
122122
https://wallet-solution.example.org/authorization?client_id=openid_federation%3A%2F%2Frelying-party.example.org&request_uri=https%3A%2F%2Frelying-party.example.org&request_uri_method=post
123123
124-
Mentre, nel **Flusso Same Device**, la Relying Party risponde tramite HTTP Response Redirect (con codice di stato impostato a ``302``) o mostra all'utente una pagina html con un pulsante href, aventi l'URL che fornisce le stesse informazioni del Flusso Cross Device (:ref:`WP_076–077 <wallet-credential-presentation-testcases>`).
124+
Un template HTML ufficiale e autoconsistente per questa pagina QR **Cross Device**—con header, footer, accessibilità, testi multilingua e payload dimostrativo configurabile—è disponibile nella sezione :ref:`official-resources:Componenti HTML` (**IT-Wallet Presentation QR Code Page**). È raggiungibile dalle card della **IT-Wallet Selection Page** nella stessa sezione.
125+
126+
Mentre, nel **Flusso Same Device**, la Relying Party risponde tramite HTTP Response Redirect (con codice di stato impostato a ``302``) o mostra all'utente una pagina html con un pulsante href, aventi l'URL che fornisce le stesse informazioni del Flusso Cross Device (:ref:`WP_076–077 <wallet-credential-presentation-testcases>`).
125127
Di seguito è riportato un esempio non normativo per un Request Object by reference:
126128

127129
.. code-block:: http
@@ -456,7 +458,7 @@ La richiesta e i suoi parametri sono definiti nella Sezione 5 (Authorization Req
456458

457459
.. note::
458460
Per l'``authorization_endpoint`` l'uso di *univarsal link* è preferito rispetto a *URL scheme* personalizzati perché, quando configurati correttamente utilizzando Assetlinks JSON per Android e Apple App Site Association per iOS, forniscono una sicurezza migliorata riducendo il rischio di dirottamento degli URL.
459-
Inoltre, gli *univarsal link* offrono meccanismi di fallback, consentendo al flusso di continuare senza problemi in un browser anche se l'Istanza del Wallet non è installata, garantendo un'esperienza Utente più fluida. Il supporto degli *URL scheme* ``openid4vp://`` e ``haip-vp://`` definiti in `OPENID4VC-HAIP`_, e `OPENID4VP`_ è supportato per garantire l'interoperabilità.
461+
Inoltre, gli *univarsal link* offrono meccanismi di fallback, consentendo al flusso di continuare senza problemi in un browser anche se l'Istanza del Wallet non è installata, garantendo un'esperienza Utente più fluida. Gli *URL scheme* ``openid4vp://`` e ``haip-vp://`` definiti in `OPENID4VC-HAIP`_ e `OPENID4VP`_ sono supportati per garantire l'interoperabilità.
460462

461463
Risposta dell'Endpoint URI Request
462464
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# Discovery Page - Selezione identità digitale
2+
3+
Pagina ufficiale di *discovery* per la selezione del metodo di autenticazione (identità digitale), basata sulla libreria [Bootstrap Italia](https://italia.github.io/bootstrap-italia/) e conforme all'identità visiva del Sistema IT-Wallet.
4+
5+
## Descrizione
6+
7+
`disco.html` è la pagina con cui l'utente sceglie il metodo di autenticazione (IT-Wallet, CIE, SPID, eIDAS, CNS, IDEM, ...). I metodi e i relativi testi sono caricati dinamicamente a runtime dai file in `locales/` tramite [i18next](https://www.i18next.com/), quindi è possibile aggiungere, rimuovere o tradurre le card senza modificare l'HTML.
8+
9+
Questo pacchetto condivide con le altre pagine HTML ufficiali gli asset in `../shared-ui/` (CSS, JavaScript comuni, font, sprite SVG, favicon e loghi condivisi). Nella cartella `discovery-page/` restano solo i file specifici della discovery (HTML, loader, localizzazione, asset SPID/CIE/IT-Wallet).
10+
11+
## Caratteristiche
12+
13+
- **Conforme alle linee guida PA**: basata su Bootstrap Italia
14+
- **Multilingua**: italiano e inglese tramite i file in `locales/` (i18next)
15+
- **Contenuti data-driven**: i metodi di autenticazione sono definiti nei file di localizzazione
16+
- **Accessibile**: skip-link, ruoli ARIA, gestione del focus e supporto da tastiera
17+
- **Responsive**: layout adattabile a diverse dimensioni di schermo
18+
- **Identità visiva**: utilizza i colori e lo stile ufficiali del Sistema IT-Wallet
19+
20+
## Utilizzo
21+
22+
Poiché la pagina carica i file di localizzazione via `fetch`, va servita tramite un server HTTP (l'apertura diretta con `file://` può essere bloccata dai browser per le richieste `fetch`).
23+
24+
```bash
25+
# dalla cartella discovery-page/
26+
python3 -m http.server 8000
27+
# poi apri http://localhost:8000/disco.html
28+
```
29+
30+
### Personalizzazione dei metodi di autenticazione
31+
32+
Modifica i file `locales/eid-it.json` e `locales/eid-en.json`. Ogni voce in `digital_id` e `alternative_id` definisce nome, logo, testo del pulsante, URL di login e testi di approfondimento.
33+
34+
### Configurazione degli URL di login (placeholder `CAMBIAMI`)
35+
36+
> ⚠️ **Importante**: gli URL di login (`login_url`) presenti nei file di localizzazione sono volutamente impostati al valore segnaposto `CAMBIAMI`. **Ogni `login_url` con valore `CAMBIAMI` DEVE essere sostituito** con l'endpoint reale del proprio ambiente prima di andare in produzione.
37+
38+
Per configurare, apri `locales/eid-it.json` e `locales/eid-en.json` e sostituisci ogni occorrenza di `"login_url": "CAMBIAMI"` con l'URL che avvia il flusso di autenticazione del relativo metodo. Puoi individuarle rapidamente cercando la stringa `CAMBIAMI`.
39+
40+
Esempi del formato atteso (da adattare al proprio proxy/IdP):
41+
42+
| Metodo | Esempio di `login_url` da impostare al posto di `CAMBIAMI` |
43+
| --- | --- |
44+
| CIE SAML2 | `/Saml2/disco?entityID=<ENTITY_ID_IDP_CIE>&return=<RETURN_URL>` |
45+
| CIE OpenID Connect | `/Saml2/disco?entityID=<ENTITY_ID_OP_CIE_OIDC>` |
46+
| eIDAS | `/Saml2/disco?entityID=<ENTITY_ID_EIDAS_NODE>&return=<RETURN_URL>` |
47+
| IDEM | `https://wayf.idem.garr.it/WAYF?entityID=<TUO_ENTITY_ID>&return=<RETURN_URL>` |
48+
| CNS / altri metodi | URL del rispettivo flusso di autenticazione |
49+
50+
**Valori che NON vanno modificati** (non sono endpoint da configurare):
51+
52+
- `"login_url": "it-wallet.html"` — navigazione interna verso la pagina di selezione del wallet inclusa in queste risorse.
53+
- `"login_url": "#spid-idp-button-xlarge-post"` — àncora dell'interfaccia che apre il menu dei gestori SPID (la lista dei gestori è gestita separatamente, vedi sotto).
54+
55+
Gli altri URL informativi (`find_how_to_get_digital_id_url`, `learn_more_link`) puntano per default alle pagine pubbliche ufficiali e possono essere personalizzati opzionalmente.
56+
57+
### Configurazione dei gestori (IdP) SPID
58+
59+
I pulsanti dei gestori SPID NON sono nei file di localizzazione: vengono iniettati a runtime dalla classe `Ita` (`js/ita.min.js`) nel menu `[data-spid-remote]` a partire dall'elenco locale `js/spid-idps-default.json`. Ogni voce ha la forma:
60+
61+
```json
62+
{ "organization_name": "Nome Gestore", "entity_id": "https://idp.example.it", "logo_uri": "img/spid-idp-esempio.svg" }
63+
```
64+
65+
Per personalizzare l'elenco:
66+
67+
- modifica `js/spid-idps-default.json` (aggiungi/rimuovi gestori, allineandoli a `https://registry.spid.gov.it/entities-idp`);
68+
- inserisci i relativi loghi in `img/` e referenziali con un percorso relativo in `logo_uri` (se `logo_uri` è vuoto viene mostrato il nome testuale del gestore);
69+
- l'URL di login del singolo gestore è costruito automaticamente dalla funzione `href` in `js/ita.min.js` come `<return>?entityID=<entity_id>&return=<return>`. Adatta quella funzione al proprio flusso SAML/proxy se necessario.
70+
71+
> Nota: per impostazione predefinita l'elenco è caricato dal file locale (`local = true` in `js/ita.min.js`). È possibile invece recuperarlo dal registro SPID remoto impostando `local = false`, ma in tal caso la richiesta a `registry.spid.gov.it` è soggetta alle policy CORS del browser.
72+
73+
### Dipendenze esterne (CDN)
74+
75+
La libreria i18next è caricata da CDN (jsDelivr); è quindi richiesta una connessione di rete:
76+
77+
```html
78+
<script src="https://cdn.jsdelivr.net/npm/i18next-http-backend@1.3.1/i18nextHttpBackend.min.js"></script>
79+
<script src="https://cdn.jsdelivr.net/npm/i18next@25.5.2/i18next.min.js"></script>
80+
```
81+
82+
## Struttura File
83+
84+
```
85+
discovery-page/
86+
├── README.md
87+
├── disco.html
88+
├── js/
89+
│ ├── eid-cards-loader.js
90+
│ └── spid-idps-default.json
91+
├── locales/
92+
│ ├── eid-it.json
93+
│ └── eid-en.json
94+
├── img/ # Loghi specifici (eIDAS, CNS, IDEM, gestori SPID)
95+
├── cie/cie_white.svg
96+
├── it-wallet/wallet_icon.svg
97+
└── spid/ # Pulsante e script SPID (favicon in ../shared-ui/spid/)
98+
99+
../shared-ui/ # Asset condivisi con selection e QR page (vedi README)
100+
```
101+
102+
## Libreria di Riferimento
103+
104+
Questo template è basato su [Bootstrap Italia](https://italia.github.io/bootstrap-italia/), che fornisce componenti conformi alle linee guida di design per i servizi web della Pubblica Amministrazione italiana.
105+
106+
## Accessibilità
107+
108+
La pagina è progettata per rispettare gli standard WCAG 2.1 livello AA: contrasto adeguato, navigazione da tastiera, focus visibile, ruoli ARIA e annunci per screen reader.
109+
110+
## Licenza
111+
112+
Questo componente fa parte delle risorse ufficiali del Sistema IT-Wallet ed è distribuito secondo la licenza del progetto principale.
Lines changed: 21 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)