Ignore:
Timestamp:
11/05/10 13:30:09 (11 years ago)
Author:
pjkersha
Message:

Working unit tested SAML Authorisation service with XACML back-end. TODO: Add Policy Information Point interface to XACML PDP to enable user attribute queries based on matching resource rule constraining attributes.

Location:
TI12-security/trunk/NDGSecurity/python/ndg_security_test/ndg/security/test
Files:
1 added
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/NDGSecurity/python/ndg_security_test/ndg/security/test/integration/authz_lite/securityservicesapp.py

    r6276 r6861  
    2424os.environ[BaseTestCase.configDirEnvVarName] = TEST_CONFIG_DIR 
    2525 
     26import optparse 
     27 
    2628# To start run  
    27 # $ paster serve services.ini or run this file as a script 
    28 # $ ./securityservicesapp.py [port #] 
    29 if __name__ == '__main__': 
    30     import sys 
    31     if len(sys.argv) > 1: 
    32         port = int(sys.argv[1]) 
    33     else: 
    34         port = 7443 
    35              
     29# $ paster serve services.ini or run this file as a script, see 
     30# $ ./securityservicesapp.py -h 
     31if __name__ == '__main__':     
     32    cfgFileName = INI_FILEPATH 
     33    cfgFilePath = os.path.join(dirname(abspath(__file__)), cfgFileName)   
     34         
     35    parser = optparse.OptionParser() 
     36    parser.add_option("-p", 
     37                      "--port", 
     38                      dest="port", 
     39                      default=7443, 
     40                      type='int', 
     41                      help="port number to run under") 
     42 
     43    parser.add_option("-s", 
     44                      "--with-ssl", 
     45                      dest="withSSL", 
     46                      default='True', 
     47                      help="Run with SSL") 
     48 
     49    parser.add_option("-c", 
     50                      "--conf", 
     51                      dest="configFilePath", 
     52                      default=cfgFilePath, 
     53                      help="Configuration file path") 
     54     
    3655    # Initialise test user database 
    3756    from ndg.security.test.unit import BaseTestCase 
    3857    BaseTestCase.initDb() 
    3958     
    40     cfgFileName = INI_FILEPATH 
    41     cfgFilePath = os.path.join(dirname(abspath(__file__)), cfgFileName)   
     59    opt = parser.parse_args()[0] 
    4260     
    43     certFilePath = os.path.join(BaseTestCase.NDGSEC_TEST_CONFIG_DIR,  
    44                                 'pki',  
    45                                 'localhost.crt') 
    46     priKeyFilePath = os.path.join(BaseTestCase.NDGSEC_TEST_CONFIG_DIR,  
    47                                   'pki',  
    48                                   'localhost.key') 
     61    if opt.withSSL.lower() == 'true': 
     62        certFilePath = os.path.join(BaseTestCase.NDGSEC_TEST_CONFIG_DIR,  
     63                                    'pki',  
     64                                    'localhost.crt') 
     65        priKeyFilePath = os.path.join(BaseTestCase.NDGSEC_TEST_CONFIG_DIR,  
     66                                      'pki',  
     67                                      'localhost.key') 
     68         
     69        ssl_context = SSL.Context(SSL.SSLv23_METHOD) 
     70        ssl_context.set_options(SSL.OP_NO_SSLv2) 
    4971     
    50     ssl_context = SSL.Context(SSL.SSLv23_METHOD) 
    51     ssl_context.set_options(SSL.OP_NO_SSLv2) 
     72        ssl_context.use_privatekey_file(priKeyFilePath) 
     73        ssl_context.use_certificate_file(certFilePath) 
     74    else: 
     75        ssl_context = None 
    5276 
    53     ssl_context.use_privatekey_file(priKeyFilePath) 
    54     ssl_context.use_certificate_file(certFilePath) 
    55  
    56     server = PasteDeployAppServer(cfgFilePath=cfgFilePath,  
    57                                   port=port, 
     77    server = PasteDeployAppServer(cfgFilePath=opt.configFilePath,  
     78                                  port=opt.port, 
    5879                                  ssl_context=ssl_context)  
    5980    server.start() 
  • TI12-security/trunk/NDGSecurity/python/ndg_security_test/ndg/security/test/unit/wsgi/saml/authz-decision-interface.ini

    r6615 r6861  
    3030saml.deserialise = ndg.saml.xml.etree:AuthzDecisionQueryElementTree.fromXML 
    3131saml.serialise = ndg.saml.xml.etree:ResponseElementTree.toXML 
     32saml.issuerName = /O=Test/OU=Authorisation Service 
     33saml.issuerFormat = urn:oasis:names:tc:SAML:1.1:nameid-format:x509SubjectName 
    3234 
    3335#______________________________________________________________________________ 
     
    3941paste.filter_app_factory = ndg.security.test.unit.wsgi.saml.test_soapauthzdecisioninterface:TestAuthorisationServiceMiddleware 
    4042queryInterfaceKeyName = AUTHZ_DECISION_QUERY_FUNC 
     43 
  • TI12-security/trunk/NDGSecurity/python/ndg_security_test/ndg/security/test/unit/wsgi/saml/authz-service.ini

    r6617 r6861  
    1515 
    1616[pipeline:main] 
    17 pipeline = TestAuthorisationServiceFilter SAMLSoapAuthzDecisionInterfaceFilter TestApp 
     17pipeline = AuthorisationServiceFilter SAMLSoapAuthzDecisionInterfaceFilter TestApp 
    1818 
    1919[app:TestApp] 
     
    2828saml.serialise = ndg.saml.xml.etree:ResponseElementTree.toXML 
    2929 
     30# AuthzDecisionQuery Response settings 
     31saml.issuerName = /O=NDG/OU=CEDA/CN=Authorisation Service 
     32saml.issuerFormat = urn:oasis:names:tc:SAML:1.1:nameid-format:x509SubjectName 
     33saml.clockSkewTolerance = 1 
     34saml.assertionLifetime = 86400 
     35 
    3036#______________________________________________________________________________ 
    3137# Authorisation Service WSGI settings 
    3238# 
    33 [filter:TestAuthorisationServiceFilter] 
     39[filter:AuthorisationServiceFilter] 
    3440# This filter is a container for a binding to a SOAP based interface to the 
    3541# Attribute Authority 
    3642paste.filter_app_factory = ndg.security.server.wsgi.authzservice:AuthzServiceMiddleware.filter_app_factory 
    3743prefix = authz. 
    38 authz.policy.filePath = %(here)s/policy-1.1.xml 
     44authz.policyFilePath = %(here)s/policy.xml 
    3945authz.queryInterfaceKeyName = %(queryInterfaceKeyName)s 
    40  
    41 # AuthzDecisionQuery Response settings 
    42 authz.issuerName = /O=NDG/OU=CEDA/CN=Authorisation Service 
    43 authz.clockSkewTolerance = 1 
    44 authz.assertionLifetime = 86400 
    4546 
    4647# Policy Information Point settings - makes an Attribute Queries to  
  • TI12-security/trunk/NDGSecurity/python/ndg_security_test/ndg/security/test/unit/wsgi/saml/test_soapauthzdecisioninterface.py

    r6617 r6861  
    3030    QUERY_INTERFACE_KEYNAME_OPTNAME = 'queryInterfaceKeyName' 
    3131    RESOURCE_URI = 'http://localhost/dap/data/' 
    32     ISSUER_DN = '/O=Site A/CN=PDP' 
     32    ISSUER_DN = '/O=Test/OU=Authorisation/CN=Service Stub' 
    3333     
    3434    def __init__(self, app, global_conf, **app_conf): 
     
    4242     
    4343    def authzDecisionQueryFactory(self): 
    44         def authzDecisionQuery(query): 
    45             response = Response() 
     44        def authzDecisionQuery(query, response): 
    4645            now = datetime.utcnow() 
    4746            response.issueInstant = now 
     
    5150            response.id = str(uuid4()) 
    5251            response.version = SAMLVersion(SAMLVersion.VERSION_20) 
    53                  
    54             response.issuer = Issuer() 
    55             response.issuer.format = Issuer.X509_SUBJECT 
    56             response.issuer.value = TestAuthorisationServiceMiddleware.ISSUER_DN 
    5752             
    5853            response.status = Status() 
     
    106101                            issuer="/O=Site A/CN=PEP", 
    107102                            subject="https://openid.localhost/philip.kershaw", 
    108                             resource=RESOURCE_URI, 
     103                            resource=None, 
    109104                            action=Action.HTTP_GET_ACTION, 
    110105                            actionNs=Action.GHPP_NS_URI): 
     
    122117        query.subject.nameID.format = EsgSamlNamespaces.NAMEID_FORMAT 
    123118        query.subject.nameID.value = subject 
    124                                      
    125         query.resource = resource          
     119                                  
     120        if resource is None: 
     121            query.resource = self.__class__.RESOURCE_URI 
     122        else:    
     123            query.resource = resource 
     124                  
    126125        query.actions.append(Action()) 
    127126        query.actions[0].namespace = actionNs 
     
    197196    """ 
    198197    CONFIG_FILENAME = 'authz-service.ini' 
    199     RESOURCE_URI = 'http://localhost/dap/data/my.nc.dods?time[0:1:0]' 
    200     ACCESS_DENIED_RESOURCE_URI = 'http://localhost/dap/data/test_accessDeniedToSecuredURI' 
     198    RESOURCE_URI = 'http://localhost/dap/data/my.nc.dods?time[0:1:0]&lat' 
     199    ACCESS_DENIED_RESOURCE_URI = \ 
     200        'http://localhost/dap/data/test_accessDeniedToSecuredURI' 
    201201     
    202202    def __init__(self, *arg, **kw): 
  • TI12-security/trunk/NDGSecurity/python/ndg_security_test/ndg/security/test/unit/x509/test_x509.py

    r5953 r6861  
    4141 
    4242class X509TestCase(BaseTestCase): 
     43    """Unit test X509 module""" 
     44    CA_DIR = os.path.join(BaseTestCase.NDGSEC_TEST_CONFIG_DIR, 'ca') 
    4345     
    4446    def __del__(self): 
     
    197199                  "isValidTime: %s" % _warningMsg) 
    198200 
    199  
     201    def test10ReadStackFromCADir(self): 
     202         
     203        stack = X509Stack.fromCADir(X509TestCase.CA_DIR) 
     204        self.assert_(stack) 
     205        self.assert_(len(stack) > 0) 
     206         
    200207class X500DNTestCase(BaseTestCase): 
    201208    def test01VerifyParsingForFieldsContainingSlash(self): 
Note: See TracChangeset for help on using the changeset viewer.