Condividi tramite


Finestre di sicurezza dei messaggi

Questo esempio illustra come configurare un'associazione WSHttpBinding per l'uso della sicurezza a livello di messaggio con l'autenticazione di Windows. Questo esempio si basa sull'introduzione. In questo esempio il servizio è ospitato in Internet Information Services (IIS) e il client è un'applicazione console (.exe).

Annotazioni

La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.

La sicurezza predefinita per wsHttpBinding< è la> sicurezza dei messaggi tramite l'autenticazione di Windows. I file di configurazione in questo esempio impostano in modo esplicito l'attributo mode della <sicurezza> su Message e l'attributo clientCredentialType su Windows. Questi valori sono i valori predefiniti per questa associazione, ma sono stati configurati in modo esplicito, come illustrato nella configurazione di esempio seguente per illustrare l'uso.

<bindings>
    <wsHttpBinding>
        <binding>
            <security mode="Message">
                <message clientCredentialType="Windows"/>
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

La configurazione dell'endpoint client è costituita da un indirizzo assoluto per l'endpoint del servizio, il binding e il contratto. Il collegamento del client è configurato con il securityMode e il authenticationMode appropriati.

<system.serviceModel>
  <client>
    <endpoint address=
            "http://localhost/servicemodelsamples/service.svc"
            binding="wsHttpBinding"
            bindingConfiguration="Binding1"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  </client>

  <bindings>
    <wsHttpBinding>
      <!-- The default security for the WSHttpBinding is -->
      <!-- Message security using Windows authentication. -->
      <!-- This configuration explicitly defines the security mode -->
      <!-- as Message and the clientCredentialType as Windows -->
      <!-- for demonstration purposes. -->
      <binding name="Binding1">
        <security mode="Message">
          <message clientCredentialType="Windows"/>
        </security>
      </binding>
    </wsHttpBinding>
  </bindings>
</system.serviceModel>

Il codice sorgente del servizio è stato modificato per illustrare come ServiceSecurityContext può essere usato per accedere all'identità del chiamante.

public string GetCallerIdentity()
{
    // The Windows identity of the caller can be accessed on the ServiceSecurityContext.WindowsIdentity.
    return OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
}

Quando si esegue l'esempio, le richieste e le risposte dell'operazione vengono visualizzate nella finestra della console client. Il primo metodo chiamato : GetCallerIdentity restituisce il nome dell'identità del chiamante al client. Premi INVIO nella finestra della console per chiudere il client.

Per configurare, compilare ed eseguire l'esempio

  1. Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.

  2. Per compilare l'edizione C# o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.

  3. Per eseguire l'esempio in un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.