Index: django/db/models/manager.py
===================================================================
--- django/db/models/manager.py	(revision 6193)
+++ django/db/models/manager.py	(working copy)
@@ -111,3 +111,7 @@
         if instance != None:
             raise AttributeError, "Manager isn't accessible via %s instances" % type.__name__
         return self.manager
+
+class EmptyManager(Manager):
+    def get_query_set(self):
+        return self.get_empty_query_set()
Index: django/contrib/auth/models.py
===================================================================
--- django/contrib/auth/models.py	(revision 6193)
+++ django/contrib/auth/models.py	(working copy)
@@ -1,6 +1,7 @@
 from django.core import validators
 from django.core.exceptions import ImproperlyConfigured
 from django.db import connection, models
+from django.db.models.manager import EmptyManager
 from django.contrib.contenttypes.models import ContentType
 from django.utils.encoding import smart_str
 from django.utils.translation import ugettext_lazy as _
@@ -293,6 +294,11 @@
 class AnonymousUser(object):
     id = None
     username = ''
+    is_staff = False
+    is_active = True
+    is_superuser = False
+    _groups = EmptyManager()
+    _user_permissions = EmptyManager()
 
     def __init__(self):
         pass
@@ -325,11 +331,11 @@
         raise NotImplementedError
 
     def _get_groups(self):
-        raise NotImplementedError
+        return self._groups
     groups = property(_get_groups)
 
     def _get_user_permissions(self):
-        raise NotImplementedError
+        return self._user_permissions
     user_permissions = property(_get_user_permissions)
 
     def has_perm(self, perm):
Index: docs/authentication.txt
===================================================================
--- docs/authentication.txt	(revision 6193)
+++ docs/authentication.txt	(working copy)
@@ -244,6 +244,9 @@
 the ``django.contrib.auth.models.User`` interface, with these differences:
 
     * ``id`` is always ``None``.
+    * ``is_staff`` and ``is_superuser`` are always False
+    * ``is_active`` is always True
+    * ``groups`` and ``user_permissions`` are always empty
     * ``is_anonymous()`` returns ``True`` instead of ``False``.
     * ``is_authenticated()`` returns ``False`` instead of ``True``.
     * ``has_perm()`` always returns ``False``.
