Index: /trunk/sources/HeuristicLab.Security.Contracts/3.2/BusinessObjects/User.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Contracts/3.2/BusinessObjects/User.cs	(revision 1737)
+++ /trunk/sources/HeuristicLab.Security.Contracts/3.2/BusinessObjects/User.cs	(revision 1738)
@@ -30,4 +30,31 @@
   [DataContract]
   public class User : PermissionOwner {
+
+    [DataMember]
+    public String Login { get; set; }
+
+    private String password;
+    
+    [DataMember]
+    public String Password {
+      get {
+        return this.password;
+      }
+      protected set {
+        this.password = value;
+      }
+    }
+
+    [DataMember]
+    public String MailAddress { get; set; }
+
+    public void SetPlainPassword(String password) {
+      this.password = password;
+    }
+
+    public void SetHashedPassword(String password) {
+      this.password = getMd5Hash(password);
+    }
+
     private static string getMd5Hash(string input) {
       // Create a new instance of the MD5CryptoServiceProvider object.
@@ -50,27 +77,4 @@
       return sBuilder.ToString();
     }
-
-
-    [DataMember]
-    public String Login { get; set; }
-
-    private String password;
-    
-    [DataMember]
-    public String Password {
-      get {
-        return this.password;
-      }
-      set {
-        this.password = getMd5Hash(value);
-      }
-    }
-
-    public void SetPlainPassword(String password) {
-      this.password = password;
-    }
-
-    [DataMember]
-    public String MailAddress { get; set; }
   }
 }
Index: /trunk/sources/HeuristicLab.Security.Contracts/3.2/Interfaces/IPermissionManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Contracts/3.2/Interfaces/IPermissionManager.cs	(revision 1737)
+++ /trunk/sources/HeuristicLab.Security.Contracts/3.2/Interfaces/IPermissionManager.cs	(revision 1738)
@@ -10,11 +10,14 @@
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     Guid Authenticate(String userName, String password);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     bool CheckPermission(Guid sessionId, Guid permissionId,
       Guid enitityId);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     void EndSession(Guid sessionId);
 
Index: /trunk/sources/HeuristicLab.Security.Contracts/3.2/Interfaces/ISecurityManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Contracts/3.2/Interfaces/ISecurityManager.cs	(revision 1737)
+++ /trunk/sources/HeuristicLab.Security.Contracts/3.2/Interfaces/ISecurityManager.cs	(revision 1738)
@@ -11,58 +11,77 @@
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     Permission AddPermission(Permission permission);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     bool RemovePermission(Guid permissionId);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     Permission UpdatePermission(Permission permission);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     User AddNewUser(User user);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     bool RemoveUser(Guid userId);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     User UpdateUser(User user);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     ICollection<User> GetAllUsers();
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     User GetUserByName(string name);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     UserGroup AddNewUserGroup(UserGroup group);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     bool RemoveUserGroup(Guid userGroupId);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     UserGroup UpdateUserGroup(UserGroup group);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     ICollection<UserGroup> GetAllUserGroups();
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     UserGroup GetUserGroupByName(string name);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     PermissionOwner UpdatePermissionOwner(PermissionOwner permissionOwner);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     bool AddPermissionOwnerToGroup(Guid userGroupId, Guid permissionOwnerId);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     bool RemovePermissionOwnerFromGroup(Guid userGroupId, Guid permissionOwnerId);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     bool GrantPermission(Guid permissionOwnerId, Guid permissionId, Guid entityId);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     Permission GetPermissionById(Guid permissionId);
 
     [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
     bool RevokePermission(Guid permissionOwnerId, Guid permissionId, Guid entityId);
   }
Index: /trunk/sources/HeuristicLab.Security.Core/3.2/HeuristicLab.Security.Core-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Security.Core/3.2/HeuristicLab.Security.Core-3.2.csproj	(revision 1737)
+++ /trunk/sources/HeuristicLab.Security.Core/3.2/HeuristicLab.Security.Core-3.2.csproj	(revision 1738)
@@ -37,4 +37,7 @@
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
     </Reference>
     <Reference Include="System.Xml.Linq">
Index: /trunk/sources/HeuristicLab.Security.Core/3.2/PermissionManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Core/3.2/PermissionManager.cs	(revision 1737)
+++ /trunk/sources/HeuristicLab.Security.Core/3.2/PermissionManager.cs	(revision 1738)
@@ -9,4 +9,5 @@
 using HeuristicLab.PluginInfrastructure;
 using System.Security.Cryptography;
