Index: branches/HeuristicLab.Services.Authentication Prototype/HeuristicLab.Services.Authentication Prototyp.sln
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/HeuristicLab.Services.Authentication Prototyp.sln	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/HeuristicLab.Services.Authentication Prototyp.sln	(revision 3932)
@@ -0,0 +1,41 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Persistence", "Persistence\Persistence.csproj", "{0B9535EE-DB1E-4174-B6C3-692DE1D8D841}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Service", "Service\Service.csproj", "{E10132CA-5E9E-41F4-A855-45E5E759790A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "UnitTests\UnitTests.csproj", "{90873656-FC76-4759-A451-F0FCDA35CAA4}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{960808E8-A742-4E78-8B29-9FADD65899A7}"
+	ProjectSection(SolutionItems) = preProject
+		HeuristicLab.Services.Authentication Prototyp.vsmdi = HeuristicLab.Services.Authentication Prototyp.vsmdi
+		LocalTestRun.testrunconfig = LocalTestRun.testrunconfig
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(TestCaseManagementSettings) = postSolution
+		CategoryFile = HeuristicLab.Services.Authentication Prototyp.vsmdi
+	EndGlobalSection
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{0B9535EE-DB1E-4174-B6C3-692DE1D8D841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0B9535EE-DB1E-4174-B6C3-692DE1D8D841}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0B9535EE-DB1E-4174-B6C3-692DE1D8D841}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0B9535EE-DB1E-4174-B6C3-692DE1D8D841}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E10132CA-5E9E-41F4-A855-45E5E759790A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E10132CA-5E9E-41F4-A855-45E5E759790A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E10132CA-5E9E-41F4-A855-45E5E759790A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E10132CA-5E9E-41F4-A855-45E5E759790A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{90873656-FC76-4759-A451-F0FCDA35CAA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{90873656-FC76-4759-A451-F0FCDA35CAA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{90873656-FC76-4759-A451-F0FCDA35CAA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{90873656-FC76-4759-A451-F0FCDA35CAA4}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: branches/HeuristicLab.Services.Authentication Prototype/HeuristicLab.Services.Authentication Prototyp.vsmdi
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/HeuristicLab.Services.Authentication Prototyp.vsmdi	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/HeuristicLab.Services.Authentication Prototyp.vsmdi	(revision 3932)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="UTF-8"?>
+<TestLists xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2006">
+  <TestList name="Testlisten" id="8c43106b-9dc1-4907-a29f-aa66a61bf5b6">
+    <RunConfiguration id="3cde0e70-9e75-4b76-a987-9e1d702958f0" name="Lokaler Testlauf" storage="localtestrun.testrunconfig" type="Microsoft.VisualStudio.TestTools.Common.TestRunConfiguration, Microsoft.VisualStudio.QualityTools.Common,   PublicKeyToken=b03f5f7f11d50a3a" />
+  </TestList>
+</TestLists>
Index: branches/HeuristicLab.Services.Authentication Prototype/LocalTestRun.testrunconfig
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/LocalTestRun.testrunconfig	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/LocalTestRun.testrunconfig	(revision 3932)
@@ -0,0 +1,5 @@
+﻿<?xml version="1.0" encoding="UTF-8"?>
+<TestRunConfiguration name="Lokaler Testlauf" id="3cde0e70-9e75-4b76-a987-9e1d702958f0" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2006">
+  <Description>Dies ist eine standardmäßige Testlaufkonfiguration für einen lokalen Testlauf.</Description>
+  <TestTypeSpecific />
+</TestRunConfiguration>
Index: branches/HeuristicLab.Services.Authentication Prototype/Persistence/Persistence.csproj
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/Persistence/Persistence.csproj	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/Persistence/Persistence.csproj	(revision 3932)
@@ -0,0 +1,86 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{0B9535EE-DB1E-4174-B6C3-692DE1D8D841}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Persistence</RootNamespace>
+    <AssemblyName>Persistence</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Web" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HeuristicLabUser.cs">
+      <DependentUpon>HeuristicLabUser.dbml</DependentUpon>
+    </Compile>
+    <Compile Include="HeuristicLabUser.designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>HeuristicLabUser.dbml</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLabUser.dbml">
+      <Generator>MSLinqToSQLGenerator</Generator>
+      <LastGenOutput>HeuristicLabUser.designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ClassDiagram1.cd" />
+    <None Include="HeuristicLabUser.dbml.layout">
+      <DependentUpon>HeuristicLabUser.dbml</DependentUpon>
+    </None>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: branches/HeuristicLab.Services.Authentication Prototype/Persistence/Properties/AssemblyInfo.cs
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/Persistence/Properties/AssemblyInfo.cs	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/Persistence/Properties/AssemblyInfo.cs	(revision 3932)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Allgemeine Informationen über eine Assembly werden über die folgenden 
+// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+// die mit einer Assembly verknüpft sind.
+[assembly: AssemblyTitle("Persistence")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("Persistence")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar 
+// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von 
+// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
+[assembly: ComVisible(false)]
+
+// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
+[assembly: Guid("4acf163e-c885-43e3-8b90-461afa63f221")]
+
+// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+//
+//      Hauptversion
+//      Nebenversion 
+//      Buildnummer
+//      Revision
+//
+// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern 
+// übernehmen, indem Sie "*" eingeben:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: branches/HeuristicLab.Services.Authentication Prototype/Service/App.config
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/Service/App.config	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/Service/App.config	(revision 3932)
@@ -0,0 +1,48 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+  <system.web>
+    <compilation debug="true" />
+  </system.web>
+  <!-- Bei der Bereitstellung des Dienstbibliothekprojekts muss der Inhalt der Konfigurationsdatei der app.config-Datei 
+  des Hosts hinzugefügt werden. System.Configuration unterstützt keine Konfigurationsdateien für Bibliotheken. -->
+  <system.serviceModel>
+    <services>
+      <service name="Service.Service1" behaviorConfiguration="Service.Service1Behavior">
+        <host>
+          <baseAddresses>
+            <add baseAddress = "http://localhost:8731/Design_Time_Addresses/Service/Service1/" />
+          </baseAddresses>
+        </host>
+        <!-- Service Endpoints -->
+        <!-- Wenn die Adresse nicht vollqualifiziert ist, ist sie relativ zur oben angegebenen Basisadresse. -->
+        <endpoint address ="" binding="wsHttpBinding" contract="Service.IService1">
+          <!-- 
+              Bei der Bereitstellung muss das folgende Identitätselement entfernt oder ersetzt werden, um die Identität 
+              wiederzugeben, unter der der bereitgestellte Dienst ausgeführt wird. Wenn es entfernt wird, leitet WCF eine geeignete Identität 
+              automatisch ab.
+          -->
+          <identity>
+            <dns value="localhost"/>
+          </identity>
+        </endpoint>
+        <!-- Metadata Endpoints -->
+        <!-- Der Metadatenaustausch-Endpunkt wird von dem Dienst verwendet, um sich gegenüber Clients selbst zu beschreiben. --> 
+        <!-- Dieser Endpunkt verwendet keine sichere Bindung und muss vor der Bereitstellung gesichert oder entfernt werden. -->
+        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
+      </service>
+    </services>
+    <behaviors>
+      <serviceBehaviors>
+        <behavior name="Service.Service1Behavior">
+          <!-- Legen Sie den Wert unten auf "false" fest, um die Veröffentlichung 
+          von Metadateninformationen zu vermeiden, und entfernen Sie den Metadatenendpunkt oben vor der Bereitstellung. -->
+          <serviceMetadata httpGetEnabled="True"/>
+          <!-- Damit in Fehlern Ausnahmedetails zum Debuggen angezeigt werden, 
+          legen Sie den Wert unten auf "true" fest. Legen Sie ihn vor der Bereitstellung auf "false" fest, 
+          um die Veröffentlichung von Ausnahmeinformationen zu vermeiden. -->
+          <serviceDebug includeExceptionDetailInFaults="False" />
+        </behavior>
+      </serviceBehaviors>
+    </behaviors>
+  </system.serviceModel>
+</configuration>
Index: branches/HeuristicLab.Services.Authentication Prototype/Service/IService1.cs
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/Service/IService1.cs	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/Service/IService1.cs	(revision 3932)
@@ -0,0 +1,44 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using System.Text;
+
+namespace Service
+{
+    // HINWEIS: Wenn Sie hier den Schnittstellennamen "IService1" ändern, müssen Sie ebenfalls den Verweis auf "IService1" in "App.config" aktualisieren.
+    [ServiceContract]
+    public interface IService1
+    {
+        [OperationContract]
+        string GetData(int value);
+
+        [OperationContract]
+        CompositeType GetDataUsingDataContract(CompositeType composite);
+
+        // AUFGABE: Hier Dienstvorgänge hinzufügen
+    }
+
+    // Verwenden Sie einen Datenvertrag, wie im folgenden Beispiel dargestellt, um Dienstvorgängen zusammengesetzte Typen hinzuzufügen.
+    [DataContract]
+    public class CompositeType
+    {
+        bool boolValue = true;
+        string stringValue = "Hello ";
+
+        [DataMember]
+        public bool BoolValue
+        {
+            get { return boolValue; }
+            set { boolValue = value; }
+        }
+
+        [DataMember]
+        public string StringValue
+        {
+            get { return stringValue; }
+            set { stringValue = value; }
+        }
+    }
+}
Index: branches/HeuristicLab.Services.Authentication Prototype/Service/Properties/AssemblyInfo.cs
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/Service/Properties/AssemblyInfo.cs	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/Service/Properties/AssemblyInfo.cs	(revision 3932)
@@ -0,0 +1,38 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Allgemeine Informationen über eine Assembly werden über die folgenden 
+// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+// die einer Assembly zugeordnet sind.
+[assembly: AssemblyTitle("Service")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("Service")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar 
+// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von 
+// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
+[assembly: ComVisible(false)]
+
+// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
+[assembly: Guid("f51edde7-01ee-49d0-a876-79646e9c476a")]
+
+// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+//
+//      Hauptversion
+//      Nebenversion 
+//      Buildnummer
+//      Revision
+//
+// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern 
+// übernehmen, indem Sie "*" eingeben:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+
+[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("UnitTests")]
Index: branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabMembershipProvider.cs
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabMembershipProvider.cs	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabMembershipProvider.cs	(revision 3932)
@@ -0,0 +1,153 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Web.Security;
+
+namespace Service.Provider
+{
+    class HeuristicLabMembershipProvider : MembershipProvider
+    {
+        public override string ApplicationName
+        {
+            get
+            {
+                throw new NotImplementedException();
+            }
+            set
+            {
+                throw new NotImplementedException();
+            }
+        }
+
+        public override bool ChangePassword(string username, string oldPassword, string newPassword)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override bool DeleteUser(string username, bool deleteAllRelatedData)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override bool EnablePasswordReset
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool EnablePasswordRetrieval
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override int GetNumberOfUsersOnline()
+        {
+            throw new NotImplementedException();
+        }
+
+        public override string GetPassword(string username, string answer)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override MembershipUser GetUser(string username, bool userIsOnline)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override string GetUserNameByEmail(string email)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override int MaxInvalidPasswordAttempts
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override int MinRequiredNonAlphanumericCharacters
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override int MinRequiredPasswordLength
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override int PasswordAttemptWindow
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MembershipPasswordFormat PasswordFormat
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override string PasswordStrengthRegularExpression
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool RequiresQuestionAndAnswer
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool RequiresUniqueEmail
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override string ResetPassword(string username, string answer)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override bool UnlockUser(string userName)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override void UpdateUser(MembershipUser user)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override bool ValidateUser(string username, string password)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
Index: branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabRoleProvider.cs
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabRoleProvider.cs	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabRoleProvider.cs	(revision 3932)
@@ -0,0 +1,73 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Web.Security;
+
+namespace Service.Provider
+{
+    class HeuristicLabRoleProvider : RoleProvider
+    {
+        public override void AddUsersToRoles(string[] usernames, string[] roleNames)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override string ApplicationName
+        {
+            get
+            {
+                throw new NotImplementedException();
+            }
+            set
+            {
+                throw new NotImplementedException();
+            }
+        }
+
+        public override void CreateRole(string roleName)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override bool DeleteRole(string roleName, bool throwOnPopulatedRole)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override string[] FindUsersInRole(string roleName, string usernameToMatch)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override string[] GetAllRoles()
+        {
+            throw new NotImplementedException();
+        }
+
+        public override string[] GetRolesForUser(string username)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override string[] GetUsersInRole(string roleName)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override bool IsUserInRole(string username, string roleName)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override bool RoleExists(string roleName)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
Index: branches/HeuristicLab.Services.Authentication Prototype/Service/Service.csproj
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/Service/Service.csproj	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/Service/Service.csproj	(revision 3932)
@@ -0,0 +1,76 @@
+﻿<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{E10132CA-5E9E-41F4-A855-45E5E759790A}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Service</RootNamespace>
+    <AssemblyName>Service</AssemblyName>
+    <ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <StartArguments>/client:"WcfTestClient.exe"</StartArguments>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.configuration" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Web" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="IService1.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Provider\HeuristicLabMembershipProvider.cs" />
+    <Compile Include="Provider\HeuristicLabRoleProvider.cs" />
+    <Compile Include="Service1.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Persistence\Persistence.csproj">
+      <Project>{0B9535EE-DB1E-4174-B6C3-692DE1D8D841}</Project>
+      <Name>Persistence</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: branches/HeuristicLab.Services.Authentication Prototype/Service/Service1.cs
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/Service/Service1.cs	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/Service/Service1.cs	(revision 3932)
@@ -0,0 +1,27 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using System.Text;
+
+namespace Service
+{
+    // HINWEIS: Wenn Sie hier den Klassennamen "Service1" ändern, müssen Sie ebenfalls den Verweis auf "Service1" in "App.config" aktualisieren.
+    public class Service1 : IService1
+    {
+        public string GetData(int value)
+        {
+            return string.Format("You entered: {0}", value);
+        }
+
+        public CompositeType GetDataUsingDataContract(CompositeType composite)
+        {
+            if (composite.BoolValue)
+            {
+                composite.StringValue += "Suffix";
+            }
+            return composite;
+        }
+    }
+}
Index: branches/HeuristicLab.Services.Authentication Prototype/UnitTests/AuthoringTests.txt
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/UnitTests/AuthoringTests.txt	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/UnitTests/AuthoringTests.txt	(revision 3932)
@@ -0,0 +1,134 @@
+﻿==========================================================================
+    Visual Studio Team System: Übersicht über das Erstellen und Durchführen von Tests    
+==========================================================================
+
+In dieser Übersicht werden die Features zum Erstellen und Durchführen von Tests in 
+Visual Studio Team System und Visual Studio Team Edition for Software Testers beschrieben.
+
+Öffnen von Tests
+-------------
+Wenn Sie einen Test öffnen möchten, öffnen Sie ein Testprojekt oder eine
+Testmetadatendatei (eine Datei mit der Erweiterung .vsmdi), die die Definition des Tests enthält. Sie finden Testprojekte und
+Metadatendateien im Projektmappen-Explorer.
+
+Anzeigen von Tests
+-------------
+Um anzuzeigen, welche Tests verfügbar sind, öffnen Sie das Fenster "Testansicht". Oderwenn Sie Team Edition for Software Testers installiert haben, können Sie auch
+das Testlisten-Editorfenster zum Anzeigen der Tests öffnen.
+
+Klicken Sie zum Öffnen des Fensters "Testansicht" auf das Menü "Test", zeigen Sie auf "Windows", und
+klicken Sie dann auf "Testansicht". Klicken Sie zum Öffnen des Fensters "Testlisten-Editor" (sofern Sie
+Team Edition for Software Testers installiert haben) auf "Test", zeigen Sie auf "Windows",
+und klicken Sie dann auf "Testlisten-Editor".
+
+Durchführen von Tests
+-------------
+Sie können Tests im Fenster "Testansicht" und im Fenster "Testlisten-Editor" durchführen.
+Anweisungen zum Öffnen dieser Fenster finden Sie unter "Anzeigen von Tests". Wenn ein oder mehrere im Fenster
+"Testansicht" angezeigte Tests durchgeführt werden sollen, markieren Sie diese Tests zunächst in
+diesem Fenster. Wenn Sie mehrere Tests markieren möchten, klicken Sie bei gedrückter UMSCHALT- oder STRG-TASTE
+auf die Tests. Klicken Sie anschließend auf der Symbolleiste im Fenster "Testansicht" auf die
+Schaltfläche "Tests durchführen".
+
+Wenn Sie Visual Studio Team Edition for Software Testers installiert haben, können Sie auch
+das Fenster "Testlisten-Editor" zum Durchführen von Tests verwenden. Wenn Sie Tests im Testlisten-Editor ausführen möchten,
+aktivieren Sie das Kontrollkästchen neben dem jeweils durchzuführenden Test. Klicken Sie anschließend
+auf der Symbolleiste im Fenster "Testlisten-Editor" auf die Schaltfläche "Tests durchführen".
+
+Anzeigen von Testergebnissen
+--------------------
+Wenn Sie einen oder mehrere Tests durchführen, werden die Ergebnisse der durchgeführten Tests
+im Fenster "Testergebnisse" angezeigt. Jeder einzelne Test wird in einer separaten
+Zeile angezeigt, sodass sein Status erkennbar ist. In der oberen Hälfte des Fensters
+befindet sich eine eingebettete Statusleiste. Die Leiste enthält
+eine Zusammenfassung von Details zum gesamten Testlauf.
+
+Zum Anzeigen von ausführlicheren Informationen zu einem bestimmten Testergebnis doppelklicken Sie im
+Fenster "Testergebnisse" auf das Ergebnis. Hierdurch wird ein Fenster geöffnet, in dem weitere Informationen
+zu dem bestimmten Testergebnis angezeigt werden, z. B. alle im Test zurückgegebenen
+Fehlermeldungen.
+
+Ändern der Art der Testdurchführung
+-----------------------------------
+Beim Durchführen eines oder mehrerer Tests wird eine Reihe von Einstellungen verwendet,
+die bestimmen, auf welche Weise diese Tests durchgeführt werden. Diese Einstellungen sind in einer Konfigurationsdatei für Testläufe
+enthalten.
+
+Im Folgenden ist eine Liste mit einigen der Änderungen aufgeführt, die an einer Testlauf-Konfigurationsdatei vorgenommen 
+werden können:
+
+ – Ändern des Benennungsschemas für jeden Testlauf.
+ – Ändern des Testcontrollers, auf dem die Tests durchgeführt werden, sodass Tests
+   remote durchgeführt werden können.
+ – Erfassen von Codeabdeckungsdaten für den zu testenden Code, sodass ersichtlich wird,
+   welche Codezeilen durch die Tests abgedeckt werden.
+ - Aktivieren und Deaktivieren der Testbereitstellung. 
+ – Angeben zusätzlicher, vor dem Ausführen der Tests bereitzustellender Dateien.
+ – Auswählen eines anderen Hosts (ASP.NET) zum Durchführen von ASP.NET-Komponententests.
+ – Auswählen eines anderen Hosts, des Testhosts für intelligente Geräte, zum Durchführen von Komponententests für intelligente Geräte.
+ – Festlegen verschiedener Eigenschaften für die Test-Agents, die die Tests durchführen.
+ – Ausführen benutzerdefinierter Skripts zum Anfang und Ende jedes Testlaufs, sodass die
+   Testumgebung für jeden Testlauf genau nach Wunsch eingerichtet werden kann.
+ – Festlegen von Zeitlimits für Tests und Testläufe.
+ – Festlegen der verwendbaren Browser und der Anzahl der Wiederholungen von Webtests im
+   Testlauf.
+
+Standardmäßig wird eine Konfigurationsdatei für Testläufe immer dann erstellt, wenn Sie ein
+neues Testprojekt erstellen. Änderungen an dieser Datei können Sie vornehmen, indem Sie im 
+Projektmappen-Explorer auf die Datei doppelklicken und dann die Einstellungen ändern. (Konfigurationsdateien für Testläufe
+besitzen die Erweiterung ".testrunconfig".)
+
+Eine Projektmappe kann mehrere Konfigurationsdateien für Testläufe enthalten. Nur in einer dieser
+Dateien (der "aktiven" Konfigurationsdatei für Testläufe) werden
+die Einstellungen bestimmt, die gegenwärtig für Testläufe verwendet werden. Sie wählen
+die aktive Konfigurationsdatei für Testläufe aus, indem Sie im Menü "Test" auf 
+"Aktive Testlaufkonfiguration auswählen" klicken.
+
+-------------------------------------------------------------------------------
+
+Testtypen
+----------
+Bei Verwendung von Visual Studio Team Edition for Software Testers können Sie verschiedene
+Testtypen erstellen:
+
+Komponententest: Erstellen Sie mithilfe eines Komponententests einen programmgesteuerten Test in C++, Visual C# oder
+Visual Basic, der Quellcode ausführt. Ein Komponententest ruft die Methoden einer
+Klasse auf, übergibt passende Parameter und überprüft, ob der zurückgegebene Wert
+Ihren Erwartungen entspricht.
+Es stehen drei spezielle Varianten von Komponententests zur Verfügung:
+ – Datengesteuerte Komponententests werden erstellt, wenn Sie einen Komponententest so konfigurieren, dass er
+   für jede Zeile einer Datenquelle erneut aufgerufen wird. Die Daten jeder Zeile
+   werden für den Komponententest als Eingabedaten verwendet.
+ – ASP.NET-Komponententests sind Komponententests, bei denen Code in einer ASP.NET-Webanwendung
+   ausgeführt wird.
+ - Komponententests für intelligente Geräte sind Komponententests, die für ein intelligentes Gerät
+   oder einen Emulator bereitgestellt werden und dann vom Testhost für intelligente Geräte ausgeführt werden.  
+
+Webtest: Webtests bestehen aus einer geordneten Folge von HTTP-Anforderungen, die
+in einer Browsersitzung von Microsoft Internet Explorer aufgezeichnet werden. Sie können festlegen, dass
+der Test über bestimmte Details zu den angeforderten Seiten oder Websites informiert, beispielsweise
+ob eine bestimmte Seite eine angegebene Zeichenfolge enthält.
+
+Auslastungstest: Ein Auslastungstest wird zum Kapseln von nicht manuellen Tests wie
+Komponententests, Webtests und generischen Tests sowie zum anschließenden Durchführen der Tests durch
+virtuelle Benutzer verwendet. Beim Durchführen dieser Tests unter Last werden Testergebnisse,
+einschließlich Leistungsindikatoren und weiterer Indikatoren, in Tabellen und Diagrammen generiert.
+
+Generischer Test: Ein generischer Test ist ein vorhandenes Programm, das umschlossen ist, damit es
+in Visual Studio als Test funktioniert. Im Folgenden sind Beispiele für Tests oder Programme aufgeführt, die
+in generische Tests umgewandelt werden können:
+ – Ein vorhandener Test, der mithilfe von Prozessbeendigungscodes darüber informiert, ob der
+   Test erfolgreich war. 0 (null) bedeutet, dass der Test erfolgreich war. Jeder andere Wert bedeutet,
+   dass ein Fehler aufgetreten ist.
+ – Ein allgemeines Programm, durch das während eines Testszenarios bestimmte Funktionen verfügbar sind.
+ – Ein Test oder Programm, bei dem eine spezielle XML-Datei (eine "Ergebniszusammenfassungsdatei") verwendet wird,
+   um detaillierte Ergebnisse zu übermitteln.
+
+Manueller Test: Dieser Testtyp wird verwendet, wenn die Testaufgaben
+von einem Testingenieur durchgeführt werden sollen und nicht von einem automatischen Skript.
+
+Testreihe: Verwenden Sie eine Testreihe zum Durchführen mehrerer Tests in einer
+von Ihnen angegebenen Reihenfolge.
+
+-------------------------------------------------------------------------------
+
Index: branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabMembershipProviderTest.cs
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabMembershipProviderTest.cs	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabMembershipProviderTest.cs	(revision 3932)
@@ -0,0 +1,482 @@
+﻿using Service.Provider;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System.Web.Security;
+
+namespace UnitTests
+{
+    
+    
+    /// <summary>
+    ///Dies ist eine Testklasse für "HeuristicLabMembershipProviderTest" und soll
+    ///alle HeuristicLabMembershipProviderTest Komponententests enthalten.
+    ///</summary>
+    [TestClass()]
+    public class HeuristicLabMembershipProviderTest
+    {
+
+
+        private TestContext testContextInstance;
+
+        /// <summary>
+        ///Ruft den Testkontext auf, der Informationen
+        ///über und Funktionalität für den aktuellen Testlauf bietet, oder legt diesen fest.
+        ///</summary>
+        public TestContext TestContext
+        {
+            get
+            {
+                return testContextInstance;
+            }
+            set
+            {
+                testContextInstance = value;
+            }
+        }
+
+        #region Zusätzliche Testattribute
+        // 
+        //Sie können beim Verfassen Ihrer Tests die folgenden zusätzlichen Attribute verwenden:
+        //
+        //Mit ClassInitialize führen Sie Code aus, bevor Sie den ersten Test in der Klasse ausführen.
+        //[ClassInitialize()]
+        //public static void MyClassInitialize(TestContext testContext)
+        //{
+        //}
+        //
+        //Mit ClassCleanup führen Sie Code aus, nachdem alle Tests in einer Klasse ausgeführt wurden.
+        //[ClassCleanup()]
+        //public static void MyClassCleanup()
+        //{
+        //}
+        //
+        //Mit TestInitialize können Sie vor jedem einzelnen Test Code ausführen.
+        //[TestInitialize()]
+        //public void MyTestInitialize()
+        //{
+        //}
+        //
+        //Mit TestCleanup können Sie nach jedem einzelnen Test Code ausführen.
+        //[TestCleanup()]
+        //public void MyTestCleanup()
+        //{
+        //}
+        //
+        #endregion
+
+
+        /// <summary>
+        ///Ein Test für "RequiresUniqueEmail"
+        ///</summary>
+        [TestMethod()]
+        public void RequiresUniqueEmailTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.RequiresUniqueEmail;
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "RequiresQuestionAndAnswer"
+        ///</summary>
+        [TestMethod()]
+        public void RequiresQuestionAndAnswerTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.RequiresQuestionAndAnswer;
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "PasswordStrengthRegularExpression"
+        ///</summary>
+        [TestMethod()]
+        public void PasswordStrengthRegularExpressionTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string actual;
+            actual = target.PasswordStrengthRegularExpression;
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "PasswordFormat"
+        ///</summary>
+        [TestMethod()]
+        public void PasswordFormatTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            MembershipPasswordFormat actual;
+            actual = target.PasswordFormat;
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "PasswordAttemptWindow"
+        ///</summary>
+        [TestMethod()]
+        public void PasswordAttemptWindowTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            int actual;
+            actual = target.PasswordAttemptWindow;
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "MinRequiredPasswordLength"
+        ///</summary>
+        [TestMethod()]
+        public void MinRequiredPasswordLengthTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            int actual;
+            actual = target.MinRequiredPasswordLength;
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "MinRequiredNonAlphanumericCharacters"
+        ///</summary>
+        [TestMethod()]
+        public void MinRequiredNonAlphanumericCharactersTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            int actual;
+            actual = target.MinRequiredNonAlphanumericCharacters;
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "MaxInvalidPasswordAttempts"
+        ///</summary>
+        [TestMethod()]
+        public void MaxInvalidPasswordAttemptsTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            int actual;
+            actual = target.MaxInvalidPasswordAttempts;
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "EnablePasswordRetrieval"
+        ///</summary>
+        [TestMethod()]
+        public void EnablePasswordRetrievalTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.EnablePasswordRetrieval;
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "EnablePasswordReset"
+        ///</summary>
+        [TestMethod()]
+        public void EnablePasswordResetTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.EnablePasswordReset;
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "ApplicationName"
+        ///</summary>
+        [TestMethod()]
+        public void ApplicationNameTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string expected = string.Empty; // TODO: Passenden Wert initialisieren
+            string actual;
+            target.ApplicationName = expected;
+            actual = target.ApplicationName;
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "ValidateUser"
+        ///</summary>
+        [TestMethod()]
+        public void ValidateUserTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string username = string.Empty; // TODO: Passenden Wert initialisieren
+            string password = string.Empty; // TODO: Passenden Wert initialisieren
+            bool expected = false; // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.ValidateUser(username, password);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "UpdateUser"
+        ///</summary>
+        [TestMethod()]
+        public void UpdateUserTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            MembershipUser user = null; // TODO: Passenden Wert initialisieren
+            target.UpdateUser(user);
+            Assert.Inconclusive("Eine Methode, die keinen Wert zurückgibt, kann nicht überprüft werden.");
+        }
+
+        /// <summary>
+        ///Ein Test für "UnlockUser"
+        ///</summary>
+        [TestMethod()]
+        public void UnlockUserTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string userName = string.Empty; // TODO: Passenden Wert initialisieren
+            bool expected = false; // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.UnlockUser(userName);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "ResetPassword"
+        ///</summary>
+        [TestMethod()]
+        public void ResetPasswordTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string username = string.Empty; // TODO: Passenden Wert initialisieren
+            string answer = string.Empty; // TODO: Passenden Wert initialisieren
+            string expected = string.Empty; // TODO: Passenden Wert initialisieren
+            string actual;
+            actual = target.ResetPassword(username, answer);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "GetUserNameByEmail"
+        ///</summary>
+        [TestMethod()]
+        public void GetUserNameByEmailTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string email = string.Empty; // TODO: Passenden Wert initialisieren
+            string expected = string.Empty; // TODO: Passenden Wert initialisieren
+            string actual;
+            actual = target.GetUserNameByEmail(email);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "GetUser"
+        ///</summary>
+        [TestMethod()]
+        public void GetUserTest1()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            object providerUserKey = null; // TODO: Passenden Wert initialisieren
+            bool userIsOnline = false; // TODO: Passenden Wert initialisieren
+            MembershipUser expected = null; // TODO: Passenden Wert initialisieren
+            MembershipUser actual;
+            actual = target.GetUser(providerUserKey, userIsOnline);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "GetUser"
+        ///</summary>
+        [TestMethod()]
+        public void GetUserTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string username = string.Empty; // TODO: Passenden Wert initialisieren
+            bool userIsOnline = false; // TODO: Passenden Wert initialisieren
+            MembershipUser expected = null; // TODO: Passenden Wert initialisieren
+            MembershipUser actual;
+            actual = target.GetUser(username, userIsOnline);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "GetPassword"
+        ///</summary>
+        [TestMethod()]
+        public void GetPasswordTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string username = string.Empty; // TODO: Passenden Wert initialisieren
+            string answer = string.Empty; // TODO: Passenden Wert initialisieren
+            string expected = string.Empty; // TODO: Passenden Wert initialisieren
+            string actual;
+            actual = target.GetPassword(username, answer);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "GetNumberOfUsersOnline"
+        ///</summary>
+        [TestMethod()]
+        public void GetNumberOfUsersOnlineTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            int expected = 0; // TODO: Passenden Wert initialisieren
+            int actual;
+            actual = target.GetNumberOfUsersOnline();
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "GetAllUsers"
+        ///</summary>
+        [TestMethod()]
+        public void GetAllUsersTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            int pageIndex = 0; // TODO: Passenden Wert initialisieren
+            int pageSize = 0; // TODO: Passenden Wert initialisieren
+            int totalRecords = 0; // TODO: Passenden Wert initialisieren
+            int totalRecordsExpected = 0; // TODO: Passenden Wert initialisieren
+            MembershipUserCollection expected = null; // TODO: Passenden Wert initialisieren
+            MembershipUserCollection actual;
+            actual = target.GetAllUsers(pageIndex, pageSize, out totalRecords);
+            Assert.AreEqual(totalRecordsExpected, totalRecords);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "FindUsersByName"
+        ///</summary>
+        [TestMethod()]
+        public void FindUsersByNameTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string usernameToMatch = string.Empty; // TODO: Passenden Wert initialisieren
+            int pageIndex = 0; // TODO: Passenden Wert initialisieren
+            int pageSize = 0; // TODO: Passenden Wert initialisieren
+            int totalRecords = 0; // TODO: Passenden Wert initialisieren
+            int totalRecordsExpected = 0; // TODO: Passenden Wert initialisieren
+            MembershipUserCollection expected = null; // TODO: Passenden Wert initialisieren
+            MembershipUserCollection actual;
+            actual = target.FindUsersByName(usernameToMatch, pageIndex, pageSize, out totalRecords);
+            Assert.AreEqual(totalRecordsExpected, totalRecords);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "FindUsersByEmail"
+        ///</summary>
+        [TestMethod()]
+        public void FindUsersByEmailTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string emailToMatch = string.Empty; // TODO: Passenden Wert initialisieren
+            int pageIndex = 0; // TODO: Passenden Wert initialisieren
+            int pageSize = 0; // TODO: Passenden Wert initialisieren
+            int totalRecords = 0; // TODO: Passenden Wert initialisieren
+            int totalRecordsExpected = 0; // TODO: Passenden Wert initialisieren
+            MembershipUserCollection expected = null; // TODO: Passenden Wert initialisieren
+            MembershipUserCollection actual;
+            actual = target.FindUsersByEmail(emailToMatch, pageIndex, pageSize, out totalRecords);
+            Assert.AreEqual(totalRecordsExpected, totalRecords);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "DeleteUser"
+        ///</summary>
+        [TestMethod()]
+        public void DeleteUserTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string username = string.Empty; // TODO: Passenden Wert initialisieren
+            bool deleteAllRelatedData = false; // TODO: Passenden Wert initialisieren
+            bool expected = false; // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.DeleteUser(username, deleteAllRelatedData);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "CreateUser"
+        ///</summary>
+        [TestMethod()]
+        public void CreateUserTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string username = string.Empty; // TODO: Passenden Wert initialisieren
+            string password = string.Empty; // TODO: Passenden Wert initialisieren
+            string email = string.Empty; // TODO: Passenden Wert initialisieren
+            string passwordQuestion = string.Empty; // TODO: Passenden Wert initialisieren
+            string passwordAnswer = string.Empty; // TODO: Passenden Wert initialisieren
+            bool isApproved = false; // TODO: Passenden Wert initialisieren
+            object providerUserKey = null; // TODO: Passenden Wert initialisieren
+            MembershipCreateStatus status = new MembershipCreateStatus(); // TODO: Passenden Wert initialisieren
+            MembershipCreateStatus statusExpected = new MembershipCreateStatus(); // TODO: Passenden Wert initialisieren
+            MembershipUser expected = null; // TODO: Passenden Wert initialisieren
+            MembershipUser actual;
+            actual = target.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
+            Assert.AreEqual(statusExpected, status);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "ChangePasswordQuestionAndAnswer"
+        ///</summary>
+        [TestMethod()]
+        public void ChangePasswordQuestionAndAnswerTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string username = string.Empty; // TODO: Passenden Wert initialisieren
+            string password = string.Empty; // TODO: Passenden Wert initialisieren
+            string newPasswordQuestion = string.Empty; // TODO: Passenden Wert initialisieren
+            string newPasswordAnswer = string.Empty; // TODO: Passenden Wert initialisieren
+            bool expected = false; // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.ChangePasswordQuestionAndAnswer(username, password, newPasswordQuestion, newPasswordAnswer);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "ChangePassword"
+        ///</summary>
+        [TestMethod()]
+        public void ChangePasswordTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider(); // TODO: Passenden Wert initialisieren
+            string username = string.Empty; // TODO: Passenden Wert initialisieren
+            string oldPassword = string.Empty; // TODO: Passenden Wert initialisieren
+            string newPassword = string.Empty; // TODO: Passenden Wert initialisieren
+            bool expected = false; // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.ChangePassword(username, oldPassword, newPassword);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "HeuristicLabMembershipProvider-Konstruktor"
+        ///</summary>
+        [TestMethod()]
+        public void HeuristicLabMembershipProviderConstructorTest()
+        {
+            HeuristicLabMembershipProvider target = new HeuristicLabMembershipProvider();
+            Assert.Inconclusive("TODO: Code zum Überprüfen des Ziels implementieren");
+        }
+    }
+}
Index: branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabRoleProviderTest.cs
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabRoleProviderTest.cs	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/UnitTests/HeuristicLabRoleProviderTest.cs	(revision 3932)
@@ -0,0 +1,235 @@
+﻿using Service.Provider;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+namespace UnitTests
+{
+    
+    
+    /// <summary>
+    ///Dies ist eine Testklasse für "HeuristicLabRoleProviderTest" und soll
+    ///alle HeuristicLabRoleProviderTest Komponententests enthalten.
+    ///</summary>
+    [TestClass()]
+    public class HeuristicLabRoleProviderTest
+    {
+
+
+        private TestContext testContextInstance;
+
+        /// <summary>
+        ///Ruft den Testkontext auf, der Informationen
+        ///über und Funktionalität für den aktuellen Testlauf bietet, oder legt diesen fest.
+        ///</summary>
+        public TestContext TestContext
+        {
+            get
+            {
+                return testContextInstance;
+            }
+            set
+            {
+                testContextInstance = value;
+            }
+        }
+
+        #region Zusätzliche Testattribute
+        // 
+        //Sie können beim Verfassen Ihrer Tests die folgenden zusätzlichen Attribute verwenden:
+        //
+        //Mit ClassInitialize führen Sie Code aus, bevor Sie den ersten Test in der Klasse ausführen.
+        //[ClassInitialize()]
+        //public static void MyClassInitialize(TestContext testContext)
+        //{
+        //}
+        //
+        //Mit ClassCleanup führen Sie Code aus, nachdem alle Tests in einer Klasse ausgeführt wurden.
+        //[ClassCleanup()]
+        //public static void MyClassCleanup()
+        //{
+        //}
+        //
+        //Mit TestInitialize können Sie vor jedem einzelnen Test Code ausführen.
+        //[TestInitialize()]
+        //public void MyTestInitialize()
+        //{
+        //}
+        //
+        //Mit TestCleanup können Sie nach jedem einzelnen Test Code ausführen.
+        //[TestCleanup()]
+        //public void MyTestCleanup()
+        //{
+        //}
+        //
+        #endregion
+
+
+        /// <summary>
+        ///Ein Test für "ApplicationName"
+        ///</summary>
+        [TestMethod()]
+        public void ApplicationNameTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string expected = string.Empty; // TODO: Passenden Wert initialisieren
+            string actual;
+            target.ApplicationName = expected;
+            actual = target.ApplicationName;
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "RoleExists"
+        ///</summary>
+        [TestMethod()]
+        public void RoleExistsTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string roleName = string.Empty; // TODO: Passenden Wert initialisieren
+            bool expected = false; // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.RoleExists(roleName);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "RemoveUsersFromRoles"
+        ///</summary>
+        [TestMethod()]
+        public void RemoveUsersFromRolesTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string[] usernames = null; // TODO: Passenden Wert initialisieren
+            string[] roleNames = null; // TODO: Passenden Wert initialisieren
+            target.RemoveUsersFromRoles(usernames, roleNames);
+            Assert.Inconclusive("Eine Methode, die keinen Wert zurückgibt, kann nicht überprüft werden.");
+        }
+
+        /// <summary>
+        ///Ein Test für "IsUserInRole"
+        ///</summary>
+        [TestMethod()]
+        public void IsUserInRoleTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string username = string.Empty; // TODO: Passenden Wert initialisieren
+            string roleName = string.Empty; // TODO: Passenden Wert initialisieren
+            bool expected = false; // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.IsUserInRole(username, roleName);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "GetUsersInRole"
+        ///</summary>
+        [TestMethod()]
+        public void GetUsersInRoleTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string roleName = string.Empty; // TODO: Passenden Wert initialisieren
+            string[] expected = null; // TODO: Passenden Wert initialisieren
+            string[] actual;
+            actual = target.GetUsersInRole(roleName);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "GetRolesForUser"
+        ///</summary>
+        [TestMethod()]
+        public void GetRolesForUserTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string username = string.Empty; // TODO: Passenden Wert initialisieren
+            string[] expected = null; // TODO: Passenden Wert initialisieren
+            string[] actual;
+            actual = target.GetRolesForUser(username);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "GetAllRoles"
+        ///</summary>
+        [TestMethod()]
+        public void GetAllRolesTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string[] expected = null; // TODO: Passenden Wert initialisieren
+            string[] actual;
+            actual = target.GetAllRoles();
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "FindUsersInRole"
+        ///</summary>
+        [TestMethod()]
+        public void FindUsersInRoleTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string roleName = string.Empty; // TODO: Passenden Wert initialisieren
+            string usernameToMatch = string.Empty; // TODO: Passenden Wert initialisieren
+            string[] expected = null; // TODO: Passenden Wert initialisieren
+            string[] actual;
+            actual = target.FindUsersInRole(roleName, usernameToMatch);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "DeleteRole"
+        ///</summary>
+        [TestMethod()]
+        public void DeleteRoleTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string roleName = string.Empty; // TODO: Passenden Wert initialisieren
+            bool throwOnPopulatedRole = false; // TODO: Passenden Wert initialisieren
+            bool expected = false; // TODO: Passenden Wert initialisieren
+            bool actual;
+            actual = target.DeleteRole(roleName, throwOnPopulatedRole);
+            Assert.AreEqual(expected, actual);
+            Assert.Inconclusive("Überprüfen Sie die Richtigkeit dieser Testmethode.");
+        }
+
+        /// <summary>
+        ///Ein Test für "CreateRole"
+        ///</summary>
+        [TestMethod()]
+        public void CreateRoleTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string roleName = string.Empty; // TODO: Passenden Wert initialisieren
+            target.CreateRole(roleName);
+            Assert.Inconclusive("Eine Methode, die keinen Wert zurückgibt, kann nicht überprüft werden.");
+        }
+
+        /// <summary>
+        ///Ein Test für "AddUsersToRoles"
+        ///</summary>
+        [TestMethod()]
+        public void AddUsersToRolesTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider(); // TODO: Passenden Wert initialisieren
+            string[] usernames = null; // TODO: Passenden Wert initialisieren
+            string[] roleNames = null; // TODO: Passenden Wert initialisieren
+            target.AddUsersToRoles(usernames, roleNames);
+            Assert.Inconclusive("Eine Methode, die keinen Wert zurückgibt, kann nicht überprüft werden.");
+        }
+
+        /// <summary>
+        ///Ein Test für "HeuristicLabRoleProvider-Konstruktor"
+        ///</summary>
+        [TestMethod()]
+        public void HeuristicLabRoleProviderConstructorTest()
+        {
+            HeuristicLabRoleProvider target = new HeuristicLabRoleProvider();
+            Assert.Inconclusive("TODO: Code zum Überprüfen des Ziels implementieren");
+        }
+    }
+}
Index: branches/HeuristicLab.Services.Authentication Prototype/UnitTests/Properties/AssemblyInfo.cs
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/UnitTests/Properties/AssemblyInfo.cs	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/UnitTests/Properties/AssemblyInfo.cs	(revision 3932)
@@ -0,0 +1,35 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Allgemeine Informationen über eine Assembly werden über die folgenden 
+// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+// die mit einer Assembly verknüpft sind.
+[assembly: AssemblyTitle("UnitTests")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("UnitTests")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar 
+// für COM-Komponenten.  Wenn Sie auf einen Typ in dieser Assembly von 
+// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
+[assembly: ComVisible(false)]
+
+// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
+[assembly: Guid("4cf38f9c-dba2-432d-9842-6d737860ccf1")]
+
+// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+//
+//      Hauptversion
+//      Nebenversion 
+//      Buildnummer
+//      Revision
+//
+// Sie können alle Werte angeben oder die standardmäßigen Revisions- und Buildnummern 
+// übernehmen, indem Sie "*" eingeben:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: branches/HeuristicLab.Services.Authentication Prototype/UnitTests/UnitTests.csproj
===================================================================
--- branches/HeuristicLab.Services.Authentication Prototype/UnitTests/UnitTests.csproj	(revision 3932)
+++ branches/HeuristicLab.Services.Authentication Prototype/UnitTests/UnitTests.csproj	(revision 3932)
@@ -0,0 +1,79 @@
+﻿<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{90873656-FC76-4759-A451-F0FCDA35CAA4}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>UnitTests</RootNamespace>
+    <AssemblyName>UnitTests</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
+    <Reference Include="System" />
+    <Reference Include="System.configuration" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Web" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HeuristicLabMembershipProviderTest.cs" />
+    <Compile Include="HeuristicLabRoleProviderTest.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="AuthoringTests.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Persistence\Persistence.csproj">
+      <Project>{0B9535EE-DB1E-4174-B6C3-692DE1D8D841}</Project>
+      <Name>Persistence</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\Service\Service.csproj">
+      <Project>{E10132CA-5E9E-41F4-A855-45E5E759790A}</Project>
+      <Name>Service</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
