[CalendarServer-changes] [1595]
CalendarServer/trunk/twistedcaldav/directory
source_changes at macosforge.org
source_changes at macosforge.org
Wed Jun 6 19:25:31 PDT 2007
Revision: 1595
http://trac.macosforge.org/projects/calendarserver/changeset/1595
Author: cdaboo at apple.com
Date: 2007-06-06 19:25:31 -0700 (Wed, 06 Jun 2007)
Log Message:
-----------
Make sure missing arguments in digest auth do not cause a 500 error when using OpenDirectory authentication.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py
Modified: CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2007-06-07 02:18:02 UTC (rev 1594)
+++ CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2007-06-07 02:25:31 UTC (rev 1595)
@@ -582,13 +582,18 @@
# We need a special format for the "challenge" and "response" strings passed into open directory, as it is
# picky about exactly what it receives.
- challenge = 'Digest realm="%(realm)s", nonce="%(nonce)s", algorithm=%(algorithm)s' % credentials.fields
- response = ('Digest username="%(username)s", '
- 'realm="%(realm)s", '
- 'nonce="%(nonce)s", '
- 'uri="%(uri)s", '
- 'response="%(response)s",'
- 'algorithm=%(algorithm)s') % credentials.fields
+ try:
+ challenge = 'Digest realm="%(realm)s", nonce="%(nonce)s", algorithm=%(algorithm)s' % credentials.fields
+ response = ('Digest username="%(username)s", '
+ 'realm="%(realm)s", '
+ 'nonce="%(nonce)s", '
+ 'uri="%(uri)s", '
+ 'response="%(response)s",'
+ 'algorithm=%(algorithm)s') % credentials.fields
+ except KeyError:
+ log.err("Open Directory (node=%s) error while performing digest authentication for user %s: missing digest response fields: %s"
+ % (self.service.realmName, self.shortName, credentials.fields))
+ return False
return opendirectory.authenticateUserDigest(
self.service.directory,
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py 2007-06-07 02:18:02 UTC (rev 1594)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py 2007-06-07 02:25:31 UTC (rev 1595)
@@ -23,6 +23,7 @@
else:
from twistedcaldav.directory.directory import DirectoryService
import twistedcaldav.directory.test.util
+ import twisted.web2.auth.digest
# Wonky hack to prevent unclean reactor shutdowns
class DummyReactor(object):
@@ -59,3 +60,18 @@
def service(self):
return self._service
+ def test_invalidODDigest(self):
+ record = twistedcaldav.directory.appleopendirectory.OpenDirectoryRecord(
+ self.service(),
+ DirectoryService.recordType_users,
+ "GUID-123",
+ "guidify",
+ "GUID",
+ set("mailtoguid at example.com",),
+ []
+ )
+
+ digestFields = {}
+ digested = twisted.web2.auth.digest.DigestedCredentials("user", "GET", "example.com", digestFields)
+
+ self.assertFalse(record.verifyCredentials(digested))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070606/8f588ab2/attachment.html
More information about the calendarserver-changes
mailing list