Smart card per il servizio Windows
Questo argomento per gli sviluppatori di smart card e professionisti IT descrive in che modo il servizio Smart Card per Windows (in precedenza denominato smart card Resource Manager) gestisce lettori e interazioni con le applicazioni.
Il servizio Smart Card per Windows fornisce l'infrastruttura di base per tutti gli altri componenti delle smart card in quanto gestisce i lettori di smart card e le interazioni delle applicazioni nel computer. È completamente conforme alle specifiche impostate dal gruppo di lavoro PC/SC. Per informazioni su queste specifiche, vedere il sito Web PC/SC Workgroup Specifications.
Le smart card per il servizio Windows vengono eseguite nel contesto di un servizio locale e vengono implementate come servizio condiviso del processo host dei servizi (svchost). Il servizio Smart Card per Windows Scardsvr ha la descrizione del servizio seguente:
<serviceData
dependOnService="PlugPlay"
description="@%SystemRoot%\System32\SCardSvr.dll,-5"
displayName="@%SystemRoot%\System32\SCardSvr.dll,-1"
errorControl="normal"
group="SmartCardGroup"
imagePath="%SystemRoot%\system32\svchost.exe -k LocalServiceAndNoImpersonation"
name="SCardSvr"
objectName="NT AUTHORITY\LocalService"
requiredPrivileges="SeCreateGlobalPrivilege,SeChangeNotifyPrivilege"
sidType="unrestricted"
start="demand"
type="win32ShareProcess"
>
<failureActions resetPeriod="900">
<actions>
<action
delay="120000"
type="restartService"
/>
<action
delay="300000"
type="restartService"
/>
<action
delay="0"
type="none"
/>
</actions>
</failureActions>
<securityDescriptor name="ServiceXSecurity"/>
</serviceData>
<registryKeys buildFilter="">
<registryKey keyName="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SCardSvr\Parameters">
<registryValue
name="ServiceDll"
value="%SystemRoot%\System32\SCardSvr.dll"
valueType="REG_EXPAND_SZ"
/>
<registryValue
name="ServiceMain"
value="CalaisMain"
valueType="REG_SZ"
/>
<registryValue
name="ServiceDllUnloadOnStop"
value="1"
valueType="REG_DWORD"
/>
</registryKey>
</registryKeys>
Nota
Per richiamare winscard.dll come programma di installazione della classe appropriato, il file INF per un lettore di smart card deve specificare quanto segue per Class e ClassGUID:
Class=SmartCardReader
ClassGuid={50DD5230-BA8A-11D1-BF5D-0000F805F530}
Per impostazione predefinita, il servizio è configurato per la modalità manuale. Gli autori di driver di lettura smart card devono configurare i propri INF in modo che avviino automaticamente il servizio e winscard.dll file chiamino un punto di ingresso predefinito per avviare il servizio durante l'installazione. Il punto di ingresso viene definito come parte della classe SmartCardReader e non viene chiamato direttamente. Se un dispositivo si annuncia come parte di questa classe, il punto di ingresso viene richiamato automaticamente per avviare il servizio quando viene inserito il dispositivo. L'uso di questo metodo garantisce che il servizio sia abilitato quando necessario, ma è disabilitato anche per gli utenti che non usano smart card.
Quando il servizio viene avviato, esegue diverse funzioni:
- Si registra per le notifiche del servizio
- Si registra per le notifiche di Plug and Play (PnP) relative alla rimozione e alle aggiunte dei dispositivi
- Inizializza la cache dei dati e un evento globale che segnala che il servizio è stato avviato
Nota
Per le implementazioni di smart card, è consigliabile inviare tutte le comunicazioni nei sistemi operativi Windows con lettori di smart card tramite il servizio Smart Card per Windows. In questo modo è disponibile un'interfaccia per tenere traccia, selezionare e comunicare con tutti i driver che si dichiarano membri del gruppo di dispositivi lettore di smart card.
Il servizio Smart Card per Windows classifica ogni slot lettore di smart card come lettore univoco e ogni slot viene gestito separatamente, indipendentemente dalle caratteristiche fisiche del dispositivo. Il servizio Smart Card per Windows gestisce le azioni di alto livello seguenti:
- Introduzione al dispositivo
- Inizializzazione del lettore
- Notifica ai client di nuovi lettori
- Serializzazione dell'accesso ai lettori
- Accesso alle smart card
- Tunneling di comandi specifici del lettore