[PATCH][saslauthd] cyrus-sasl-2.1.10/saslauthd credential caching

Igor Brezac igor at ipass.net
Tue Jan 14 23:36:05 EST 2003


Jeremy,

This stuff looks great and with a limited user sample (10) the performance
improvement was almost 100 fold.  Keep in mind, this is my first crack at
it.  I am using Solaris 9.  I am getting the following error

# ./saslcache -s
could not attach shared memory segment: 1200
shmat: Invalid argument

It is likely I need to adjust shared memory params.  I'll let you know
what I find.

One more note, can you make the changes against the  cvs version?

-Igor

On Tue, 14 Jan 2003, Jeremy Rumpf wrote:

> All,
>
> I've been working on combining some of the ideas for a credential caching
> layer into saslauthd. This is the first release for review/comments/testing.
>
> Changes:
>
> Three files have been added to the saslauthd package:
>
>  cache.c
>  cache.h
>  README.cache
>  saslcache.c
>
> Four files have been modified
>
>  Makefile.am
>  Makefile.in
>  saslauthd-doors.c
>  saslauthd-unix.c
>
> The saslauthd executable now accepts three new command line switches.
>
> -c	Enables the credential cache
> -s	Sets the size of the credential cache in kilobytes
> -t	Sets the timeout of items in the credential cache in seconds
>
> A show_usage() function has been added that dumps all possible options out
> when an invalid command line switch is found:
>
> ./saslauthd: invalid option -- -
> usage: saslauthd [options]
>
> option information:
>   -a <authmech>  Selects the authentication mechanism to use.
>   -c             Enable credential caching.
>   -d             Enables debugging, run in the foreground.
>   -O <option>    Optional argument to pass to the authentication
>                  mechanism.
>   -m <path>      Alternate path for the mux socket, must be absolute.
>   -n <threads>   Number of worker threads to create
>   -s <kilobytes> Size of the credential cache (in kilobytes)
>   -t <seconds>   Timeout for items in the credential cache (in seconds)
>   -T             Honor time-of-day login restrictions.
>   -v             Display version information and available
>                  authentication mechanisms and exit.
>
>
> The caching layer caches the username, realm, service, and an md5 hash of the
> passwords for all authentication mechanisms (LDAP, rimap, PAM, etc). It's
> been tested it on RedHat 7.2 Alpha and RedHat 7.3 Intel. I've also only been
> able to compile the modifications using the unix IPC option
> (saslauthd-unix.c). The same modifications have been made to the doors IPC
> option (saslauthd-doors.c), but have not been compiled or tested. More
> detailed information about the cache is in the README.cache file.
>
> In addition to testsaslauthd, a second utility is included, saslcache. The
> saslcache utility can be used to attach to the shared memory segment and
> perform various tasks. The saslcache utility can be built by:
>
> cd saslauthd
> make saslcache
>
> Usage examples:
>
> ./saslcache -s          dumps out some information about the cache
>
> ----------------------------------------
> Saslauthd Cache Detail:
>
>   timeout (seconds)           :  28800
>   total slots allocated       :  3643
>   slots in use                :  3
>   total buckets               :  21858
>   buckets per slot            :  6
>   buckets in use              :  3
>   hash table size (bytes)     :  2098536
>   bucket size (bytes)         :  96
>   minimum slot allocation     :  0
>   maximum slot allocation     :  1
>   slots at maximum allocation :  3
>   slots at minimum allocation :  3640
>   overall hash table load     :  0.00
>
>   hits*                       :  19
>   misses*                     :  3
>   total lookup attempts*      :  22
>   hit ratio*                  :  86.36
> ----------------------------------------
> * May not be completely accurate
> ----------------------------------------
>
> ./saslcache -d          dumps the contents of the cache in a csv format
>
> "user","realm","service","created","created_localtime"
> "m3","","imap","1042513583","Mon Jan 13 22:06:23 2003"
> "m2","","imap","1042513256","Mon Jan 13 22:00:56 2003"
> "m1","","imap","1042513355","Mon Jan 13 22:02:35 2003"
>
>
> ./saslcache -f          purges/deletes all entries in the cache
>
> 21858 entries purged
>
> Todo:
>
> Test the doors IPC stuff.
> Test on alternate OSs (only linux so far)
> Have someone help with the autoconf stuff. I'm not very familiar with autoconf
> and modeled the modifications after those for testsaslauthd. I'm not sure if
> they're entirely correct.
>
> For testing one should probably run saslauthd with the -d switch. The cache
> will log information to syslog (LOG_INFO|LOG_AUTH). Optionally, one could use
> the saslcache utility.
>
> Log Example:
>
> saslauthd[27772]: cache_lookup: user=m2 realm= service=imap: not found, entry
> created
> saslauthd[27772]: OK: user=m2 service=imap realm=
> saslauthd[27772]: cache_lookup: user=m2 realm= service=imap: found with valid
> passwd
> saslauthd[27772]: OK: user=m2 service=imap realm=
> saslauthd[20673]: cache_lookup: user=m2 realm= service=imap: found with
> invalid passwd, passwd synced
> saslauthd[20673]: cache_purge : prior lookup purged
> saslauthd[20673]: AUTHFAIL: user=m2 service=imap realm=
>
>
> Anyhow, if anyone wants to give it a whirl. Here's a first patch attempt
> against cyrus-sasl-2.1.10:
>
> ftp://ftp.net.ohio-state.edu/pub/users/jrumpf/cyrus-sasl/cyrus-sasl-2.1.10-cache-1.patch
>
> Or, a fully patched tar of cyrus-sasl-2.1.10 at:
>
> ftp://ftp.net.ohio-state.edu/pub/users/jrumpf/cyrus-sasl/cyrus-sasl-2.1.10-cache-1.tar.gz
>
>
> Feedback welcome...
>
> Cheers,
> Jeremy
>
>
>
>

-- 
Igor





More information about the Info-cyrus mailing list