[reSIProcate] ServerAuthManager subclasses

Daniel Pocock daniel at readytechnology.co.uk
Sat Feb 4 07:10:54 CST 2006


Hi,

I've been looking at ServerAuthManager in DUM and felt that it would be 
useful to:

a) provide a way for subclasses to specify the realm to be sent in a 
challenge

b) allow subclasses to over-ride authorizedForThisIdentity and thereby 
determine which requests are authorized using their own algorithm

I have attached my patches below.

I am also looking at whether ServerAuthManager can perform optional 
authentication - in other words, some sessions require authentication 
while others don't.  Is the stack intended to be used in such a way? 

A typical example is:
- peer A is authenticated by username/password
- peer B is authenticated by IP
- peer C is not authenticated, but is allowed to make calls to a 
restricted set of URIs - he is only sent a 407 challenge if the URI he 
is calling matches a particular pattern

Regards,

Daniel



Index: resip/dum/ServerAuthManager.cxx
===================================================================
--- resip/dum/ServerAuthManager.cxx     (revision 5828)
+++ resip/dum/ServerAuthManager.cxx     (working copy)
@@ -186,7 +186,11 @@
    return ((fromUri.user() == user) && (fromUri.host() == realm));
 }

+const Data& ServerAuthManager::getChallengeRealm(const SipMessage& msg) {
+  return msg.header(h_RequestLine).uri().host();
+}

+
 // return true if request has been consumed
 ServerAuthManager::Result
 ServerAuthManager::handle(SipMessage* sipMsg)
Index: resip/dum/ServerAuthManager.hxx
===================================================================
--- resip/dum/ServerAuthManager.hxx     (revision 5828)
+++ resip/dum/ServerAuthManager.hxx     (working copy)
@@ -49,9 +49,10 @@

       typedef std::map<Data, SipMessage*> MessageMap;
       MessageMap mMessages;
-      bool authorizedForThisIdentity(const resip::Data &user,
+      virtual bool authorizedForThisIdentity(const resip::Data &user,
                                      const resip::Data &realm,
                                      resip::Uri &fromUri);
+      virtual const Data& getChallengeRealm(const SipMessage& msg);

 };


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3214 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20060204/d1545630/attachment.bin>


More information about the resiprocate-devel mailing list