SOAP-Header in .NET
Zu Abschnitt 7.4.3 des Buchs
In diesem Beispiel wird ein SOAP-Header zur Unterstützung der Autentifizierung von Benutzern
verwendet. Nur wer sich über die Methode Login autentifiziert hat
kann die GetTime Methode aufrufen. Die Benutzerdaten (cookie) werden in einem SOAP-Header (siehe
AuthHeader) mitgeführt, der beim Aufruf von Login das erste mal erzeugt wird. Über die Daten
im SOAP-Header wird ein Benutzer identifiziert.
Weil hier die Verwendung von SOAP-Headern gezeigt werden soll, werden keine Algorithmen
zur Verschlüsselung verwendet.
HeaderService.asmx
<%@ WebService Language="C#" Class="Kapitel7.HeaderTimeService" %>
using System;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
namespace Kapitel7 {
//SOAP Header Implementierung
public class AuthHeader : SoapHeader {
public string cookie;
}
[WebService(Namespace="http://dotnet.jku.at/time/", Description="SOAP-Header-Bspl.")]
public class HeaderTimeService : WebService {
public AuthHeader curUser; // Header-Eintrag
[WebMethod (Description="Autentifiziert den Benutzer")]
[SoapHeader("curUser", Direction=SoapHeaderDirection.Out)]
public bool Login(string user, string pwd) {
curUser = new AuthHeader(); // Eintrag erzeugen, der dann zur�ckgesendet wird
if (Authenticate(user, pwd)) {
curUser.cookie = CreateCookie(user); // Benutzer bekannt, also cookie setzen!
return true;
}
return false;
}
[WebMethod(Description="Liefert die aktuelle Zeit")]
[SoapHeader("curUser", Direction=SoapHeaderDirection.In)]
public string GetTime() {
if (ValidateCookie(curUser.cookie )) // ist der Benutzer autorisiert?
return System.DateTime.Now.ToLongTimeString();
else
throw new SoapHeaderException("Keine Berechtigung!", // Fehler des Client!
SoapException.ClientFaultCode);
}
//Hier sollten Verschluesselungsalgorithmen eingesetzt werden!
bool ValidateCookie(string cookie) { return cookie == "admin"; }
bool Authenticate(string usr, string pwd) { return usr == "admin" && pwd=="dotnet"; }
string CreateCookie(string user) { return user; }
}
}
|
Ausführung
Der nächste Link führt Sie zu einer automatisch erzeugten Seite. D.h. für den oben dargestellten Code
wird eine HTML-Seite erzeugt, welche das Web-Service beschreibt. Weil SOAP-Header verwendet werden, können
die Methoden nur über SOAP-HTTP aufgerufen werden. Daher enthält die erzeugte HTML-Seite
auch keine Links zum Testen des Web-Services.
Verwenden Sie zum Testen folgende Daten:
Benutzer-ID: admin
Passwort: dotnet
http://dotnet.jku.at/book/samples/7/header/HeaderService.asmx
Eine weitere Möglichkeit, wie Sie dieses Web-Service testen können, ist das
Webservice Studio
zu verwenden, welches auf der Begleit-CD zum Buch "Die .NET-Technologie" enthalten ist.
|