Artigo Originalmente publicado na WebMobile 05
pt">Clique aqui para ler todos os artigos desta edição
Desenvolvendo Web Services seguros na plataforma .NET
Configurando e autenticando com WSE 2.0
Andrey Sanches
Existem algumas técnicas para evitar possíveis invasões em aplicativos com o objetivo de assegurar a confiabilidade das informações disponíveis em diversos níveis de sistemas. Entretanto, é notável que a grande maioria dos desenvolvedores não se preocupam com segurança. Essa tarefa normalmente é atribuída ao departamento de infra-estrutura da empresa.
Em meados de
XML Web Services, ou serviços web, é a tecnologia mais interessante para trocar informações pela internet. Eles permitem que diferentes empresas, mesmo utilizando distintas tecnologias e plataformas, conectem-se de maneira padrão, e executem procedimentos remotos sobre o protocolo http. A segurança com web services é algo que também deve ser colocado em pauta, já que os web services são serviços públicos que qualquer cliente pode consumi-lo. Nesse artigo vamos entender quais técnicas devem ser utilizadas para garantir a segurança de web services, objetivando restringir o acesso e execução de métodos.
Criando o web service
A criação de web services se torna uma tarefa muito simples quando se utiliza o Visual Studio .NET. Para esse artigo utilizaremos o Visual Studio .NET 2003.
Com o Visual Studio .NET aberto, vamos iniciar a criação do web service. Selecione o Menu File, aponte para New | Project, selecione a linguagem C#, o template ASP .NET Web Service, e informe o nome do projeto conforme mostra a Figura 1.
Figura 1. Criação do projeto do tipo web service.
Seguindo o mesmo conceito de projetos ASP.NET Web Application, o arquivo de configuração (web.config) e o arquivo global ASA (global.asax) serão criados respeitando os mesmos conceitos e características de um web site.
O arquivo Service1.asmx representa o web service que disponibilizará os serviços para as aplicações. Tecle F7 para alternar para o arquivo de código C# (Service1.asmx.cs) e iniciarmos a codificação.
Por facilidade, o Visual Studio cria um WebMethod padrão, o famoso “HelloWorld”. Exclua esse WebMethod e crie o WebMethod getCustomer() que retornará uma listagem de clientes do banco de dados NorthWind através de um objeto do tipo DataSet. Codifique o WebMethod conforme a Listagem 1.
Listagem 1. Criação do WebMethod para retorno de clientes.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
[WebMethod]
public DataSet getCustomers()
{
//valida o envio dos tokens de segurança e do objeto context
Seguranca.validarLogin(RequestSoapContext.Current);
//cria o objeto do tipo SqlConnection para conexão com o banco de dados
SqlConnection conn = new SqlConnection("Server=(local);Database=NorthWind;User ID=seulogin;Password=suasenha;Trusted_Connection=False");
try
{
//abre a conexão com o banco
conn.Open();
}
catch (SqlException ex)
{
...