Verzeichnisse per ASP.NET FormsAuthentication in 60 Sekunden schützen

Inspiriert durch einen Thread auf www.aspnetzone.de soll dieser Beitrag zeigen, wie schnell sich eine Web-Applikation oder nur ein einfaches Verzeichnis per FormsAuthentication schützen lässt.

Zunächst ist es nötig die Web.Config anzupassen. In diesem Beispiel soll das Verzeichnis Secure geschützt werden. Weiter wird eingestellt das Session-Cookies verwendet werden dürfen und diese noch für 120 Minuten nach der letzten Aktion gültig sein sollen.

<authentication mode="Forms">
  <forms
      cookieless="UseCookies"
      defaultUrl="~/Secure/SecureSite.aspx"
      loginUrl="~/default.aspx"
      timeout="120">
  </forms>
</authentication>

Nun müssen für das Verzeichnis die Berechtigungen gesetzt werden. Dies erfolgt über den Location Node unter Angabe des Verzeichnisnamens. Mit Hilfe der Angabe deny wird angegeben das nur bekannte- also autorisierten User – Zugriff erhalten sollen.

<location path="Secure">
  <system.web>
    <authorization>
      <deny users="?"/>
    authorization>
  </system.web>
</location>

FormsAuthentication.RedirectFromLoginPage() an, die nach dem setzen des Session-Cookies eine Redirect auf die angeforderte Seite des Users durchführt.

protected void btt_Click(object sender, EventArgs e)
{
    FormsAuthentication.RedirectFromLoginPage("TestUser", false);
}

Nachdem diese Schritte durchgeführt wurden, ist die Einrichtung bereits abgeschlossen und das Web oder Verzeichnis gesichert.
Jürgen hat in seinem Weblog eine weitere Möglichkeit aufgezeigt, wie sich ein Web vor fremden Zugriffen schützen lässt.

Das Beispielprojekt zu diesem Beitrag findet sich hier.

Webservice Methoden überladen

In modernen Programmiersprachen können Methoden überladen werden. Somit ist es möglich verschiedene Funktionalitäten abzubilden, ohne einen weiteren Methoden-Namen zu erstellen.

public string HelloWorld()
{
    return "Hello";
}

public string HelloWorld(string yourName)
{
    return "Hello " + yourName;
}

Möchte man diese Methoden allerdings für einen Webservice zur Verfügung stellen, endet dies mit einer unschönen Fehlermeldung.

Both X and Y use the message name ‘Z’. Use the MessageName property of the WebMethod custom attribute to specify unique message names for the methods.

Der Grund hierfür ist, dass Methodennamen innerhalb eines Webservice immer eindeutig sein müssen.
Dieses Problem kann mit dem Attribut MessageName gelöst werden.

[WebMethod (MessageName="HelloWorld")]
public string HelloWorld()
{
    return "Hello";
}

[WebMethod (MessageName = "HelloWorldWithName")]
public string HelloWorld(string yourName)
{
    return "Hello " + yourName;
}

Nun muss der Umstand, einen weiteren Methodennamen zu kreieren, allerdings wieder in Kauf genommen werden.

Visual Studio 2008 Beta 2 und ASP.NET AJAX

Für Visual Studio 2008 Beta 2 gibt es ein kleines Batch-File, welches ausgeführt werden sollte, sofern in dieser Umgebung auch ASP.NET AJAX installiert ist.

Hintergrund ist ein kleiner Fehler im Visual Studio im Zusammenhang mit ASP.NET 2.0 Projekten und ASP.NET AJAX. Ohne das Batch File wird in diesen Projekten das neue ASP.NET AJAX – welches mit dem .NET Framework 3.5 aufgeliefert wird – verwendet.

Eine detailierte Erklärung dazu gibt es im Blog von Scott Guthrie:
http://weblogs.asp.net/scottgu/archive/2007/07/26/vs-2008-and-net-3-5-beta-2-released.aspx

Visual Studio 2008 und .NET 3.5 Beta 2 veröffentlicht

aa700831_VS08_v(en-us,MSDN_10)


