Usuário com melhor resposta
Cenário de autenticação

Pergunta
-
Olá,
Tenho um winforms que hospeda um serviço com binding netTcpBinding.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="Servicos.ServicoPrincipal"> <host> <baseAddresses> <add baseAddress="net.tcp://localhost:9388" /> </baseAddresses> </host> <endpoint address="srv" binding="netTcpBinding" contract="Servicos.IServicoPrincipal" /> </service> </services> </system.serviceModel> </configuration>
Este é meu winforms
private void FormInicial_Load(object sender, EventArgs e) { using (ServiceHost servicoPrincipal = new ServiceHost(typeof(ServicoPrincipal), new Uri[] { })) { servicoPrincipal.Open(); } }
E este é o contrato
[ServiceContract] public interface IServicoPrincipal { [OperationContract] void Imprimir(string impressora, string aImprimir); }
Este é um cliente tentando conectar
static void Main(string[] args) { string address = "net.tcp://meuEndereco:9388"; using (ServiceHost host = new ServiceHost(typeof(ServicoPrincipal), new Uri[] { new Uri(address) })) { host.AddServiceEndpoint(typeof(IServicoPrincipal), new NetTcpBinding(), string.Empty); host.Open(); using (ChannelFactory<IServicoPrincipal> srv = new ChannelFactory<IServicoPrincipal>(new NetTcpBinding(), new EndpointAddress(address))) { srv.CreateChannel().Imprimir("xpto", "xpto"); } } }
Só que estou tomando o erro
The server has rejected the client credentials.
Aí vem minha pergunta: As máquinas cliente e o servidor não estarão no mesmo domínio, como posso fazer para o cliente conseguir executar o método no wcf de uma forma segura ?Obrigado
Alexandre Martins
Respostas
-
Boas Alexandre,
Mas as partes estarão acessíveis? Você não pode utilizar autenticação Windows (que é a configuração padrão do TCP) entre domínios diferentes.
O que você pode tentar fazer é utilizar a opção de usuário/senha, assim como mostro neste exemplo: http://www.israelaece.com/post/WCF-Seguranca-Autenticacao-e-Autorizacao-Customizadas.aspx
http://www.israelaece.com- Marcado como Resposta Alexandre Martins segunda-feira, 6 de dezembro de 2010 13:16
Todas as Respostas
-
Boas Alexandre,
Mas as partes estarão acessíveis? Você não pode utilizar autenticação Windows (que é a configuração padrão do TCP) entre domínios diferentes.
O que você pode tentar fazer é utilizar a opção de usuário/senha, assim como mostro neste exemplo: http://www.israelaece.com/post/WCF-Seguranca-Autenticacao-e-Autorizacao-Customizadas.aspx
http://www.israelaece.com- Marcado como Resposta Alexandre Martins segunda-feira, 6 de dezembro de 2010 13:16
-
-
Acompanhei todo o post de autorização customizada.
O problema é que vou ter muitos hosts vamos dizer assim.
O meu software que vai estar na web vai se conectar em vários wcfs para executar diversas tarefas em cada máquina, como imprimir por exemplo.
Então, pelo que entendi, eu teria que comprar vários certificados e isso não é viável.
Acho que vou deixar a segurança desligada e fazer o bloqueio via firewall mesmo.
Alexandre Martins -
Boas Alexandre,
Dá uma olhada no WIF: http://www.israelaece.com/post/Autenticacao-via-Claims-no-WCF.aspx
http://www.israelaece.com