Changeset 660


Ignore:
Timestamp:
03/03/06 14:48:07 (14 years ago)
Author:
pjkersha
Message:

AttAuthorityServer?.py and SessionMgrServer?.py:
Overridden SOAPRequestHandler.do_POST so that wsdl path may be set explicitly. - Overcomes
problem with port in WSDL set to Apache ProxyPass? setting (see httpd.conf).

ndgData.html, ndgUserRegistration.html:
Changed style sheet font size and improved appearance

security.py:
Fixes for inter-site SessionMgr? calls.

AttAuthority?.py, attAuthorityProperties.xml, AttCert?.py:
Modified so that AttCert?.setValidityTime can set a notBefore time of BEFORE utcnow. This has
been changed because of problems when checking validity times between machines that weren't time
synchronised.

The properties file includes a new parameter to allow an offset to made for the notBefore
'attCertNotBeforeOff'

SessionMgrIO.py:
include 'setExtAttCertList' parameter in AuthorisationReq?.

Session.py:
Fixed code for SessionMgr? WS forwarding in SessionMgr?.reqAuthorisation().

SessionClient?.py:
Fixed bug in reqAuthorisation response.
CredWallet?.py:
Fixes for inter-site authorisation tests.

Location:
TI12-security/trunk/python
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/AttAuthorityServer.py

    r537 r660  
    4444     """ 
    4545     def do_GET(self): 
    46            """Return the WSDL file. We expect to get the location from the 
    47            invocation URL ("path"). 
    48            """ 
    49            wsdlfile = os.path.join('.',  
    50                                    self.path.replace('/', "", 1) + ".wsdl") 
    51            print "> > > > > using wsdlfile", wsdlfile 
    52            wsdl = open(wsdlfile).read() 
    53            self.send_xml(wsdl) 
     46         """Return the WSDL file.""" 
     47          
     48         wsdlfile = "/var/www/html/attAuthority.wsdl" 
     49          
     50         print "> > > > > using wsdlfile", wsdlfile 
     51         wsdl = open(wsdlfile).read() 
     52         self.send_xml(wsdl) 
     53  
     54     def do_POST(self): 
     55          """Fudge to get _Dispatch to pick up the correct address 
     56          - seems to be necessary when putting proxy redirect for port in 
     57          the wsdl e.g. http://glue.badc.rl.ac.uk/attAuthority points to the 
     58          default port for the Attribute Authority.""" 
     59          self.path = "/attAuthority.wsdl" 
     60          SOAPRequestHandler.do_POST(self) 
    5461        
    5562        
  • TI12-security/trunk/python/NDG/AttAuthority.py

    r625 r660  
    7979                    'caCertFile', 
    8080                    'attCertLifeTime', 
     81                    'attCertNotBeforeOff', 
    8182                    'attCertFilePfx', 
    8283                    'attCertFileSfx', 
     
    302303        # Set validity time 
    303304        try: 
    304             attCert.setValidityTime(lifeTime=self.__prop['attCertLifeTime']) 
     305            attCert.setValidityTime(\ 
     306                        lifeTime=self.__prop['attCertLifeTime'], 
     307                        notBeforeOffset=self.__prop['attCertNotBeforeOff']) 
    305308 
    306309            # Check against the proxy certificate's expiry 
     
    489492  
    490493  
    491         # Ensure Certificate Lifetime is converted into a numeric type 
     494        # Ensure Certificate time parameters are converted to numeric type 
    492495        prop['attCertLifeTime'] = float(prop['attCertLifeTime']) 
    493             
     496        prop['attCertNotBeforeOff'] = float(prop['attCertNotBeforeOff']) 
     497           
    494498        self.__prop = prop 
    495499 
  • TI12-security/trunk/python/NDG/AttCert.py

    r539 r660  
    580580 
    581581 
    582     def setValidityTime(self,dtNotBefore=None, dtNotAfter=None, lifeTime=-1): 
     582    def setValidityTime(self, 
     583                        dtNotBefore=None,  
     584                        dtNotAfter=None,  
     585                        lifeTime=None, 
     586                        notBeforeOffset=None): 
    583587 
    584588        """Set the notBefore and notAfter times which determine the window for 
    585589        which the Attribute Certificate is valid 
    586590 
    587         Nb. use UTC time. 
     591        Nb. use UTC time.  lifeTime and notBeforeOffset are in seconds 
    588592        """ 
    589593 
     
    591595            if not isinstance(dtNotBefore, datetime): 
    592596                raise AttCertError(\ 
    593                     "Input not before time must be datetime type") 
     597                                "Input not before time must be datetime type") 
    594598             
    595599            self.__dtNotBefore = dtNotBefore 
    596600             
    597601        else: 
    598             # Use current UTC 
     602            # Use current UTC +/- offset 
    599603            self.__dtNotBefore = datetime.utcnow() 
    600  
    601  
    602  
    603         if dtNotAfter is not None and isinstance(dtNotAfter, datetime): 
     604             
     605            if notBeforeOffset is not None: 
     606                self.__dtNotBefore += timedelta(seconds=notBeforeOffset) 
     607             
     608 
     609 
     610        if dtNotAfter is not None: 
     611            if not isinstance(dtNotAfter, datetime): 
     612                raise AttCertError(\ 
     613                                "Input not after time must be datetime type") 
    604614 
    605615            # Use input Not After time to calculate a new lifetime setting 
     
    607617            if dtDeltaLifeTime < timedelta(0): 
    608618                raise AttCertError("Input Not After time is invalid %s" % \ 
    609                                     str(dtNotAfter)) 
     619                                   str(dtNotAfter)) 
    610620 
    611621            self.__lifeTime = dtDeltaLifeTime.days*86400 + \ 
     
    616626        else: 
    617627            # Check for input certificate life time interval 
    618             if lifeTime is not -1: 
     628            if lifeTime is not None: 
    619629                self.__lifeTime = lifeTime 
    620630                 
     
    695705        
    696706        dtNow = datetime.utcnow() 
     707         
     708        # Testing only 
     709        # 
     710        # P J Kershaw 02/03/06 
     711        #notBefore = self.__dtNotBefore 
     712        #notAfter = self.__dtNotAfter 
     713        #print "Valid Time? = %d" % (dtNow > notBefore and dtNow < notAfter) 
    697714        return dtNow > self.__dtNotBefore and dtNow < self.__dtNotAfter 
    698715 
  • TI12-security/trunk/python/NDG/CredWallet.py

    r540 r660  
    418418        # 
    419419        # P J Kershaw 12/09/05 
    420         for item in self.__credentials.items(): 
    421             if not item[1]['attCert'].isValid(chkSig=False): 
    422                 del self.__credentials[item[0]] 
     420        for key, val in self.__credentials.items(): 
     421            if not val['attCert'].isValid(chkSig=False): 
     422                del self.__credentials[key] 
    423423 
    424424 
     
    538538            # Check the status code returned from the authorisation request 
    539539            if authorisationResp['statCode'] == authorisationResp.accessError: 
    540                 raise CredWalletError(str(resp['errMsg'])) 
     540                raise CredWalletError(authorisationResp['errMsg']) 
    541541             
    542542            elif authorisationResp['statCode'] == \ 
    543543                                            authorisationResp.accessDenied: 
    544544                raise CredWalletAuthorisationDenied(\ 
    545                             "Authorisation denied: %s" % str(resp['errMsg'])) 
     545                    "Authorisation denied: %s" % authorisationResp['errMsg']) 
    546546 
    547547            elif authorisationResp['statCode'] == \ 
     
    795795 
    796796 
    797         # Check for external Attribute Certificates 
     797        # Check for list of external trusted hosts (other trusted NDG data  
     798        # centres) 
    798799        if extTrustedHostList: 
    799800            if not self.__mapFromTrustedHosts: 
     
    905906                    # Try each host in turn in order to get a certificate with 
    906907                    # the required credentials in order to do a mapping 
    907                     for i in trustedHostInfo.items(): 
     908                    for key, val in trustedHostInfo.items(): 
    908909 
    909910                        try: 
    910911                            extAttCert = self.__reqAuthorisation(\ 
    911                                                        aaWSDL=i[1]['wsdl']) 
     912                                                       aaWSDL=val['wsdl']) 
    912913 
    913914                            # Check the certificate contains at least one of 
    914915                            # the required roles 
    915916                            roles = extAttCert.getRoles() 
    916                             if [True for r in roles if r in i[1]['role']]: 
     917                            if [True for r in roles if r in val['role']]: 
    917918                               extAttCertList.append(extAttCert) 
    918919 
  • TI12-security/trunk/python/NDG/Session.py

    r546 r660  
    783783            # Instantiate WS proxy for remote session manager 
    784784            try: 
    785                 traceFile = StringIO() 
    786                 smSrv = ServiceProxy(userSessMgrWSDLuri,  
    787                                      use_wsdl=True, 
    788                                      tracefile=traceFile) 
     785                smSrv = ServiceProxy(userSessMgrWSDLuri, use_wsdl=True) 
    789786            except Exception, e: 
    790787                raise SessionMgrError(\ 
     
    795792            # Call remote session manager's authorisation request method 
    796793            # and return result to caller 
    797             try:    
    798                 return smSrv.reqAuthorisation(authorisationReq=reqText) 
     794            # 
     795            # TODO: Message level encryption public key of target SessionMgr 
     796            # is needed here in order to be able to apply message level  
     797            # encryption.  Get from cookie?? 
     798            # 
     799            # P J Kershaw 02/03/06 
     800            try:     
     801                # Format parsed request into a new request encrypted by the 
     802                # target SessionMgr's public key 
     803                redirectAuthReq = AuthorisationReq(\ 
     804                                    #encrPubKeyFilePath=userSessMgrPubKeyURI, 
     805                                    **dict(reqKeys.items())) 
     806                                     
     807                # Call remote SessionMgr where users session lies 
     808                redirectAuthResp = smSrv.reqAuthorisation(\ 
     809                                        authorisationReq=redirectAuthReq()) 
     810               
     811                # Parse XML contained in response                   
     812                resp = AuthorisationResp(\ 
     813                        xmlTxt=str(redirectAuthResp['authorisationResp'])) 
     814                return resp 
    799815             
    800816            except Exception, e: 
     
    12331249 
    12341250 
    1235  
    1236  
     1251    def _initTables(self, prompt=True): 
     1252        """Use with EXTREME caution - this method will initialise the database 
     1253        tables removing any previous records entered""" 
     1254  
     1255        if prompt: 
     1256            resp = raw_input(\ 
     1257        "Are you sure you want to initialise the database tables? (yes/no)") 
     1258     
     1259            if resp.upper() != "YES": 
     1260                print "Tables unchanged" 
     1261                return 
     1262         
     1263        self.User.createTable() 
     1264        self.UserCredential.createTable() 
     1265        print "Tables created" 
     1266 
     1267             
    12371268    #_________________________________________________________________________ 
    12381269    # Database tables defined using SQLObject derived classes 
  • TI12-security/trunk/python/NDG/SessionClient.py

    r633 r660  
    273273                                             
    274274            resp = self.__smSrv.reqAuthorisation(authorisationReq=authReq()) 
    275             authResp = AuthorisationResp(xmlTxt=resp['authorisationResp']) 
     275            authResp = AuthorisationResp(\ 
     276                                        xmlTxt=str(resp['authorisationResp'])) 
    276277            return authResp 
    277278             
  • TI12-security/trunk/python/NDG/SessionMgrIO.py

    r540 r660  
    221221                    "reqRole":                "", 
    222222                    "mapFromTrustedHosts":    "", 
     223                    "setExtAttCertList":      "", 
    223224                    "extAttCertList":         "", 
    224225                    "extTrustedHostList":     "", 
  • TI12-security/trunk/python/SessionMgrServer.py

    r542 r660  
    4444     """ 
    4545     def do_GET(self): 
    46            """Return the WSDL file. We expect to get the location from the 
    47            invocation URL ("path"). 
    48            """ 
    49            wsdlfile = os.path.join('.',  
    50                                    self.path.replace('/', "", 1) + ".wsdl") 
    51            print "> > > > > using wsdlfile", wsdlfile 
    52            wsdl = open(wsdlfile).read() 
    53            self.send_xml(wsdl) 
     46         """Return the WSDL file.""" 
     47          
     48         wsdlfile = "/var/www/html/sessionMgr.wsdl" 
     49          
     50         print "> > > > > using wsdlfile", wsdlfile 
     51         wsdl = open(wsdlfile).read() 
     52         self.send_xml(wsdl) 
     53  
     54     def do_POST(self): 
     55          """Fudge to get _Dispatch to pick up the correct address 
     56          - seems to be necessary when putting proxy redirect for port in 
     57          the wsdl e.g. http://glue.badc.rl.ac.uk/sessionMgr points to the 
     58          default port for the Session Manager.""" 
     59          self.path = "/sessionMgr.wsdl" 
     60          SOAPRequestHandler.do_POST(self) 
    5461            
    5562            
     
    6168          services -- list of service instances 
    6269       """ 
    63       address = ("127.0.0.1", port) 
     70      address = ("", port) 
    6471      sc = ServiceContainer(address, RequestHandlerClass=RequestHandlerClass) 
    6572      for service in services: 
     
    190197    try: 
    191198         AsServer(port=port,  
    192                   services=[sessionMgr(sm, debug=debug)],  
     199                  services=(sessionMgr(sm, debug=debug),),  
    193200                  RequestHandlerClass=SessionMgrSOAPRequestHandler) 
    194201 
  • TI12-security/trunk/python/Tests/ndgData.html

    r497 r660  
    1919text-align: justify 
    2020} 
    21 --> 
    2221a{ 
    2322text-decoration:none; 
     
    2625color:#0000FF; 
    2726} 
    28 body { font-family: Verdana, sans-serif; } 
     27body { font-family: Verdana, sans-serif; font-size: 10} 
     28table { font-family: Verdana, sans-serif; font-size: 10} 
     29--> 
    2930  </style> 
    3031</head> 
     
    3536    <tr> 
    3637      <td style="vertical-align: bottom;"> 
    37       <h2>NDG Data</h2> 
     38      <h3>NDG Data (Test page)</h3> 
    3839      </td> 
    3940      <td style="width: 86px; vertical-align: top;"> 
    40       <h2><img alt="NERC Data Grid" title="NERC Data Grid" 
    41  src="ndgCurrentlitRev.gif" style="width: 86px; height: 89px;"></h2> 
     41      <img alt="NERC Data Grid" title="NERC Data Grid" 
     42 src="ndgCurrentlitRev.gif" style="width: 86px; height: 89px;"> 
    4243      </td> 
    4344    </tr> 
     
    4546</table> 
    4647<hr style="width: 100%; height: 2px;"><br> 
    47 <table style="width: 100%; height: 236px;" border="0" cellpadding="10" 
     48<table style="width: 100%; height: 236px;" border="0" cellpadding="2" 
    4849 cellspacing="1"> 
    4950  <tbody> 
     
    5960      <td style="width: 20px;" valign="top"><img 
    6061 alt="data requires authorisation" title="data requires authorisation" 
    61  src="padlock.gif" style="width: 20px; height: 20px;"><br> 
     62 src="padlock.gif" style="width: 20px; height: 20px;"> 
    6263      </td> 
    6364      <td valign="top" width="127"> <a 
    6465 href="javascript:ndgDataOpenWindow('../../cgi-bin/security.cgi?authorise=1', '_blank', 'scrollbars=yes, resizable=no, width=512 ,height=468')">ACSOE 
    65 data set 1</a> <br> 
     66data set 1</a> 
    6667      </td> 
    67       <td valign="top" width="156">Test NDG security<br> 
     68      <td valign="top" width="156">Test NDG security 
    6869      </td> 
    6970    </tr> 
     
    7374 src="padlock.gif" style="width: 20px; height: 20px;"> </td> 
    7475      <td valign="top" width="127">aatsr_calval_ps 
    75 data set 1<br> 
     76data set 1 
    7677      </td> 
    77       <td valign="top" width="156">AATSR Cal/Val project space<br> 
     78      <td valign="top" width="156">AATSR Cal/Val project space 
    7879      </td> 
    7980    </tr> 
     
    8283 alt="data requires authorisation" title="data requires authorisation" 
    8384 src="padlock.gif" style="width: 20px; height: 20px;"> </td> 
    84       <td valign="top" width="127">avhrr_fasir<br> 
     85      <td valign="top" width="127">avhrr_fasir 
    8586      </td> 
    86       <td valign="top" width="156">AVHRR-FASIR </td> 
     87      <td valign="top" width="156">AVHRR-FASIR</td> 
    8788    </tr> 
    8889    <tr bgcolor="#e2e2e2"> 
    8990      <td style="width: 20px;" valign="top"> <br> 
    9091      </td> 
    91       <td valign="top" width="127">T-Rex data set 1<br> 
     92      <td valign="top" width="127">T-Rex data set 1 
    9293      </td> 
    9394      <td valign="top" width="156"> 
     
    100101  </tbody> 
    101102</table> 
    102 <p class="pBody"> </p> 
    103 <br> 
    104 <br> 
    105 <p class="pBody"> </p> 
    106 <br> 
    107 <br> 
    108103</body> 
    109104</html> 
  • TI12-security/trunk/python/Tests/ndgUserRegistration.html

    r476 r660  
    33<head> 
    44  <title>NDG User registration (Test)</title> 
     5  <style type="text/css"> 
     6<!-- 
     7.al { 
     8text-align: justify 
     9} 
     10a{ 
     11text-decoration:none; 
     12} 
     13a:hover{ 
     14color:#0000FF; 
     15} 
     16body { font-family: Verdana, sans-serif; font-size: 10} 
     17table { font-family: Verdana, sans-serif; font-size: 10} 
     18--> 
     19  </style> 
    520</head> 
    621<body> 
    7 <h1>NDG User registration (Test)<br> 
    8 </h1> 
     22<h3>NERC Data Grid Site User Registration (Test Page) 
     23</h3> 
    924<p>Enter user name and password for new account:</p> 
    1025<form action="../../cgi-bin/security.cgi" method="post"> <input 
     
    1429      <tr> 
    1530        <td><b>User name</b></td> 
    16         <td><input name="userName" type="text">@ 
    17         <select name="dataCentre"> 
    18         <option>BADC</option> 
    19         <option>BODC</option> 
    20         <option>PML</option> 
    21         <option>SOC</option> 
    22         </select> 
     31        <td><input name="userName" type="text"> 
    2332        </td> 
    2433      </tr> 
  • TI12-security/trunk/python/Tests/security.py

    r625 r660  
    2222from ZSI import ServiceProxy 
    2323 
    24 #if 'LD_LIBRARY_PATH' in os.environ: 
    25 #    os.environ['LD_LIBRARY_PATH'] += ":/usr/local/NDG-Security/lib" 
    26 #else: 
    27 #    os.environ['LD_LIBRARY_PATH'] = "/usr/local/NDG-Security/lib" 
    28 # 
    29 #print "LD_LIBRARY_PATH=" + os.environ['LD_LIBRARY_PATH'] 
    3024 
    3125from NDG.AttCert import * 
     
    5549                 smEncrPubKeyFilePath=None, 
    5650                 org=None, 
    57                          bDebug=False): 
     51                 bDebug=False): 
    5852        """Omit username, passphrase and org if running from CGI""" 
    5953         
     
    113107                    "Pass-phrase and confirmation pass-phrase don't agree") 
    114108                 
    115             self.__userName = form["userName"].value             
     109            self.__userName = form["userName"].value 
    116110            self.__passPhrase = form["passPhrase"].value 
    117111 
     
    173167         
    174168        if isinstance(heading, basestring): 
    175             print "<head>" 
    176             print "    <title>%s</title>" % heading 
    177             print "    <style type=\"text/css\">" 
    178             print "    body { font-family: Verdana, sans-serif; }" 
    179             print "    </style>" 
    180             print "</head>" 
    181              
     169            print """<head> 
     170    <title>%s</title> 
     171    <style type=\"text/css\"> 
     172    <!-- 
     173        .al { 
     174        text-align: justify 
     175        } 
     176        a{ 
     177        text-decoration:none; 
     178        } 
     179        a:hover{ 
     180        color:#0000FF; 
     181        } 
     182        body { font-family: Verdana, sans-serif; font-size: 10} 
     183        table { font-family: Verdana, sans-serif; font-size: 10} 
     184    --> 
     185    </style> 
     186</head>""" % heading 
     187 
     188 
    182189        if bodyTag: print "<body>" 
    183190 
    184191        if bAuthorise: 
    185             authoriseArg = "<input type=hidden name=authorise value=\"1\">"                                         
     192            authoriseArg = "<input type=hidden name=authorise value=\"1\">" 
    186193        else: 
    187194            authoriseArg = "" 
     
    192199                                   "allowMappingWithPrompt" :   '', 
    193200                                   "noMapping":                 ''} 
    194          
     201 
    195202        if self.__authorisationMethod is None: 
    196203            # Default to safest option for user 
     
    223230//--> 
    224231</script> 
    225 <h2>Login to the NERC Data Grid (Test)<BR clear=all></h2> 
     232<h3>NERC Data Grid Site Login (Test)<BR clear=all></h3> 
    226233<hr> 
    227234 
     
    229236 
    230237<table bgcolor=#ADD8E6 cellspacing=0 border=0 cellpadding=5> 
    231  
    232 <tr><td>User Name:</td> <td><input type=text name=userName value="">@ 
    233 <select name="org"> 
    234     <option>BODC</option> 
    235     <option>BADC</option> 
    236     <option>PML</option> 
    237     <option>NOCS</option> 
     238<tbody> 
     239<tr><td>User Name:</td> <td><input type=text name=userName value=""> 
    238240</td></tr> 
    239241<tr> 
     
    249251<input type=hidden name=authenticate value="1"> 
    250252%s"""  % authoriseArg 
    251          
     253 
    252254        print \ 
    253 """</table> 
     255"""</tbody></table> 
     256<br> 
    254257<div id="advSettings" style="position: relative; visibility: hidden;"> 
    255     <p>If you are not registered with this data centre it is possible to 
    256     access the data via any accounts you hold at other data centres: 
     258    <h4>Role Mapping for access to other trusted sites</h4> 
     259    <p>Your account has roles or <i>privileges</i> which determine what data you have access to.  If you access data at another NDG trusted site, these roles can be mapped to local roles at that site to help you gain access: 
    257260    </p> 
    258     <input type="radio" name="authorisationMethod" 
    259      value="allowMapping"%(allowMapping)s> 
    260         Use accounts I hold at other data centres to help gain access to the 
    261         data.<br> 
    262     <input type="radio" name="authorisationMethod" 
    263         value="allowMappingWithPrompt"%(allowMappingWithPrompt)s> 
    264         Use other accounts I hold, but allow me to choose which account to 
    265         use.<br> 
    266     <input type="radio" name="authorisationMethod" 
    267      value="noMapping"%(noMapping)s> 
    268         Try access without using any other accounts I hold.<br> 
     261    <table bgcolor=#ADD8E6 cellspacing=0 border=0 cellpadding=5> 
     262    <tbody> 
     263    <tr> 
     264        <td> 
     265            <input type="radio" name="authorisationMethod" value="allowMapping"%s> 
     266        </td> 
     267        <td> 
     268            Allow my roles to be mapped to local roles at other NDG trusted sites. 
     269        </td> 
     270    </tr> 
     271    <tr> 
     272        <td> 
     273            <input type="radio" name="authorisationMethod" value="allowMappingWithPrompt"%s> 
     274        </td> 
     275        <td> 
     276            Allow my roles to be mapped, but prompt me so that I may choose which roles to map before gaining access. 
     277        </td> 
     278    <tr> 
     279        <td> 
     280            <input type="radio" name="authorisationMethod" value="noMapping"%s> 
     281        </td> 
     282        <td> 
     283            Don't allow mapping of my roles. 
     284        </td> 
     285    </tr> 
     286    </tbody> 
     287    </table> 
    269288</div> 
    270289</form> 
    271 """ % authorisationMethodChk 
    272          
     290""" % (authorisationMethodChk['allowMapping'], \ 
     291       authorisationMethodChk['allowMappingWithPrompt'], \ 
     292       authorisationMethodChk['noMapping']) 
     293 
    273294        if bodyTag: print "</body>" 
    274295        if htmlTag: print "</html>" 
     
    312333    <title>NDG User Registration (Test)</title> 
    313334    <style type="text/css"> 
    314     body { font-family: Verdana, sans-serif; } 
     335    <!-- 
     336        .al { 
     337        text-align: justify 
     338        } 
     339        a{ 
     340        text-decoration:none; 
     341        } 
     342        a:hover{ 
     343        color:#0000FF; 
     344        } 
     345        body { font-family: Verdana, sans-serif; font-size: 10} 
     346        table { font-family: Verdana, sans-serif; font-size: 10} 
     347    --> 
    315348    </style> 
    316349</head> 
    317  
    318350<body> 
    319351    <p>New user %s registered</p> 
     
    328360    <title>NDG User Registration (Test)</title> 
    329361    <style type="text/css"> 
    330     body { font-family: Verdana, sans-serif; } 
     362    <!-- 
     363        .al { 
     364        text-align: justify 
     365        } 
     366        a{ 
     367        text-decoration:none; 
     368        } 
     369        a:hover{ 
     370        color:#0000FF; 
     371        } 
     372        body { font-family: Verdana, sans-serif; font-size: 10} 
     373        table { font-family: Verdana, sans-serif; font-size: 10} 
     374    --> 
    331375    </style> 
    332376</head> 
     
    356400            if self.__userName is None: 
    357401                raise SecurityCGIError("no username set") 
    358              
     402 
    359403            if self.__passPhrase is None: 
    360404                raise SecurityCGIError("no pass-phrase input") 
     
    373417                raise SecurityCGIError("Session client: " + str(e)) 
    374418 
    375             print \ 
     419 
     420            if setCookie: 
     421                print \ 
    376422"""Content-type: text/html 
    377423%s 
     
    380426    <title>NDG User Authentication (Test)</title> 
    381427    <style type="text/css"> 
    382     body { font-family: Verdana, sans-serif; } 
     428    <!-- 
     429        .al { 
     430        text-align: justify 
     431        } 
     432        a{ 
     433        text-decoration:none; 
     434        } 
     435        a:hover{ 
     436        color:#0000FF; 
     437        } 
     438        body { font-family: Verdana, sans-serif; font-size: 10} 
     439        table { font-family: Verdana, sans-serif; font-size: 10} 
     440    --> 
    383441    </style> 
    384442</head> 
     
    403461    <title>NDG User Authentication (Test)</title> 
    404462    <style type="text/css"> 
    405     body { font-family: Verdana, sans-serif; } 
     463    <!-- 
     464        .al { 
     465        text-align: justify 
     466        } 
     467        a{ 
     468        text-decoration:none; 
     469        } 
     470        a:hover{ 
     471        color:#0000FF; 
     472        } 
     473        body { font-family: Verdana, sans-serif; font-size: 10} 
     474        table { font-family: Verdana, sans-serif; font-size: 10} 
     475    --> 
    406476    </style> 
    407477</head> 
     
    523593    <Title>NDG User Authorisation (Test)</Title> 
    524594    <style type="text/css"> 
    525     body { font-family: Verdana, sans-serif; } 
     595    <!-- 
     596        .al { 
     597        text-align: justify 
     598        } 
     599        a{ 
     600        text-decoration:none; 
     601        } 
     602        a:hover{ 
     603        color:#0000FF; 
     604        } 
     605        body { font-family: Verdana, sans-serif; font-size: 10} 
     606        table { font-family: Verdana, sans-serif; font-size: 10} 
     607    --> 
    526608    </style> 
    527609</head> 
     
    551633    <title>NDG User Authorisation (Test)</title> 
    552634    <style type="text/css"> 
    553     body { font-family: Verdana, sans-serif; } 
     635    <!-- 
     636        .al { 
     637        text-align: justify 
     638        } 
     639        a{ 
     640        text-decoration:none; 
     641        } 
     642        a:hover{ 
     643        color:#0000FF; 
     644        } 
     645        body { font-family: Verdana, sans-serif; font-size: 10} 
     646        table { font-family: Verdana, sans-serif; font-size: 10} 
     647    --> 
    554648    </style> 
    555649</head> 
     
    579673    <title>NDG User Authorisation (Test)</title> 
    580674    <style type="text/css"> 
    581     body { font-family: Verdana, sans-serif; } 
     675    <!-- 
     676        .al { 
     677        text-align: justify 
     678        } 
     679        a{ 
     680        text-decoration:none; 
     681        } 
     682        a:hover{ 
     683        color:#0000FF; 
     684        } 
     685        body { font-family: Verdana, sans-serif; font-size: 10} 
     686        table { font-family: Verdana, sans-serif; font-size: 10} 
     687    --> 
    582688    </style> 
    583689</head> 
     
    605711         
    606712        if isinstance(heading, basestring): 
    607             print "<head>" 
    608             print "    <title>%s</title>" % heading 
    609             print "    <style type=\"text/css\">" 
    610             print "    body { font-family: Verdana, sans-serif; }" 
    611             print "    </style>" 
    612             print "</head>" 
     713            print """<head> 
     714    <title>%s</title> 
     715    <style type="text/css"> 
     716    <!-- 
     717        .al { 
     718        text-align: justify 
     719        } 
     720        a{ 
     721        text-decoration:none; 
     722        } 
     723        a:hover{ 
     724        color:#0000FF; 
     725        } 
     726        body { font-family: Verdana, sans-serif; font-size: 10} 
     727        table { font-family: Verdana, sans-serif; font-size: 10} 
     728    --> 
     729    </style> 
     730</head>""" % heading 
    613731 
    614732        sys.stderr.write("extAttCertList: \n\n%s\n" % extAttCertList) 
     
    709827    security = SecurityCGI(smWSDL, 
    710828                           aaWSDL, 
    711                            smEncrPubKeyFilePath=smPubKey, 
    712                            bDebug=True) 
     829#                           smEncrPubKeyFilePath=smPubKey, 
     830                           bDebug=False) 
    713831    security.cgi() 
  • TI12-security/trunk/python/attAuthorityProperties.xml

    r638 r660  
    1313    <caCertFile></caCertFile> 
    1414    <attCertLifeTime></attCertLifeTime> 
     15        <attCertNotBeforeOff></attCertNotBeforeOff> 
    1516    <attCertFilePfx></attCertFilePfx> 
    1617    <attCertFileSfx></attCertFileSfx> 
Note: See TracChangeset for help on using the changeset viewer.