Usuário com melhor resposta
Dúvidas sobre autenticação em WebService ASMX.

Pergunta
-
Olaa,
Estou criando um WebService do tipo ASMX, e um dos métodos é para obter os Produtos disponíveis na loja, segue abaixo o mesmo:
[WebMethod] public DataSetProdutos ObtemProdutos(string Login,string Senha){ DSProdutos l_dsProdutos = new DSProdutos(); try{ // PONTO A SER MUDADO. Seguranca.ValidarCredenciais(Login, Senha); }catch(...){ } ... ... }
Só que esse método pede login e senha, e é isso que está me causando incomodo, será que existe a possibilidade desse método não receber o login a senha e eu realizar a respectiva autenticação, como mostrado abaixo:
WebServiceClient webservise = new WebServiceClient(); webservise.Login = "Login do usuario"; webservise.Senha = "Senha do Usuario"; webservise.ObtemProdutos();
Desde Já, Agradeço.
Respostas
-
Amigo, existem outras forma de trabalhar com webservices de forma segura sem ter de passar as credenciais. de uma lida sobre o Ws-Security
http://aleemkhan.wordpress.com/2007/09/18/using-wse-30-for-web-service-authentication/
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Facebook Olavo Neto
Linkedin Olavo Neto
Se for útil marque como resposta e faça um Developer feliz :)- Marcado como Resposta _dev segunda-feira, 15 de outubro de 2012 13:11
Todas as Respostas
-
-
E ae tuco, blz cara?
Veja bem, se login e senha são obrigatórios mas o seu Web Service não via ser público, se for alguma coisa interna de sua empresa talvez não seja preciso passar por parâmetro, você pode deixar no web config como o Valdir destacou. Mas se for um web service público, nesse caso eu acho interessante ser passado por parâmetro.
Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD
-
-
Inicialmente gostaria de Agradecer a atenção de todos,
Prezado Janderson Candido,
Não consegui ainda resolver o problema, mas estou me aproximando da resolução do mesmo, conforme mostrado abaixo:
- Código 01:
namespace WebApplication1
{
public class AutenticacaoPessoal : SoapHeader
{
public string User { get; set; }
public string Password { get; set; }
}
}- Código 02:
namespace WebApplication1
{
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class WebService1 : System.Web.Services.WebService
{
public AutenticacaoPessoal Credential { get; set; }
[WebMethod]
[SoapHeader("Credential", Direction = SoapHeaderDirection.InOut)]
public string TestaLoginESenha()
{
if ((Credential.User == "Login") && (Credential.Password == "Senha"))
{
return "Usuário Autenticado";
}
else
{
return "Usuário Não Autenticado";
}
}
}
}- Código 03: Cliente Consumindo o Webservices mostrado anteriormente.
ServiceReference1.WebService1SoapClient servico = new ServiceReference1.WebService1SoapClient();
ServiceReference1.AutenticacaoPessoal credencial= new ServiceReference1.AutenticacaoPessoal();
credencial.User = "Teste";
credencial.Password = "Teste";
servico.TestaLoginESenha();Mas o problema é que ao realizar a chamada ao método do WebServices
servico.TestaLoginESenha();
O mesmo pede que seja enviado por parâmetro as credenciais, mas é justamente isso que eu não quero, como passar as credencias do usuário para o WebServices desde que não seja por parâmetro do método do mesmo ?
Novamente grato pela atenção.
-
Amigo, existem outras forma de trabalhar com webservices de forma segura sem ter de passar as credenciais. de uma lida sobre o Ws-Security
http://aleemkhan.wordpress.com/2007/09/18/using-wse-30-for-web-service-authentication/
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Facebook Olavo Neto
Linkedin Olavo Neto
Se for útil marque como resposta e faça um Developer feliz :)- Marcado como Resposta _dev segunda-feira, 15 de outubro de 2012 13:11