Condividi tramite


Autenticazione con il canale IPC

Questo argomento è specifico di una tecnologia legacy mantenuta per una questione di compatibilità con le applicazioni esistenti di versioni precedenti e non è consigliato per il nuovo sviluppo. Le applicazioni distribuite devono ora essere sviluppate utilizzando  Windows Communication Foundation (WCF).

Il canale IPC supporta direttamente autenticazione e rappresentazione. Questo argomento descrive come configurare i canali client e server.

.NET Framework consente a server di oggetti remoti di autenticare e rappresentare chiamanti impostando le proprietà degli oggetti IpcServerChannel e IpcClientChannel associati. A differenza dei canali HTTP e TCP, il canale IPC esegue l'autenticazione per impostazione predefinita. Quando viene creato un canale IpcServerChannel, viene creato anche un Elenco di controllo di accesso (ACL) per il canale. Per impostazione predefinita, l'ACL contiene solo le credenziali in uso per l'esecuzione dell'applicazione server. Per comunicare con il canale, il client (e pertanto IpcClientChannel) deve essere in esecuzione con le stesse credenziali. È tuttavia possibile specificare un utente di Windows o un gruppo di utenti nella configurazione del canale server IPC che consente a quell'utente o gruppo di utenti di accedere al canale.

Configurazione del server

Per rendere il canale IPC accessibile ad altri utenti e non solo all'utente la cui identità è utilizzata dall'applicazione server, sarà possibile specificare un utente o un gruppo di utenti nella proprietà authorizedGroup. Il file di configurazione seguente consente a tutti gli utenti del gruppo Users di accedere al canale IPC.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <service>
                <wellknown mode="SingleCall" type="Server.MyRemoteObject, Server" objectUri="MyRemoteObject.rem" />
            </service>
            <channels>
        <channel ref="ipc" portName="MyIpcChannel" authorizedGroup="Users"/>
            </channels>
        </application>
    </system.runtime.remoting>
</configuration>

Il canale IPC supporta anche la rappresentazione. Ciò viene controllato sul server dalla proprietà impersonate. La configurazione seguente attiva la rappresentazione.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <service>
                <wellknown mode="SingleCall" type="Microsoft.Samples.Implementation.ImplementationClass, Server" objectUri="server.rem" />
            </service>
            <channels>
        <channel ref="ipc" portName="MyIpcChannel" secure="true" impersonate="true" authorizedGroup="Users"/>
            </channels>
        </application>
    </system.runtime.remoting>
</configuration>
ms172351.note(it-it,VS.100).gifNota:
In caso di utilizzo dell'autenticazione di canale IPC, si dovrà comunque impostare la proprietà secure su true nel caso in cui si imposti la proprietà impersonate su true.

ms172351.note(it-it,VS.100).gifNota:
Tutti i processi eseguiti sotto un account utente standard su Windows Vista. Gli utenti standard non possono rappresentare un account amministratore. Se un'applicazione remota deve rappresentare un account amministratore, quell'applicazione deve essere in esecuzione con privilegi elevati.

Per accedere all'identità del client autenticato è possibile ottenere CurrentPrincipal e accedere alla relativa proprietà Identity. È possibile accedere all'identità del client rappresentato tramite GetCurrent. È quindi possibile eseguire la propria autorizzazione, se necessario.

Il canale IPC utilizza sempre l'autenticazione NTLM. Kerberos non è supportata perché IPC è limitato alle chiamate all'interno di un singolo computer.

Configurazione del client

Per configurare un canale IPC client per l'utilizzo della rappresentazione, impostare la proprietà tokenImpersonationLevel su impersonation come mostrato nel file di configurazione seguente.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <channels>
              <channel ref="ipc" secure="true" tokenImpersonationLevel="impersonation" />
             </channels>
        </application>
    </system.runtime.remoting>
</configuration>
ms172351.note(it-it,VS.100).gifNota:
Quando si utilizza l'autenticazione del canale IPC, è necessario impostare comunque la proprietà secure su true nel caso in cui si imposti la proprietà tokenImpersonationLevel su "impersonation". Per assicurare la buona riuscita della rappresentazione, la proprietà impersonate sul canale server deve essere impostata su true. Si noti che sul server la proprietà è chiamata impersonate ma sul client, si deve impostare tokenImpersonationLevel su impersonation.

ms172351.note(it-it,VS.100).gifNota:
Tutti i processi eseguiti sotto un account utente standard su Windows Vista. Gli utenti standard non possono rappresentare un account amministratore. Se un'applicazione remota deve rappresentare un account amministratore, quell'applicazione deve essere in esecuzione con privilegi elevati.

tokenImpersonationLevel può essere impostato su uno dei valori elencati nella tabella seguente.

Impostazione di tokenImpersonationLevel Descrizione

identificazione

Il processo server può ottenere informazioni sul client, ad esempio ID di sicurezza e privilegi, ma non lo può rappresentare.

rappresentazione

Il processo server può rappresentare il contesto di sicurezza del client nel sistema locale. Il server non può rappresentare il client nei sistemi remoti.

delega

Il server può rappresentare il client nei sistemi remoti.

ms172351.note(it-it,VS.100).gifNota:
Il canale IPC non consente di specificare un set alternativo di credenziali a livello di codice o tramite configurazione. Il client pertanto invia sempre al server le credenziali che sta utilizzando.

ms172351.note(it-it,VS.100).gifNota:
Il canale IPC utilizza solo NTLM per l'autenticazione.

Vedere anche

Concetti

Autenticazione con il canale HTTP
Autenticazione con il canale TCP
Crittografia e integrità dei messaggi