[CalendarServer-changes] [2102]
CalendarServer/trunk/twistedcaldav/directory
source_changes at macosforge.org
source_changes at macosforge.org
Thu Jan 10 17:01:33 PST 2008
Revision: 2102
http://trac.macosforge.org/projects/calendarserver/changeset/2102
Author: wsanchez at apple.com
Date: 2008-01-10 17:01:28 -0800 (Thu, 10 Jan 2008)
Log Message:
-----------
Add auth caching for digest.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
CalendarServer/trunk/twistedcaldav/directory/test/util.py
Modified: CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2008-01-11 00:34:33 UTC (rev 2101)
+++ CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2008-01-11 01:01:28 UTC (rev 2102)
@@ -800,14 +800,28 @@
return False
try:
- return opendirectory.authenticateUserDigest(
+ if self.digestcache[credentials.fields[uri]] == response:
+ return True
+ except (AttributeError, KeyError):
+ pass
+
+ try:
+ if opendirectory.authenticateUserDigest(
self.service.directory,
self._nodename,
self.shortName,
challenge,
response,
credentials.method
- )
+ ):
+ try:
+ cache = self.digestcache
+ except AttributeError:
+ cache = self.digestcache = {}
+
+ cache[credentials.fields[uri]] = response
+
+ return True
except opendirectory.ODError, e:
logging.err("Open Directory error while performing digest authentication for record %s: %s"
% (self, e), system="OpenDirectoryService")
Modified: CalendarServer/trunk/twistedcaldav/directory/test/util.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/util.py 2008-01-11 00:34:33 UTC (rev 2101)
+++ CalendarServer/trunk/twistedcaldav/directory/test/util.py 2008-01-11 01:01:28 UTC (rev 2102)
@@ -295,39 +295,48 @@
service = self.service()
for user in self.users:
- userRecord = service.recordWithShortName(DirectoryService.recordType_users, user)
+ for good in (True, True, False, False, True):
+ userRecord = service.recordWithShortName(DirectoryService.recordType_users, user)
- # I'm glad this is so simple...
- response = calcResponse(
- calcHA1(
+ # I'm glad this is so simple...
+ response = calcResponse(
+ calcHA1(
+ "md5",
+ user,
+ service.realmName,
+ self.users[user]["password"],
+ "booger",
+ "phlegm",
+ ),
"md5",
- user,
- service.realmName,
- self.users[user]["password"],
"booger",
+ None,
"phlegm",
- ),
- "md5",
- "booger",
- None,
- "phlegm",
- "auth",
- "GET",
- "/",
- None,
- )
+ "auth",
+ "GET",
+ "/",
+ None,
+ )
- credentials = DigestedCredentials(
- user,
- "GET",
- service.realmName,
- {
- "response": response,
- "uri": "/",
- "nonce": "booger",
- "cnonce": "phlegm",
- "nc": None,
- },
- )
+ if good:
+ noise = ""
+ else:
+ noise = "blah"
- self.failUnless(userRecord.verifyCredentials(credentials))
+ credentials = DigestedCredentials(
+ user,
+ "GET",
+ service.realmName,
+ {
+ "response": response,
+ "uri": "/",
+ "nonce": "booger" + noise,
+ "cnonce": "phlegm",
+ "nc": None,
+ },
+ )
+
+ if good:
+ self.failUnless(userRecord.verifyCredentials(credentials))
+ else:
+ self.failIf(userRecord.verifyCredentials(credentials))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080110/02cf7618/attachment.html
More information about the calendarserver-changes
mailing list