none
Dúvidas sobre autenticação em WebService ASMX. RRS feed

  • 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.

    quinta-feira, 4 de outubro de 2012 21:21

Respostas

Todas as Respostas

  • Prezado Valdir Ferreira,

    Eu que estou desenvolvendo o webservice, e minha dúvida é justamente como realizar essa melhora, qual a forma correta de fazer isso já que Login e Senha são obrigatórios.

    Grato pela atenção,

    quinta-feira, 4 de outubro de 2012 23:58
  • 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

    sexta-feira, 5 de outubro de 2012 11:43
  • E ae tuco, blz cara?

    Conseguiu resolver seu problema?


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD

    terça-feira, 9 de outubro de 2012 11:17
  • 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.


    quinta-feira, 11 de outubro de 2012 02:44
  • 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
    quinta-feira, 11 de outubro de 2012 11:23
    Moderador