Microsoft hat die Visual Studio 2008 Beta 2 und das .NET Framework 3.5 Beta 2veröffentlicht.Diese Version verfügt nun über eine “go-live” Lizenz und kann somit auch bereits für die Entwicklung produktiver Anwendungen genutzt werden.


Disc Images

-Visual Studio 2008 Standard Edition Beta 2
-Visual Studio 2008 Professional Edition Beta 2
-Visual Studio Team System 2008 – Team Suite Beta 2
-Visual Studio Team System 2008 – Team Foundation Server Beta 2
-Visual Studio Team System 2008 – Test Load Agent Beta 2
-MSDN Library for Visual Studio 2008 Beta 2


VPC Images

- Visual Studio Team System 2008 – Team Suite Beta 2 VPC
- Visual Studio Team System 2008 – Team Suite & Team Foundation Server Beta 2 VPC


Visual Studio Express Editions

Visual Studio 2008 Express Editions Beta 2


Microsoft .NET Framework 3.5 Beta 2

Fiddler auf localhost verwenden

Um den Http Debugging Proxy Fiddler auch auf localhost verwenden zu können, kann man sich eines kleinen Tricks behelfen.

Fiddler

Mit Hilfe eines Punktes nach der Bezeichnung localhost beginnt Fiddler ab sofort mit der Aufzeichnung.

Mehr Informationen zum Arbeiten mit Fiddler gibt es unter folgenden Urls:

http://blog.veloursnebel.de/PermaLink,guid,f9edbf35-8203-463a-9b02-2746cdb1b97f.aspx
http://blog.veloursnebel.de/PermaLink,guid,cb8529d9-e12d-402a-a1dc-26283ffd76a2.aspx
http://www.fiddlertool.com/fiddler/help/video/default.asp
http://www.fiddlertool.com/Fiddler2/

Eingaben im DetailsView validieren

Ein häufig verwendetes Control um Daten anzuzeigen, einzufügen, oder zu editieren ist das DetailsView Control. Insbesondere vom User eingegebe Daten sollten überprüft werden, bevor sie in die Anwendung übertragen werden. Allerdings beinhalten die definierten Felder im DetailsView keine Eigenschaft, die eine Validierung aktiviert. Auch die mitgelieferten ASP.NET Validation Controls können ohne einen kleinen Trick nicht verwendet werden.

Der bereits angesprochene Trick ist in diesem Fall der kleine Link “Convert this into a TemplateField” im Fields Menü des DetailsView Control.

TemplateField

Wird dieser geklickt, ist das Ergebnis eine einfache TextBox, eingeschlossen in einem TemplateField. Innerhalb dieses Feldes können nun die Validation Controls benutzt werden. Natürlich ist es auch möglich die Controls außerhalb des Template Field zu plazieren.

<asp:TemplateField HeaderText="Name" SortExpression="Name">
    <EditItemTemplate>
        <asp:RequiredFieldValidator ID="valTextBox1" runat="server" ControlToValidate="TextBox1" ErrorMessage="Error1" />
        <asp:TextBox ID="TextBox1" runat="server" Text=''></asp:TextBox>
    </EditItemTemplate>
    <InsertItemTemplate>
        <asp:RequiredFieldValidator ID="valTextBox1" runat="server" ControlToValidate="TextBox1" ErrorMessage="Error1" />
        <asp:TextBox ID="TextBox1" runat="server" Text=''></asp:TextBox>
    </InsertItemTemplate>
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text=''></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

Auf diese Weise können wie gewohnt die Eingaben auch im DetailsView validiert werden. Bei genauerer Betrachtung wäre sogar eine Unterscheidung zwischen Einfügen u. Editieren möglich.

Das Beispielprojekt zu diesem Beitrag kann hier runtergeladen werden.

Treffen der .NET Developer Group Braunschweig am 16.07.2007

dotnetbs_banner_blog1334343

Das nächste Treffen der .NET Developer Group Braunschweig findet am 16.07.2007 19:00 Uhr im Restaurant Flair statt.

Thema des Abends ist:

