Changeset 5222


Ignore:
Timestamp:
23/04/09 21:08:57 (10 years ago)
Author:
pjkersha
Message:
  • added ndg_security_test to buildout scripts
  • added BasicSessionManagerOpenIdAuthNInterface class to OpenID Provider Authentication interfaces ndg.security.server.wsgi.openid.provider.authninterface.basic
Location:
TI12-security/trunk/python
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/buildout/ndgsecurity/buildout.cfg

    r5206 r5222  
    1515recipe = zc.recipe.egg 
    1616interpreter = py 
    17 eggs = ndg_security 
     17eggs =  
     18        ndg_security 
     19        ndg_security_test 
    1820find-links = http://ndg.nerc.ac.uk/dist 
    1921 
  • TI12-security/trunk/python/buildout/ndgsecurity_pydap/buildout.cfg

    r5213 r5222  
    2222recipe = zc.recipe.egg 
    2323interpreter = py 
    24 eggs = ndg_security 
     24eggs =  
     25        ndg_security 
     26        ndg_security_test 
    2527find-links = http://ndg.nerc.ac.uk/dist 
    2628 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/wsgi/openid/provider/__init__.py

    r5189 r5222  
    142142        self.urls['id_yadis'] and adds it to this identifier: 
    143143         
    144             identifier = self._authN.username2UserIdentifiers(environ,username) 
     144            identifier = self._authN.username2UserIdentifiers(environ, 
     145                                                              username) 
    145146            identityURL = self.createIdentityURI(self.urls['url_id'], 
    146147                                                 identifier) 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/wsgi/openid/provider/authninterface/basic.py

    r4855 r5222  
    66intended for production use. 
    77 
    8 NERC Data Grid Project 
     8NERC DataGrid Project 
    99 
    1010""" 
     
    2525    it uses username/password details retrieved from config file / keyword 
    2626    entry.  This class is for testing only.  NOT for production use''' 
     27     
     28    propertyKeyNames = ('userCreds', 'username2UserIdentifiers') 
    2729     
    2830    def __init__(self, **prop): 
     
    8789           userIdentifier not in self._username2Identifier.get(username): 
    8890            raise AuthNInterfaceUsername2IdentifierMismatch() 
    89      
     91 
     92    def logout(self): 
     93        pass 
     94         
    9095    def username2UserIdentifiers(self, environ, username): 
    9196        """Map the login username to an identifier which will become the 
     
    114119            raise AuthNInterfaceRetrieveError('No entries for "%s" user' %  
    115120                                              username) 
     121 
     122 
     123from ndg.security.server.wsgi.utils.sessionmanagerclient import \ 
     124    WSGISessionManagerClient, AuthNServiceInvalidCredentials 
     125     
     126class BasicSessionManagerOpenIDAuthNInterface(BasicAuthNInterface): 
     127    '''Authentication interface class for OpenIDProviderMiddleware to enable 
     128    authentication to a Session Manager instance running in the same WSGI 
     129    stack or via a SOAP call to a remote service.  This is a basic test 
     130    interface.  See sessionmanager module for a full implementation linking to 
     131    a database via SQLAlchemy 
     132    ''' 
     133     
     134    def __init__(self, **prop): 
     135        """Extends BasicAuthNInterface initialising Session Manager Client 
     136         
     137        @type **prop: dict 
     138        @param **prop: set properties via keywords  
     139        @raise AuthNInterfaceConfigError: error with configuration 
     140        """ 
     141        super(BasicSessionManagerOpenIDAuthNInterface, self).__init__(**prop) 
     142         
     143        # Filter out BasicAuthNInterface properties ready for call to Session 
     144        # Manager client 
     145        for p in prop.keys(): 
     146            if p in BasicAuthNInterface.propertyKeyNames: 
     147                prop.pop(p) 
     148 
     149        self._client = WSGISessionManagerClient(**prop) 
     150         
     151         
     152    def logon(self, environ, userIdentifier, username, password): 
     153        """Interface login method 
     154         
     155        @type environ: dict 
     156        @param environ: standard WSGI environ parameter 
     157         
     158        @type username: basestring 
     159        @param username: user identifier 
     160         
     161        @type password: basestring 
     162        @param password: corresponding password for username givens 
     163         
     164        @raise AuthNInterfaceUsername2IdentifierMismatch: no OpenID  
     165        identifiers match the given username 
     166        @raise AuthNInterfaceInvalidCredentials: invalid username/password 
     167        """         
     168        if userIdentifier is not None and \ 
     169           userIdentifier not in self._username2Identifier.get(username): 
     170            raise AuthNInterfaceUsername2IdentifierMismatch() 
     171         
     172        try: 
     173            self._client.environ = environ 
     174            self.sessionId = self._client.connect(username,  
     175                                                  passphrase=password)[-1] 
     176             
     177        except AuthNServiceInvalidCredentials, e: 
     178            log.exception(e) 
     179            raise AuthNInterfaceInvalidCredentials() 
     180 
     181    def logout(self): 
     182        """logout from the Session Manager 
     183        """ 
     184        try: 
     185            self._client.disconnect(sessID=self.sessionId) 
     186             
     187        except Exception, e: 
     188            log.exception(e) 
     189            raise AuthNInterfaceInvalidCredentials() 
Note: See TracChangeset for help on using the changeset viewer.