Segurança em Web Services
30/01/2007
0
Como posso implementar segurança em Web Services de maneira rápida?
Eu preciso que o meu WebService não fique exposto a qualquer usuário e que somente minha aplicação possa acessá-lo a partir de um usuário e senha. Alguém tem idéia de como eu posso fazer isso?
Patrickreinan
Posts
12/04/2007
Pedro Carvalho
Primeiro vc deve desabilitar a opção de anonimos do IIS clicando com o botão direito em cima da sua aplicação escolha propriedade/segurança do diretório/editar... desmarque a opção acesso anônimo, desmaque a autenticação integrada do windows e marque a opção Autenticação básica...
Obs: quando vc fou depurar seu webservice não esqueça de marcar a opção autenticação integrada do windows...
vc pode colocar o usário e senha na autentição básica do windows...
18/04/2007
Ghostmutante
<WebMethod(Description:="Descreva aqui seu WebMethod")> _ Public Function Meu_WebMethod( _ ByVal var1 As String, _ ByVal var2 As String, _ ByVal var3 As Integer, _ ByVal var4 As String) As Integer
Acima fizemos nossas declaracoes, agora vamos a seguranca:
Dim tem_erro as integer = 1 ´aqui um exemplo se o campo eh obrigatorio if var1 = "" then tem_erro = -1 end if ´aqui um exemplo se a requisicao veio da sua pagina ´isso seria o mais importante para vc saber se o cara acessou de sua ´aplicacao ou naum ´contamos que minha url seja: http://www.meu_site.com.br If Not (InStr((Page.Request.ServerVariables("SERVER_NAME") & Page.Request.ServerVariables("PATH_INFO")).ToLower, "meu_site") > 0) Then tem_erro = -1 End If
Bom, agora vamos a nossa funcao:
If tem_erro > 0 then Dim strSQL as String strSQL = " INSERT INTO Minha_tabela (" & vbCrLf strSQL &= " Campo1, " & vbCrLf strSQL &= " Campo2, " & vbCrLf strSQL &= " Campo3, " & vbCrLf strSQL &= " Campo4, " & vbCrLf strSQL &= ") VALUES (" & vbCrLf strSQL &= var1, " & vbCrLf strSQL &= var2, " & vbCrLf strSQL &= var3, " & vbCrLf strSQL &= var4 " & vbCrLf strSQL &= ");" ´ ae executa toda a para, commando e tra la la... Return 1 Else Return -1 End if End Function
Ae é o seguinte, guando tu chamar isso, tens o Return em Integer, se ele retornar -1 é pq deu erro, se retorna 1 deu certo...
Bom, isso foi um exemplo basico, temos varios outras formas para se fazer isso... Fiz a forma mais simples e funcional apenas para demonstrar como funciona.
Qualquer coisa chama que demonstra outras funções mais avançadas.
Abraços.
20/04/2007
Pedro Carvalho
Vc deve importar o seguinte namespace: Imports System.Net.
Depois vc cria a instância do seu webService, abaixo do Page_Load da sua página coloque esse comando:
nome_do_objeto_instanciado_do_webService.Credentials = New NetworkCredential(ConfigurationManager.AppSettings(´wsLogon´), ConfigurationManager.AppSettings(´wsPass´), ConfigurationManager.AppSettings(´wsDomain´))
No webConfig vc vai colocar essa minha de comnado:
<appSettings>
<add key=´wsLogon´ value=´nome_do_usuario_criado_na_maquina_com_permisao_de_adm´/>
<add key=´wsPass´ value=´senha_do_usuario´/>
<add key=´wsDomain´ value=´servidor_do_banco_de_dados´/>
</appSettings>
É claro que quando vc hospedar suas página vc deve informar ao administrador do provedor que ele deve fazer as configurações que falei na primeira postagem...
Um abraço...
20/04/2007
Carlosmaxx
Aqui onde eu trabalho nós fizemos da seguinte forma:
No IIS, na pasta virtual do web service colocamos uma configuração para que apenas o IP do próprio servidor possa acessá-lo.
Com isso vc impede que outras máquinas vejam seu web service. É claro que com essa configuração, as aplicações que consomem esse web service devem estar no mesmo servidor que ele.
É simples e funciona bem!
Abraço.
Clique aqui para fazer login e interagir na Comunidade :)