Autentication soap Header

venerdì 30 luglio 2004 - 09.29

Trinità Profilo | Junior Member

Mi interesserebbe proteggere un mio web service, e sembra che per farlo debba utilizzare i soap header.
Ho letto l'articolo solo che non risco a capire come realizzare il tutto.

Public Credentials As AuthHeader

WebMethod Public Function azione() As DataSet

If Credentials.UserName.ToLower() <> "prova" Or Credentials.Password.ToLower() <> "prova" Then
Throw New SoapException("Unauthorized", SoapException.ClientFaultCode)
End If

'----------------------------
'mio web service
'----------------------------

End Function


Public Class AuthHeader
Inherits SoapHeader
Public UserName As String
Public Password As String
End Class


e nella pagina client
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Try

Dim NewsService As ws_prova = New ws_prova

Dim objAuthentication As New NetworkCredential
objAuthentication.UserName = "prova"
objAuthentication.Password = "prova"
NewsService.Credentials = objAuthentication

Dim news As DataSet = NewsService.azione

DataGrid1.DataSource = news
DataGrid1.DataBind()

Catch ex As Exception
Label1.Text = ex.Message
End Try



End Sub

Brainkiller Profilo | Guru

In che modo vuoi proteggerlo ?
Ci sono varie strade.
Un'opzione che avevo utilizzato è di inserire nei metodi altri due parametri (tipicamente User e Pass). Se erano una combinazione valida il Web Service restituiva i dati diversamente usciva Login Failed o qualcosa di simile.
Allo stesso modo puoi creare anche un solo parametro con dentro un numero di seriale o di licenza che puoi eventualmente far pagare.

ciao
david

Trinità Profilo | Junior Member

effettivamente era quello che pensavo io inizialmente, cioè di passare un parametro e poi da lì vedere.
Mi chiedo allora come mai ci siano altri metodi, anche perchè così sarà pur semplice ma mi pare poco pulito.

IL meglio sarebbe con un bel web.config nella cartella dove c'è il web service, solo che poi quale autenticazione faccio ?

Ho visto questa cosa dei soap header e pensavo potesse andare bene, ma come dicevo non riesco a farla funzionare

Brainkiller Profilo | Guru

Evidentemente ci sono sicuramente metodi diversi.
Ci sarà anche quello del blocco di alcuni range di IP su IIS.
Che livello di sicurezza hai bisogno tu e perchè pensi che non sia pulito il metodo che ti ho indicato ?

Se tu progetto un Web Service che poi vuoi rivendere a terzi come servizio dovrai per forza fare un tracking di chi lo usa, come e quando. Questa è una soluzione banale ma funzionale perchè ti permette di monitorare tutto.

ciao
david
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5