请选择 进入手机版 | 继续访问电脑版
  • 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

italia/spid-dotnet-sdk: SPID authentication library for .NET

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

italia/spid-dotnet-sdk

开源软件地址:

https://github.com/italia/spid-dotnet-sdk

开源编程语言:

C# 41.5%

开源软件介绍:

spid-dot-net

Origini

Questo progetto tra origine dal progetto TPCWare SPID, frutto dell'hackaton day che si è tenuto in diverse sedi italiane il 7 e 8 ottobre 2017, realizzato da Nicolò Carandini e Antimo Musone. Maggiori informazioni possono essere trovate nel README del progetto originario.

Contenuto

Il repository contiene i seguenti progetti:

  • Libreria di autenticazione SPID (protocollo SAML2)
  • Applicazione dimostrativa ASP.NET
  • Applicazione dimostratima ASP.NET Core

Libreria di autenticazione

La libreria implementa tutte le funzionalità relative a SAML 2.0 e al protocollo di comunicazione tra SP e IdP tramite i seguenti servizi:

Creazione e configurazione dell'elenco degli IdP

La libreria offre servizi orientati alla creazione dell'elenco degli IdP (Identity Providers) a partire dall'URL del servizio di metadati forniti dall'AgID (Agenzia per l'Italia Digitale) secondo quanto previsto dalle norme tecniche SPID.

Tale elenco può essere ampliato e arricchito con ulteriori dettagli dall'applicazione che usa la libreria di autenticazione, tipicamente tramite file di configurazione.

Al momento le due applicazioni web dimostrative utilizzano il meccanismo di configurazione per la creazione dell'elenco degli IdP, ma è in corso di sviluppo la funzionalità di lettura dell'elenco IdP dal registro SPID fornito da AgID.

Richiesta Authn

  1. Creazione della richiesta di Authn in formato SAML 2.0
  2. Firma della richiesta con certificato X.509
  3. Analisi di validità e di stato della risposta dell'IdP relativa alla richiesta di Authn
  4. Estrazione dei dati dal formato XAML 2.0 ad una classe DTO tipizzata, contenente tutte le informazioni ricevute dall'IdP

Richiesta Logout

  1. Creazione della richiesta di Logout in formato SAML 2.0
  2. Firma della richiesta con certificato X.509
  3. Analisi di validità e di stato della risposta dell'IdP relativa alla richiesta di Logout
  4. Estrazione dei dati dal formato XAML 2.0 ad una classe DTO tipizzata, contenente tutte le informazioni ricevute dall'IdP

Helpers

La libreria contiene inoltre una serie di Helpers, utili alle applicazioni che la utilizzano:

  • Helper per il reperimento di certificati X509 dal contenitore sicuro (disponibile solo quando l'applicazione web gira su Windows, negli altri casi è possibile passare alla libreria direttamente il certificato stesso).

  • Helper per la crittografia delle richieste da inviare e per la verifica crittografica delle risposte ricevute.

  • Piccolo helper per i riperimento di dati comuni dall'istanza di classe DTO che contiene i dati della risposta di authenticazione (Fullname, Name, Family name, FiscalNumber ed Email)

Packaging

La libreria di autenticazione è stata scritta in modo da essere totalmente compatibile con .NET Standard 2.0 e con .NET 4.6.1, quindi è utilizzabile da quasiasi applicazione ASP.NET classic, ASP.NET Core (su Windows, Linux e OSX) e Xamarin (per App Android, iOS e UWP).

Per l'uso in produzione, si consiglia di utilizzare la libreria aggiungendo al progetto il pacchetto NuGet Italia.SPid.Authentication.

Web App

Per quanto riguarda le Web app (ASP.NET e ASP.NET Core 2.0) abbiamo cercato di scrivere un codice il più pulito e commentato possibile (ma si puo sempre migliorare...) in modo da farla diventare una reference app che documenti in modo pratico l'uso della libreria di autenticazione.

Per un tour visivo del funzionamento dell'app si rimanda alla documentazione

Sviluppi futuri

  • Modifica delle applicazioni web per la generazione automatica del bottone SPID (ad oggi il contenuto del pull down menu è codificato direttamente nel codice della pagina)-

  • Creazione di un componente middleware per ASP.NET Core 2.0 che incapsuli le funzionalità di autenticazione e logout della libreria in modo da rendere la libreria pluggabile e pienamente integrata nell'authorization flow delle applicazioni Web ASP.NET Core 2.0.

  • Creazione di un progetto Xamarin, con applicazione dimostrativa per Android e iOS.

  • Utilizzo del servizio locale di test hostato su Docker container Linux.

  • Test dell'applicazione Web ASP.NET Core 2.0 su Docker container Linux.

  • Scrittura della documentazione, al momento (davvero troppo) minimale.

Build and Test

Come prima cosa occorre creare il certificato digitale self-signed, tramite OpenSSL:

Una volta installato il tool, aprire da cmd.exe la cartella C:\OpenSSL-Win64\  e lanciare i seguenti comandi per generare il certificato mycerthackdevelopers.pfx:

set OPENSSL_CONF=C:\OpenSSL-Win64\bin\openssl.cfg
 
openssl req -newkey rsa:2048 -nodes -keyout myspidprivatekey.pem -x509 -days 365 -out myspidcertificate.pem
 
openssl pkcs12 -export -in myspidcertificate.pem -inkey myspidprivatekey.pem  -out myspidcertificate.pfx

Ora occorre importare il certificato myspidcertificate.pfx in local machine/My e tramite lo strumento di gestione dei certificati della macchina (START + "Gestisci i certificati computer") esportare il file .CER in formato BASE64, facendo attenzione di non esportare la private key.

Se l'applicazione Web da errore "Unable to find private key in the X509Certificate" la causa più probabile è che il certificato non è più valido e deve essere reinstallato con la medesima procedura di cui sopra.

Il file così ottenuto contiene la chiave pubblica da utilizzare per la creazione del file XML dei metadati da inviare all'AgID (Agenzia per l'Italia Digitale) secondo le modalità di accreditamento descritte nella pagina Come diventare fornitore di servizi Pubblici o Privati con SPID.

Una volta accreditati con AgID, il suddetto file di metadati verrà inviato direttamenta da AgID ai vari IdP e si potrà testare il servizio e mandarlo in produzione.

Ad oggi, oltre al servizio locale di test, l'unico servizio esterno di test è fornito da Poste.it ed è a loro che va inviato il suddetto file di metadati per accreditarsi come SP e fare poi le prove di autenticazione e logout.

Nota: Poiché la libreria è di tipo .NET Standard 2.0 non è possibile aprire la soluzione con versioni di Visual Studio antecedenti a Visual Studio 2017.




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap