diff -Naur a/ldap/ldap_authorization/ldap_authorization_drupal_role/LdapAuthorizationConsumerRole.class.php b/ldap/ldap_authorization/ldap_authorization_drupal_role/LdapAuthorizationConsumerRole.class.php
--- a/ldap/ldap_authorization/ldap_authorization_drupal_role/LdapAuthorizationConsumerRole.class.php	2012-05-15 05:47:47.000000000 +1000
+++ b/ldap/ldap_authorization/ldap_authorization_drupal_role/LdapAuthorizationConsumerRole.class.php	2012-05-20 18:05:36.000000000 +1000
@@ -113,7 +113,8 @@
   public function revokeSingleAuthorization(&$user, $role_name, &$user_auth_data) {
 
     $user_edit = array('roles' => array_diff($user->roles, array($this->drupalRolesByName[$role_name] => $role_name)));
-    $user = user_save($user, $user_edit);
+    $account = user_load($user->uid);
+    $user = user_save($account, $user_edit);
     $result = ($user && !isset($user->roles[$this->drupalRolesByName[$role_name]]));
 
     if ($this->detailedWatchdogLog) {
@@ -145,7 +146,8 @@
       watchdog('ldap_authorization', 'grantSingleAuthorization in drupal rold' . print_r($user, TRUE), array(), WATCHDOG_DEBUG);
     }
 
-    $user = user_save($user, $user_edit);
+    $account = user_load($user->uid);
+    $user = user_save($account, $user_edit);
     $result = ($user && isset($user->roles[$this->drupalRolesByName[$role_name]]));
 
     if ($this->detailedWatchdogLog) {