Visual Studio 2005 Erweiterbarkeit
Referent: Roland Weigelt

Visual Studio 2005 kann auf vielfältige Weise an die eigenen Bedürfnisse angepasst und um fehlende Funktionalität erweitert werden.
Der Vortrag stellt die folgenden Möglichkeiten vor:

- Code Snippets
- Item und Project Templates
- Wizards
- Makros
- Add-ins

Ein gewisser Schwerpunkt wird bei den Visual Studio Add-ins liegen, bei denen Roland Weigelt auf seine Erfahrungen aus der Entwicklung des mehrfach ausgezeichneten Add-ins GhostDoc (http://www.roland-weigelt.de/ghostdoc) zurückgreifen kann. Er weist dabei u.a. auf die diverse Fallstricke hin, die sich z.B. durch internationale Versionen von Windows und/oder Visual Studio ergeben.

Weitere Informationen gibt es unter http://www.dotnet-braunschweig.de/termindetails.aspx?id=12

.NET BlogBook Ausgabe 3 veröffentlicht

image_1

Bereits gestern wurde die 3. Ausgabe des .NET Blog Book veröffentlicht. Diese Ausgabe enthält zahlreiche Verbesserungen, die durch Rückmeldungen einiger Leser vorgenommen wurden. Mehr Informationen und den Download findet man auf den offiziellen Seiten. Über Kritik oder Verbesserungsvorschläge freuen wir uns natürlich auch weiterhin.

ASP Konferenz Tag 2

Auch der zweite Tag der Konferenz war äußert Interessant. Leider war er für mich aufgrund der langen Rückreise früher zu Ende als für viele andere Teilnehmer. Ich konnte somit nur an zwei Sessions teilnehmen:

- Von A nach B: Workflows im Web (Hardy Erlinger)

- Hosting IIS 7 (Christoph Wille)

Beide Sessions waren hervorragend und insbesondere Hardy Erlinger konnte das hohe Niveau des Vortrags am Vortag halten.

Die ASP Konferenz war für mich eine tolle Erfahrung – immerhin war es meine erste Konferenz dieser Art. Ich konnte eine Menge Wissen, Anregungen und Ideen mit nach Hause nehmen. Das Team der ppedv AG hat tolle Arbeit geleistet und einen rundum gelungenen Event abgeliefert. Die Qualität der Vorträge war, bis auf eine kleine Ausnahme, sehr gut und die Organisation rundum gelungen. Vielen Dank dafür.

Bestimmt sieht man sich 2008 wieder.

Folgend noch ein paar Fotos:

ASP_Konferenz_2007 009ASP_Konferenz_2007 012

IMG_0001 IMG_0002

SD530082 SD530083

ASP Konferenz Tag 1

Nach einer langen Anreise am Sonntag ist nun der erste Tag der Konferenz vorbei. Nach der Registrierung am Morgen, hat Christian Wenz auch bereits die Keynote gehalten. Anschließend konnte man zwischen 10 Sessions in jeweils 2 Tracks wählen. An folgenden Sessions habe ich heute teilgenommen:

- Keynote: Preview: Oracas für Web Developer (Christian Wenz)

- Das Kabel lügt nie: Analyse mit HTTPFiddler und Co. (Hardy Erlinger)

- “Enterprise Level” ASP.NET Entwicklung in “Web 2.0 Zeiten” (Daniel Zeiß)

- Shortcut XAML – Code und Oberflächen vereinen (Bernhard Grojer)

- Silverlight WPF/E Einstieg – (Hannes Preishuber)

- Expression Design: Mach mir eine schöne Webseite! (Nadine Schmidberger)

Insbesondere der Vortrag von Hardy Erlinger war hervorragend, aber auch alle anderen waren sehr gut. Leider hat meine Digitalkamera nach dem ersten Vortrag versagt, sodass ich nur eine Bild der Keynote habe. Weitere Bilder folgenden dann morgen.

SD530082

Der Abend wurde mit einem guten Essen und gemütlichem Beisammensein auf der Burg in Burghausen beendet.