# Autenticazioni

La piattaforma è integrata con sistemi di autenticazione sviluppati sia da OpenCity Labs che  da diversi partner ed enti locali.\
In questa pagina si descrivono i vari metodi di autenticazione e le configurazioni per  abilitarli.

## Legenda

<table data-header-hidden><thead><tr><th width="361"></th><th></th></tr></thead><tbody><tr><td>✅ Supportato</td><td>❌ Non supportato</td></tr></tbody></table>

## Cittadini

Di seguito sono descritte le integrazioni supportate con sistemi di terze parti e non che possono essere configurate lato cittadino

### Agid / Cie Ministero

<table><thead><tr><th width="156"> SPID L1/L2</th><th>CNS</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>❌</td><td>✅</td><td>✅</td><td>✅</td><td>❌</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo del micro servizio [OpenLogin](https://gitlab.com/opencontent/openlogin-oauth) nel quale può essere configurato il singolo tenant. \
Il micro servizio si interfaccia direttamente con i sistemi di autenticazione Agid tramite SAML per quanto riguarda Spid\
Utilizzai invece il nuovo sistema di federazione Oidc con il ministero degli interni per quanto riguarda CIE\
La piattaforma  comunica con il micro servizio tramite client Oauth 2<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_oauth
    oauth:
      provider: openlogin
      redirect_url: http://servizi.comune.bugliano.pi.it/lang/auth/login-oauth
      url_authorize: https://login.comune.bugliano.pi.it/authorize
      url_access_token: https://login.comune.bugliano.pi.it/token
      url_resource_owner_details: https://login.comune.bugliano.pi.it/api/profile
      url_logout: https://login.comune.bugliano.pi.it/logout?redirect=http://servizi.comune.bugliano.pi.it/lang
      client_id: {client_id}
      client_secret: {client_secret}
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma\
**login.comune.bugliano.pi.it** è una url di esempio di un'istanza sul micro servizio OpenLogin

### CAS

<table><thead><tr><th width="152"> SPID L1/L2</th><th>CNS</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>❌</td><td>✅</td><td>✅</td><td>✅</td><td>❌</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo del sistema di autenticazione [CAS](https://www.apereo.org/projects/cas). <br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_cas
    cas_login_url: https://cas-server.it/cas/login
    cas_validation_url: https://cas-server.it/cas/serviceValidate
    single_logout_url: https://cas-server.it/cas/logout?service=https://servizi.comune.bugliano.pi.it
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma\
**cas-server.it** è una url di esempio di un server CAS

### Arpa

<table><thead><tr><th width="152"> SPID L1/L2</th><th>CNS</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>❌</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo del sistema di autenticazione [Arpa](https://www.regione.toscana.it/arpa) sviluppato dalla regione Toscana\
La piattaforma comunica tramite il sistema di autenticazione tramite client Oauth 2<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_oauth
    oauth:
      provider: arpa
      redirect_url: http://servizi.comune.bugliano.pi.it/lang/auth/login-oauth
      url_authorize: https://arpa-server.it/authorize
      url_access_token: https://arpa-server.it/token
      url_resource_owner_details: https://arpa-server.it/api/profile
      url_logout: https://arpa-server.it/logout?redirect=http://servizi.comune.bugliano.pi.it/lang
      client_id: {client_id}
      client_secret: {client_secret}
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma\
**arpa-server.it** è una url di esempio del sistema di autenticazione Arpa

### Provincia Autonoma di Trento

<table><thead><tr><th width="152"> SPID L1/L2</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>❌</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo del micro servizio [Shibboleth Auth Proxy](https://gitlab.com/opencity-labs/area-personale/shibboleth-auth-proxy) per interfacciarsi al sistema  di autenticazione sviluppato dalla Provincia Autonoma di Trento <br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_pat
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma

### Provincia Autonoma di Trento OIDC

<table><thead><tr><th width="152"> SPID L1/L2</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>❌</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo di OIDC per interfacciarsi al sistema  di autenticazione sviluppato da Trentino Digitale per la Provincia Autonoma di Trento<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_oauth
    oauth:
      provider: tndigit
      redirect_url: http://servizi.comune.bugliano.pi.it/lang/auth/login-oauth
      url_authorize: https://aac.cloud-qual.tndigit.it/oauth/authorize
      url_access_token: https://aac.cloud-qual.tndigit.it/oauth/token
      url_resource_owner_details: https://aac.cloud-qual.tndigit.it/userinfo
      url_logout: https://aac.cloud-qual.tndigit.it/endsession?post_logout_redirect_uri=https://servizi.comune.bugliano.pi.it/lang
      client_id: {client_id}
      client_secret: null
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma

### Firenze Smart

<table><thead><tr><th width="152"> SPID L1/L2</th><th>CNS</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>❌</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo del sistema di autenticazione [Firenze Smart](https://www.firenzesmart.it/) sviluppato da Silfi Spa\
La piattaforma comunica tramite il sistema di autenticazione tramite client Oauth 2<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_oauth
    oauth:
      provider: firenzesmart-citizen
      redirect_url: http://servizi.comune.bugliano.pi.it/lang/auth/login-oauth
      url_authorize: https://firenzesmart-server.it/authorize
      url_access_token: https://firenzesmart-server.it/token
      url_resource_owner_details: https://firenzesmart-server.it/api/profile
      url_logout: https://firenzesmart-server.it/logout?redirect=http://servizi.comune.bugliano.pi.it/lang
      client_id: {client_id}
      client_secret: {client_secret}
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma\
**firenzesmart-server.it** è una url di esempio del sistema di autenticazione Firenze Smart

### MyId Veneto

<table><thead><tr><th width="160"> SPID L1/L2</th><th>CNS</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo del micro servizio [OpenLogin](https://gitlab.com/opencontent/openlogin-oauth) nel quale può essere configurato il singolo tenant. \
Il micro servizio si interfaccia direttamente con l'Idp di MyID Veneto sviluppato da regione Veneto tramite SAML\
La piattaforma  comunica con il micro servizio tramite client Oauth 2<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_oauth
    oauth:
      provider: openlogin
      redirect_url: http://servizi.comune.bugliano.pi.it/lang/auth/login-oauth
      url_authorize: https://login.comune.bugliano.pi.it/authorize
      url_access_token: https://login.comune.bugliano.pi.it/token
      url_resource_owner_details: https://login.comune.bugliano.pi.it/api/profile
      url_logout: https://login.comune.bugliano.pi.it/logout?redirect=http://servizi.comune.bugliano.pi.it/lang
      client_id: {client_id}
      client_secret: {client_secret}
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma\
**login.comune.bugliano.pi.it** è una url di esempio di un'istanza sul micro servizio OpenLogin

### Login FVG

<table><thead><tr><th width="160"> SPID L1/L2</th><th>CNS</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo del micro servizio [OpenLogin](https://gitlab.com/opencontent/openlogin-oauth) nel quale può essere configurato il singolo tenant. \
Il micro servizio si interfaccia direttamente con l'Idp di [Login FVG](https://loginfvg.regione.fvg.it/) sviluppato dalla Regione Friuli Venezia Giulia tramite SAML\
La piattaforma  comunica con il micro servizio tramite client Oauth 2<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_oauth
    oauth:
      provider: openlogin
      redirect_url: http://servizi.comune.bugliano.pi.it/lang/auth/login-oauth
      url_authorize: https://login.comune.bugliano.pi.it/authorize
      url_access_token: https://login.comune.bugliano.pi.it/token
      url_resource_owner_details: https://login.comune.bugliano.pi.it/api/profile
      url_logout: https://login.comune.bugliano.pi.it/logout?redirect=http://servizi.comune.bugliano.pi.it/lang
      client_id: {client_id}
      client_secret: {client_secret}
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma\
**login.comune.bugliano.pi.it** è una url di esempio di un'istanza sul micro servizio OpenLogin

### My Civis

<table><thead><tr><th width="152"> SPID L1/L2</th><th>CNS</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>❌</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo del sistema di autenticazione [My Civis](https://my.civis.bz.it/public/it/) sviluppato dalla Provincia Autonoma di Bolzano <br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_siag
    siag_base_url: https://mycivis-server.it
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma\
**mycivis-server.it** è una url di esempio del sistema di autenticazione My Civis

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma

### Siag (MyCivis) OIDC

<table><thead><tr><th width="152"> SPID L1/L2</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo di OIDC per interfacciarsi al sistema  di autenticazione sviluppato da Siag in sostituzione di MyCivis<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_oauth
    oauth:
      provider: tndigit
      redirect_url: http://servizi.comune.bugliano.pi.it/lang/auth/login-oauth
      url_authorize: https://https://testb2c01siag.b2clogin.com/..../oauth/authorize
      url_access_token: https://https://testb2c01siag.b2clogin.com/.../oauth/token
      url_resource_owner_details: null
      url_logout: https://https://testb2c01siag.b2clogin.com/.../endsession?post_logout_redirect_uri=https://servizi.comune.bugliano.pi.it/lang
      client_id: {client_id}
      client_secret: null
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma

### Sirac

<table><thead><tr><th width="152"> SPID L1/L2</th><th>CNS</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>❌</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo del micro servizio [Shibboleth Auth Proxy](https://gitlab.com/opencity-labs/area-personale/shibboleth-auth-proxy) per interfacciarsi al sistema  di autenticazione Sirac sviluppato  dal Comune di Genova<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_pat
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma

### Deda login

<table><thead><tr><th width="152"> SPID L1/L2</th><th>CNS</th><th>CIE L1</th><th>CIE L2</th><th>CIE L3</th><th>eIDAS</th></tr></thead><tbody><tr><td>✅</td><td>❌</td><td>❌</td><td>❌</td><td>❌</td><td>❌</td></tr></tbody></table>

Questo metodo di autenticazione sfrutta l'utilizzo del sistema di autenticazione Deda login sviluppato da [Dedagroup](https://www.deda.group/home)<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_deda
    deda_login_client_id: {client_id}
    deda_login_secret: {client_secret}
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma

### Microsoft Entra ID

Questo metodo di autenticazione sfrutta l'utilizzo del sistema di autenticazione [Microsoft Entra ID](https://www.microsoft.com/it-it/security/business/microsoft-entra).\
La piattaforma comunica tramite il sistema di autenticazione tramite client Oauth 2<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    login_route: login_oauth
    oauth:
      provider: microsoft-entra-id
      redirect_url: http://servizi.comune.bugliano.pi.it/lang/auth/login-oauth
      url_authorize: https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize
      url_access_token: https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token
      url_resource_owner_details: https://graph.microsoft.com/v1.0/me/
      url_logout: https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/logout?post_logout_redirect_uri=http://servizi.comune.bugliano.pi.it/lang
      client_id: {client_id}
      client_secret: {client_secret}
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma

## Operatori

Di seguito sono descritte le integrazioni supportate con sistemi di terze parti e non che possono essere configurate lato operatori.

Questi meccanismi di autenticazione abilitano il login  alla risorsa esterna ma non si occupano della configurazione dei permessi dell'operatore appena entrato.\
La configurazione dei permessi è delegata all'intervento degli amministratori

### Microsoft Entra ID

Questo metodo di autenticazione sfrutta l'utilizzo del sistema di autenticazione [Microsoft Entra ID](https://www.microsoft.com/it-it/security/business/microsoft-entra).\
La piattaforma comunica tramite il sistema di autenticazione tramite client Oauth 2<br>

Le configurazioni necessarie da inserire nel file delle istanze per ogni singolo tenant sono:<br>

```yaml
instances:
  servizi.comune.bugliano.pi.it/lang:
    enable_backend_oauth: true
    backend_oauth:
      provider: microsoft-entra-id
      redirect_url: http://servizi.comune.bugliano.pi.it/lang/auth/login-oauth
      url_authorize: https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize
      url_access_token: https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token
      url_resource_owner_details: https://graph.microsoft.com/v1.0/me/
      url_logout: https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/logout?post_logout_redirect_uri=http://servizi.comune.bugliano.pi.it/lang
      client_id: {client_id}
      client_secret: {client_secret}
```

Dove:\
**servizi.comune.bugliano.pi.it** è una url di esempio di un'istanza della piattaforma
