Compartilhar via


Autenticação com o canal HTTP

Para autenticar chamadas remotas com o canal HttpChannel, o objeto remoto deve ser hospedado em Serviços de Informações da Internet (IIS).

Configuração do servidor

All configuração autenticação on the servidor is Através IIS. There are no Configuração de Servidor relacionado settings to autenticação for the HttpChannel. Para obter mais informações sobre o IIS e configurar autenticação, consulte a autenticação do IIS.

Configuração do cliente

Ao chamar um objeto remoto hospedados no IIS e configurado para autenticação, o cliente deve especificar credenciais. To automaticamente Send the credenciais is the aplicativo cliente Executando under, Set the propriedade useDefaultCredentials to true:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.runtime.remoting>
    <application>
      <channels>
        <channel ref="http" useDefaultCredentials="true"/>
      </channels>
      <client>
        <wellknown 
           url="http://MyServer/IISSec/MyRemoteObj.rem"
           type="Shared.MyRemoteObj, Shared"/>
      </client>
    </application>
  </system.runtime.remoting>
</configuration>

Se você desejar especificar um conjunto alternativo de credenciais, você pode fazer até programaticamente conforme mostrado no código a seguir:

MyRemoteObj obj = new MyRemoteObj();
// Get the current set of channel sink properties
IDictionary props = ChannelServices.GetChannelSinkProperties(obj);
// Set domain, username, and password properties
props["domain"] = "SomeDomain";
props["username"] = "SomeUser";
props["password"] = "SomePassword123";
Console.WriteLine(obj.SayHello());

Como alternativa programaticamente você pode definir a propriedade credentials , na qual você especificar uma classe que implementa a interface ICredentials. First, Criar a classe that Implements the interface ICredentials:

namespace MyCredentialsLib
{
    public class MyCredentials : ICredentials
    {
        public NetworkCredential GetCredential(Uri uri, string authType)
        {
            Console.WriteLine("MyCredentials.GetCredential() called");
            NetworkCredential newCred = new NetworkCredential("SomeRemotingUser", "SomePassword");
            return newCred;
        }
    }
} 

NEXT, in the cliente You Must Create an instância of the classe that Implements ICredentials and Set the propriedade credentials to that instância as shown in the seguinte Código:

RemotingConfiguration.Configure("client.exe.config", false);
MyRemoteObj obj = new MyRemoteObj();
IDictionary props = ChannelServices.GetChannelSinkProperties(obj);
MyCredentials credentials = new MyCredentials();
props["credentials"] = credentials;
Console.WriteLine(obj.SayHello()); 

Dica

Nunca é uma boa idéia para credenciais rígido código em um aplicativo.It is aqui for purposes illustration only.

A propriedade useAuthenticatedConnectionSharing indica que o canal do servidor reutiliza conexões autenticadas em vez de autenticar cada chamada de entrada. This Propriedade Defaults to true when the useDefaultCredentials is set to true. Essa propriedade pode ser definida em um arquivo de configuração (dentro de < canal > Elemento) ou por meio de programação (exatamente da mesma maneira o username e password propriedades foram definidas no código de exemplo mostrado anteriormente).

A propriedade unsafeAuthenticatedConnectionSharing indica o cliente forneça suas próprias credenciais e conexão GRUPO nome que o servidor usa para Criar GRUPO uma conexão autenticada. If this is set to true, the connectionGroupName must be set to a Simples . Esta propriedade é ignorada se a propriedade useAuthenticatedConnectionSharing é definida como true.

Consulte também

Conceitos

Autenticação com o canal TCP

Autenticação com o canal IPC

Criptografia e Mensagem integridade