Olá pessoal, temos o objetivo de mostrar como funciona o desenvolvimento com permissão de acesso junto do nosso webservice. Foi falado como introdução na primeira parte e no artigo publicado.
Requisito: - Desenvolvimento de Serviços - Linguagem: C#.NET - Ferramenta: Visual Studio .NET 2003 ou superior |
Referência: 2-1
Lembramos que é de extrema importância ler desde o primeiro artigo publicado, o link está acima. Isso devido à continuação da idéia principal.
Nós que, fazemos sempre webservice, seguimos todos os requisitos de serviços ou servir dados para outros sistemas e clientes; precisamos sempre prover mais segurança entre os dados acessados e trafegados. Costumamos dizer que “o dado no sistema vale mais que dinheiro”.
A importância extrema nunca é demais, o problema com hackers e crackers no mundo da internet tem crescido todos os dias; não entraremos nessa discussão, caso contrário seria outro tipo de artigo.
No webservice de exemplo, é passado como parâmetro sempre o usuário e senha além dos outros para fazer a busca no banco de dados. Fora a utilização do https / ssl que existe no endereço do arquivo .asmx. Mesmo com toda essa parafernália, não é garantido que a pessoa que está utilizando o serviço é o que está autorizado para a utilização. Qualquer pessoa pode acessar o link e ver os métodos disponíveis.
A nossa idéia é: além de ter usuário e senha para autenticação no banco de dados, exista uma permissão antes dessa autenticação, ou seja, esse parâmetro não é passado durante a chamada do método como string ou int, o mesmo é atribuído dentro da aplicação antes mesmo de chamar o método.
Depois que for chamado o método, antes de qualquer coisa é verificado esse tipo de permissão de utilização.
A primeira classe que precisamos importar é:
using System.Web.Services.Protocols; |
Referência: 2-2
Criamos uma classe chamada AuthHeader que estende o SoapHeader.
public class AuthHeader : SoapHeader |
Referência: 2-3
Dentro dessa classe, colocamos dois atributos, um chamado UserName e outro Password.
public class AuthHeader : SoapHeader { public string Username; public string Password; }
|
Referência: 2-4
Esse tipo de permissão de utilização será mostrado apenas no xml header do envelope soap. Depois de criar a classe que identifica o método “fulano de tal” precisamos ter permissão de autenticação para utilização. Nem todos os métodos precisam dessa autenticação; os que precisam basta colocar o seguinte código. (Referência 2-5)
[SoapHeader ("Authentication", Required=true)]
|
Referência: 2-5
Isso significa que para o método “fulando de tal” requer autenticação Header além dos parâmetros de entrada para autenticação do usuário. Fiquem atentos no próximo passo.
To be continue...