CIE Integration
CIE (Carta d'Identità Elettronica) is Italy's electronic ID card. Unlike SPID, CIE authentication in Clavex uses the CIE OpenID Connect 3.0 profile — a standard OIDC Authorization Code flow with PKCE (S256) and nonce, issued by the Ministero dell'Interno. There is no SAML exchange and no separate CIE SDK to embed: Clavex speaks OIDC directly to the CIE identity server and hands your application a normal OIDC token.
How It Works
Step 1 — Prerequisites
Before enabling CIE you need:
- For testing: the CieID app (iOS/Android) with a pre-production test account — no physical card or Ministry registration required.
- For production: a physical CIE card with NFC, the CieID app, and a registered Relying Party.
- A
client_id/client_secretpair issued by the environment you're integrating against.
Step 2 — Register a CIE Provider
CIE is registered as an identity provider scoped to your organisation. The
authorization, token, userinfo, and JWKS URLs are filled in automatically based on
environment — you only supply your client credentials.
is_active: true — there is no per-organization PUT toggle.
Set environment: "production" once you have a registered production RP.
Step 3 — Environment Endpoints
Clavex resolves these automatically from environment; shown here for
reference and troubleshooting.
| Endpoint | Production | Pre-production |
|---|---|---|
| Authorize | https://{host}/idp/profile/oidc/authorize | |
| Token | https://{host}/idp/profile/oidc/token | |
| Userinfo | https://{host}/idp/profile/oidc/userinfo | |
| JWKS | https://{host}/idp/profile/oidc/keyset | |
{host} | idserver.servizicie.interno.gov.it | preproduzione.idserver.servizicie.interno.gov.it |
Step 4 — Login
Once active, the CIE button appears automatically on your organisation's hosted login page — no client-side change required. Your application only needs a standard OIDC login redirect; the CIE option is presented to the user by Clavex.
Step 5 — Claims & JIT Provisioning
CIE userinfo claims are mapped to Clavex user fields automatically. The fiscal number
arrives prefixed TINIT-; Clavex strips the prefix before storing it.
| CIE Claim | Clavex Field | Notes |
|---|---|---|
| given_name | first_name | |
| family_name | last_name | |
| Not always present — CIE may omit it | ||
| fiscal_number | cie_fiscal_number (metadata) | TINIT- prefix stripped |
| birthdate | cie_date_of_birth (metadata) | |
| gender | cie_gender (metadata) |
With allow_jit: true, a Clavex user account is created automatically on
first CIE login. Without it, only pre-existing users (matched by email) can log in via CIE.
Step 6 — Assurance Level
CIE logins are always recorded as eIDAS High assurance (OpenID Connect
for Identity Assurance metadata), since they require physical card possession + PIN. This
lets you gate sensitive operations — e.g. a check_verified login flow step
with upgrade: "cie" — to force an in-session CIE re-authentication when a
lower-assurance session (e.g. password-only) needs to be stepped up before a privileged
action.
id.servizicie.interno.gov.it/idp/registrazioneRP (client_id,
redirect URIs, RP signing certificate). The pre-production environment requires no
registration — test immediately with the CieID app's test accounts.