+using System.ServiceModel;
 
 namespace HeuristicLab.Security.Core {
@@ -60,5 +61,5 @@
         User user = userAdapter.GetByLogin(userName);
 
-        if (user != null && 
+        if (user != null &&
             user.Password.Equals(password)) {
           Guid newSessionId = Guid.NewGuid();
@@ -68,4 +69,5 @@
         } else return Guid.Empty;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -100,4 +102,5 @@
           else return false;
         }
+        catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
         finally {
           if (session != null)
Index: /trunk/sources/HeuristicLab.Security.Core/3.2/SecurityCoreTest.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Core/3.2/SecurityCoreTest.cs	(revision 1737)
+++ /trunk/sources/HeuristicLab.Security.Core/3.2/SecurityCoreTest.cs	(revision 1738)
@@ -17,5 +17,5 @@
         User user = new User();
         user.Login = "anna";
-        user.Password = "blubb";
+        user.SetHashedPassword("blubb");
         user.Name = "Anna";
         user = manager.AddNewUser(user);
@@ -73,5 +73,5 @@
         User user = new User();
         user.Login = "anna";
-        user.Password = "blubb";
+        user.SetHashedPassword("blubb");
         user.Name = "Anna";
         user = manager.AddNewUser(user);
@@ -107,5 +107,5 @@
         User user = new User();
         user.Login = "anna";
-        user.Password = "blubb";
+        user.SetHashedPassword("blubb");
         user.Name = "Anna";
         user = manager.AddNewUser(user);
@@ -113,5 +113,5 @@
         User user2 = new User();
         user2.Login = "stefan";
-        user2.Password = "foo";
+        user2.SetHashedPassword("foo");
         user2.Name = "Stefan";
 
Index: /trunk/sources/HeuristicLab.Security.Core/3.2/SecurityManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Core/3.2/SecurityManager.cs	(revision 1737)
+++ /trunk/sources/HeuristicLab.Security.Core/3.2/SecurityManager.cs	(revision 1738)
@@ -8,4 +8,5 @@
 using HeuristicLab.PluginInfrastructure;
 using HeuristicLab.DataAccess.Interfaces;
+using System.ServiceModel;
 
 namespace HeuristicLab.Security.Core {
@@ -31,4 +32,5 @@
         return user;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -51,4 +53,5 @@
         return user;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -72,4 +75,5 @@
         return false;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -89,4 +93,5 @@
         return userAdapter.GetAll();
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -107,4 +112,5 @@
         return userAdapter.GetByName(name);
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -128,4 +134,5 @@
         return userGroup;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -149,4 +156,5 @@
         return userGroup;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -171,4 +179,5 @@
         return false;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -188,4 +197,5 @@
         return userGroupAdapter.GetAll();
        }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -206,4 +216,5 @@
         return userGroupAdapter.GetByName(name);
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -227,4 +238,5 @@
         return permissionOwner;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -258,4 +270,5 @@
         return false;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -290,4 +303,5 @@
         return false;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -310,4 +324,5 @@
         return permissionAdapter.grantPermission(permissionOwnerId, permissionId, entityId);
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -328,4 +343,5 @@
         return permissionAdapter.GetById(permissionId);
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -348,4 +364,5 @@
         return permissionAdapter.revokePermission(permissionOwnerId, permissionId, entityId);
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -366,4 +383,5 @@
           return null;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -383,4 +401,5 @@
           return false;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
@@ -401,4 +420,5 @@
           return null;
       }
+      catch (Exception ex) { throw new FaultException("Server: " + ex.Message); }
       finally {
         if (session != null)
Index: /trunk/sources/HeuristicLab.Security.Server/3.2/SecurityServerApplication.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Server/3.2/SecurityServerApplication.cs	(revision 1737)
+++ /trunk/sources/HeuristicLab.Security.Server/3.2/SecurityServerApplication.cs	(revision 1738)
@@ -45,4 +45,6 @@
 
     private String StartService(Services svc, IPAddress ipAddress, int port) {
+      binding.MaxReceivedMessageSize = 5000000;
+      binding.SendTimeout = new TimeSpan(0, 0, 0, 0, 20);
       string curServiceHost = "";
       Uri uriTcp;
@@ -53,5 +55,5 @@
       switch (svc) {
         case Services.PermissionManager:
-          if (securityManagerInstances.Length > 0) {
+          if (permissionManagerInstances.Length > 0) {
             uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/SecurityServer/"); 
             serviceHost = new ServiceHost(permissionManagerInstances[0].GetType(), uriTcp);
@@ -126,4 +128,4 @@
       StopService(Services.All);
     }
-  }
+  }                                                                                      
 }
