Segurança em Web Services
Pessoal, bom dia
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?
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
Curtidas 0
Respostas
Pedro Carvalho
30/01/2007
Esse problema é fácil de resolver...
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...
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...
GOSTEI 0
Ghostmutante
30/01/2007
Bom, vamos pensar que este WebService vai estar hospedador em WebHosting no qual vc nao pode mecher na config do server, temos que nos preparar para isso, mas eh facil, tente fazer algo mais ou menos assim:
Acima fizemos nossas declaracoes, agora vamos a seguranca:
Bom, agora vamos a nossa funcao:
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.
<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 IfBom, 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.
GOSTEI 0
Pedro Carvalho
30/01/2007
Bom vamos lá...
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...
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...
GOSTEI 0
Carlosmaxx
30/01/2007
Bom dia a todos,
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.
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.
GOSTEI 0