Hallo,
ich möchte eine Nicht-Windows-Basierte Authentifizierung eines WebServices realisieren, wobei Benutzername und PW aus einer eigenen DB abgefragt werden.
Testweise habe ich einen Ansatz mit eigenem Soap-Header entwickelt.
Server/WS:
Client:
Wird der WebService über eine ASP.NET Seite konsomiert, dann funktioniert alles prima.
Möchte ich ihn allerdings über WPF oder eine mobile .NET CF Anwendung verwenden, dann funktioniert das nicht, da er das Property meines SoapHeaders (AuthSoapHdValue) nicht kennt:
Irgendwie scheint dieses Konstrukt also nur für ASP.NET verwendbar zu sein.
Ich möchte aber eine WebService Authentifizierung entwickeln, die sowohl für ASP.NET, als auch für WPF, "alte" Windows Anwendungen und vor allem für .NET CF verwendbar ist.
Muss ich da nur etwas in meinem Code-Snipped umbauen oder geht mein Ansatz gar nicht.
Welchen Ansatz könnte man alternativ wählen?
Wie bereits gesagt... ich möchte keine Windows-Basierte Anmeldung sondern habe meine Benutzerdaten in einer eigenen DB.
Bye,
Martin
ich möchte eine Nicht-Windows-Basierte Authentifizierung eines WebServices realisieren, wobei Benutzername und PW aus einer eigenen DB abgefragt werden.
Testweise habe ich einen Ansatz mit eigenem Soap-Header entwickelt.
Server/WS:
Code:
public class SecuredTestWebService : System.Web.Services.WebService { public AuthSoapHd spAuthenticationHeader; public SecuredTestWebService() { //Uncomment the following line if using designed components //InitializeComponent(); } [WebMethod, SoapHeader("spAuthenticationHeader")] public string HelloWorld() { if (spAuthenticationHeader.strUserName == "TestUser" && spAuthenticationHeader.strPassword == "TestPassword") { return "User Name : " + spAuthenticationHeader.strUserName + " and " + "Password : " + spAuthenticationHeader.strPassword; } else { return "Access Denied"; } } } public class AuthSoapHd : SoapHeader { public string strUserName; public string strPassword; } }
Code:
public partial class SimpleWebForm : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { localhost.SecuredTestWebService objWebService = new localhost.SecuredTestWebService(); localhost.AuthSoapHd objAuthSoapHeader = new localhost.AuthSoapHd(); string strUsrName = ConfigurationManager.AppSettings["UserName"]; string strPassword = ConfigurationManager.AppSettings["Password"]; objAuthSoapHeader.strUserName = strUsrName; objAuthSoapHeader.strPassword = strPassword; objWebService.AuthSoapHdValue = objAuthSoapHeader; string str = objWebService.HelloWorld(); Response.Write(str); } }
Wird der WebService über eine ASP.NET Seite konsomiert, dann funktioniert alles prima.
Möchte ich ihn allerdings über WPF oder eine mobile .NET CF Anwendung verwenden, dann funktioniert das nicht, da er das Property meines SoapHeaders (AuthSoapHdValue) nicht kennt:
Code:
objWebService.AuthSoapHdValue = objAuthSoapHeader;
Ich möchte aber eine WebService Authentifizierung entwickeln, die sowohl für ASP.NET, als auch für WPF, "alte" Windows Anwendungen und vor allem für .NET CF verwendbar ist.
Muss ich da nur etwas in meinem Code-Snipped umbauen oder geht mein Ansatz gar nicht.
Welchen Ansatz könnte man alternativ wählen?
Wie bereits gesagt... ich möchte keine Windows-Basierte Anmeldung sondern habe meine Benutzerdaten in einer eigenen DB.
Bye,
Martin
Comment