Changeset 2942


Ignore:
Timestamp:
10/10/07 15:15:28 (12 years ago)
Author:
pjkersha
Message:

ndg.security.server/setup.py: added init-credrepos-db to list of scripts

ndg.security.server/ndg/security/server/share/ndg-*: simplified and switched to base on NDGSEC_DIR env var and .tac files in conf/

ndg.security.server/ndg/security/server/share/Makefile: this uses ndg-aa as a template for the other scripts

ndg.security.server/ndg/security/server/conf/sessionMgrProperties.xml,
ndg.security.server/ndg/security/server/conf/attAuthorityProperties.xml: more comments added

ndg.security.server/ndg/security/server/initCredReposDb.py: moved from bin/ and added main function to make compatible for setuptools console-script

Location:
TI12-security/trunk
Files:
1 added
11 edited
1 moved

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/documentation/InstallationGuide/html/NDGSecurityInstallationGuide.html

    r2921 r2942  
    66        <META NAME="GENERATOR" CONTENT="OpenOffice.org 2.0  (Linux)"> 
    77        <META NAME="AUTHOR" CONTENT="P J Kershaw"> 
    8         <META NAME="CREATED" CONTENT="20071003;15320000"> 
    9         <META NAME="CHANGEDBY" CONTENT="Authorised User"> 
    10         <META NAME="CHANGED" CONTENT="20071003;15480000"> 
     8        <META NAME="CREATED" CONTENT="20071010;9350000"> 
     9        <META NAME="CHANGED" CONTENT="20071010;15023700"> 
    1110        <STYLE TYPE="text/css"> 
    1211        <!-- 
     
    4544<P ALIGN=LEFT><BR><BR> 
    4645</P> 
    47 <P ALIGN=LEFT><BR><BR> 
     46<P ALIGN=LEFT><A NAME="_Ref179772410"></A><BR><BR> 
    4847</P> 
    4948<P ALIGN=LEFT><SPAN ID="Frame1" DIR="LTR" STYLE="float: left; width: 12.96cm; height: 4.77cm; border: none; padding: 0cm; background: #ffffff"> 
     
    5150        Grid Security</B></FONT></P> 
    5251        <P ALIGN=RIGHT><FONT SIZE=6><B>Installation Guide</B></FONT></P> 
    53         <P ALIGN=RIGHT><FONT SIZE=3><B>Version 0.7</B></FONT></P> 
     52        <P ALIGN=RIGHT><FONT SIZE=3><B>Version 0.8</B></FONT></P> 
    5453</SPAN><BR><BR> 
    5554</P> 
     
    160159                        <P CLASS="western" ALIGN=JUSTIFY>Tidied headers for creation of 
    161160                        HTML version</P> 
     161                </TD> 
     162        </TR> 
     163        <TR VALIGN=TOP> 
     164                <TD WIDTH=194> 
     165                        <P ALIGN=JUSTIFY>0.8</P> 
     166                </TD> 
     167                <TD WIDTH=195> 
     168                        <P CLASS="western" ALIGN=JUSTIFY>09/10/07</P> 
     169                </TD> 
     170                <TD WIDTH=195> 
     171                        <UL> 
     172                                <LI><P CLASS="western" ALIGN=LEFT>Updates for mapConfig.xml, 
     173                                sessionMgrProperties.xml and attAuthorityProperties.xml config 
     174                                files</P> 
     175                                <LI><P CLASS="western" ALIGN=LEFT>Configuration for logging</P> 
     176                        </UL> 
    162177                </TD> 
    163178        </TR> 
     
    182197        <P ALIGN=JUSTIFY STYLE="margin-left: 0.35cm"><A HREF="#4.2.NDG Web Services Configuration|outline">4.2 
    183198        NDG Web Services Configuration  10</A></P> 
    184         <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.2.1.NDG Security System Configuration Directory|outline">4.2.1 
    185         NDG Security System Configuration Directory     10</A></P> 
     199        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.2.1.NDG Security System Configuration Files|outline">4.2.1 
     200        NDG Security System Configuration Files 10</A></P> 
    186201        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.2.2.Certificate Generation|outline">4.2.2 
    187         Certificate Generation  10</A></P> 
     202        Certificate Generation  11</A></P> 
    188203        <P ALIGN=JUSTIFY STYLE="margin-left: 0.35cm"><A HREF="#4.3.Session Manager Configuration|outline">4.3 
    189         Session Manager Configuration   11</A></P> 
     204        Session Manager Configuration   12</A></P> 
    190205        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.3.1.Session Manager Credential Repository|outline">4.3.1 
    191         Session Manager Credential Repository   11</A></P> 
     206        Session Manager Credential Repository   12</A></P> 
    192207        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.3.2.Session Manager Properties File Settings|outline">4.3.2 
    193208        Session Manager Properties File Settings        12</A></P> 
    194         <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.3.3.Twisted Python server .tac file|outline">4.3.3 
    195         Twisted Python server .tac file 15</A></P> 
    196         <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.3.4.SysV-style Boot Script|outline">4.3.4 
     209        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.3.3.SysV-style Boot Script|outline">4.3.3 
    197210        SysV-style Boot Script  15</A></P> 
    198211        <P ALIGN=JUSTIFY STYLE="margin-left: 0.35cm"><A HREF="#4.4.Attribute Authority Configuration|outline">4.4 
     
    205218        Role Mapping    18</A></P> 
    206219        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.4.4.Twisted Python server .tac file|outline">4.4.4 
    207         Twisted Python server .tac file 18</A></P> 
     220        Twisted Python server .tac file 19</A></P> 
    208221        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.4.5.SysV-style Boot Script|outline">4.4.5 
    209         SysV-style Boot Script  18</A></P> 
     222        SysV-style Boot Script  19</A></P> 
    210223        <P ALIGN=JUSTIFY STYLE="margin-left: 0.35cm"><A HREF="#4.5.Python Unit Tests|outline">4.5 
    211         Python Unit Tests       19</A></P> 
     224        Python Unit Tests       20</A></P> 
    212225        <P ALIGN=JUSTIFY STYLE="margin-left: 0.35cm"><A HREF="#4.6.Globus MyProxy|outline">4.6 
    213         Globus MyProxy  19</A></P> 
     226        Globus MyProxy  20</A></P> 
    214227        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.6.1.MyProxy and NDG Security Background|outline">4.6.1 
    215         MyProxy and NDG Security Background     19</A></P> 
     228        MyProxy and NDG Security Background     20</A></P> 
    216229        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.6.2.MyProxy user account and the repository location considerations|outline">4.6.2 
    217         MyProxy user account and the repository location considerations 19</A></P> 
     230        MyProxy user account and the repository location considerations 20</A></P> 
    218231        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.6.3.Build Process|outline">4.6.3 
    219         Build Process   20</A></P> 
     232        Build Process   21</A></P> 
    220233        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.6.4.NDG SimpleCA Client Package |outline">4.6.4 
    221         NDG SimpleCA Client Package     21</A></P> 
     234        NDG SimpleCA Client Package     22</A></P> 
    222235        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.6.5.Host Certificate Creation|outline">4.6.5 
    223         Host Certificate Creation       23</A></P> 
     236        Host Certificate Creation       24</A></P> 
    224237        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.6.6.MyProxy Configuration File|outline">4.6.6 
    225         MyProxy Configuration File      23</A></P> 
     238        MyProxy Configuration File      24</A></P> 
    226239        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.6.7.Repository Directory|outline">4.6.7 
    227         Repository Directory    24</A></P> 
     240        Repository Directory    25</A></P> 
    228241        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#4.6.8.Adding MyProxy Server to the system start up|outline">4.6.8 
    229         Adding MyProxy Server to the system start up    24</A></P> 
    230         <P ALIGN=JUSTIFY><A HREF="#5.Appendices|outline">5. Appendices  26</A></P> 
     242        Adding MyProxy Server to the system start up    25</A></P> 
     243        <P ALIGN=JUSTIFY><A HREF="#5.Appendices|outline">5. Appendices  27</A></P> 
    231244        <P ALIGN=JUSTIFY STYLE="margin-left: 0.35cm"><A HREF="#5.1.MySQL Installation|outline">5.1 
    232         MySQL Installation      26</A></P> 
     245        MySQL Installation      27</A></P> 
    233246        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.1.1.Version|outline">5.1.1 
    234         Version 26</A></P> 
     247        Version 27</A></P> 
    235248        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.1.2.Getting the Binaries|outline">5.1.2 
    236         Getting the Binaries    26</A></P> 
     249        Getting the Binaries    27</A></P> 
    237250        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.1.3.New mysql User Account|outline">5.1.3 
    238         New mysql User Account  26</A></P> 
     251        New mysql User Account  27</A></P> 
    239252        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.1.4.Unpacking the tarball|outline">5.1.4 
    240         Unpacking the tarball   26</A></P> 
     253        Unpacking the tarball   27</A></P> 
    241254        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.1.5.Configuration File|outline">5.1.5 
    242         Configuration File      27</A></P> 
     255        Configuration File      28</A></P> 
    243256        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.1.6.Create the Grant Tables|outline">5.1.6 
    244         Create the Grant Tables 27</A></P> 
     257        Create the Grant Tables 28</A></P> 
    245258        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.1.7.File and Directory Permissions|outline">5.1.7 
    246         File and Directory Permissions  28</A></P> 
     259        File and Directory Permissions  29</A></P> 
    247260        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.1.8.Starting the Server|outline">5.1.8 
    248         Starting the Server     28</A></P> 
     261        Starting the Server     29</A></P> 
    249262        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.1.9.Securing MySQL Accounts|outline">5.1.9 
    250         Securing MySQL Accounts 28</A></P> 
     263        Securing MySQL Accounts 29</A></P> 
    251264        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.1.10.Server Automated Start up|outline">5.1.10 
    252         Server Automated Start up       29</A></P> 
     265        Server Automated Start up       30</A></P> 
    253266        <P ALIGN=JUSTIFY STYLE="margin-left: 0.35cm"><A HREF="#5.2.HTTPS set-up with Apache Web Server|outline">5.2 
    254         HTTPS set-up with Apache Web Server     29</A></P> 
     267        HTTPS set-up with Apache Web Server     30</A></P> 
    255268        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.2.1.Web Server Host Certificate Generation|outline">5.2.1 
    256         Web Server Host Certificate Generation  29</A></P> 
     269        Web Server Host Certificate Generation  30</A></P> 
    257270        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.2.2.Apache Configuration File Settings|outline">5.2.2 
    258         Apache Configuration File Settings      29</A></P> 
     271        Apache Configuration File Settings      30</A></P> 
    259272        <P ALIGN=JUSTIFY STYLE="margin-left: 0.35cm"><A HREF="#5.3.Apache Web Server Proxy Settings Configuration for Web Services|outline">5.3 
    260         Apache Web Server Proxy Settings Configuration for Web Services 30</A></P> 
     273        Apache Web Server Proxy Settings Configuration for Web Services 31</A></P> 
    261274        <P ALIGN=JUSTIFY STYLE="margin-left: 0.35cm"><A HREF="#5.4.An Example Attribute Authority AAUserRoles interface class|outline">5.4 
    262         An Example Attribute Authority AAUserRoles interface class      31</A></P> 
     275        An Example Attribute Authority AAUserRoles interface class      32</A></P> 
    263276        <P ALIGN=JUSTIFY STYLE="margin-left: 0.35cm"><A HREF="#5.5.Troubleshooting|outline">5.5 
    264         Troubleshooting 34</A></P> 
     277        Troubleshooting 35</A></P> 
    265278        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.5.1.M2Crypto SWIG Build Error|outline">5.5.1 
    266         M2Crypto SWIG Build Error       34</A></P> 
     279        M2Crypto SWIG Build Error       35</A></P> 
    267280        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.5.2.PyXML|outline">5.5.2 
    268         PyXML   35</A></P> 
     281        PyXML   36</A></P> 
    269282        <P ALIGN=JUSTIFY STYLE="margin-left: 0.71cm"><A HREF="#5.5.3.4Suite-XML Build error|outline">5.5.3 
    270         4Suite-XML Build error  35</A></P> 
     283        4Suite-XML Build error  36</A></P> 
    271284</DIV> 
    272285<H1 CLASS="western"><A NAME="1. References|outline"></A>1. References</H1> 
     
    278291        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT COLOR="#0000ff"><U><A HREF="http://www-unix.globus.org/toolkit/docs/4.0/security/">http://www-unix.globus.org/toolkit/docs/4.0/security/</A></U></FONT> 
    279292        - Globus 4.0 and Security</P> 
     293        <LI><P CLASS="western" ALIGN=LEFT><FONT COLOR="#0000ff"><U><A HREF="http://peak.telecommunity.com/DevCenter/setuptools">http://peak.telecommunity.com/DevCenter/setuptools</A></U></FONT> 
     294        - Python Eggs and Easy Install</P> 
     295        <LI><P CLASS="western" ALIGN=LEFT><FONT COLOR="#0000ff"><U><A HREF="http://pywebsvcs.sourceforge.net/">http://pywebsvcs.sourceforge.net/</A></U></FONT> 
     296        - Python ZSI SOAP Web Services package</P> 
     297        <LI><P CLASS="western" ALIGN=LEFT><FONT COLOR="#0000ff"><U><A HREF="http://chandlerproject.org/bin/view/Projects/MeTooCrypto">http://chandlerproject.org/bin/view/Projects/MeTooCrypto</A></U></FONT> 
     298        - Python M2Crypto OpenSSL wrapper</P> 
     299        <LI><P CLASS="western" ALIGN=LEFT><FONT COLOR="#0000ff"><U><A HREF="http://twistedmatrix.com/trac/">http://twistedmatrix.com/trac/</A></U></FONT> 
     300        - Python Twisted Application Server</P> 
    280301        <LI><P CLASS="western" ALIGN=LEFT><A NAME="_Ref132180158"></A>NDG 
    281302        Security - Security Measures for Installation [v0.2, 7 September 
     
    283304        <FONT COLOR="#0000ff"><U><A HREF="http://bscw.badc.rl.ac.uk/bscw/bscw.cgi/d77103/NDG%20Security%20-%20Security%20Measures%20for%20Installation">http://bscw.badc.rl.ac.uk/bscw/bscw.cgi/d77103/NDG%20Security%20-%20Security%20Measures%20for%20Installation</A></U></FONT></P> 
    284305</OL> 
    285 <H1 CLASS="western" STYLE="page-break-before: auto; page-break-after: auto"><A NAME="2.Introduction|outline"></A> 
    286 2.Introduction</H1> 
     306<H1 CLASS="western"><A NAME="2.Introduction|outline"></A>2.Introduction</H1> 
    287307<P CLASS="western" ALIGN=JUSTIFY>This is a guide for system 
    288308administrators and developers deploying NDG security at a data 
     
    316336<P CLASS="western" ALIGN=JUSTIFY STYLE="margin-left: 0.64cm">Also 
    317337note document NDG <I>Security - Security Measures for Installation</I> 
    318  (see Ref 1above).</P> 
     338 (see Ref 1 above).</P> 
    319339<H2 CLASS="western"><A NAME="2.2.Deployment Model|outline"></A>2.2Deployment 
    320340Model</H2> 
     
    342362<P CLASS="western" ALIGN=JUSTIFY>Databases are on a separate server 
    343363to the web services host.  Web services access the databases over the 
    344 internal network.</P> 
    345 <P CLASS="western" ALIGN=JUSTIFY>Finally, the web services have ports 
    346 exposed in some way through the firewall to enable communication with 
    347 other NDG security web services at other sites.</P> 
     364internal network.  Finally, the web services have ports exposed in 
     365some way through the firewall to enable communication with other NDG 
     366security web services at other sites.</P> 
    348367<H1 CLASS="western"><A NAME="3.Software Installation Components|outline"></A> 
    3493683.Software Installation Components</H1> 
     
    442461<H3 CLASS="western"></H3> 
    443462<P CLASS="western" ALIGN=JUSTIFY>Once completed, you can delete 
    444 ez_setup.py.</P> 
     463<FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">ez_setup.py</SPAN></FONT>.</P> 
    445464<H3 CLASS="western"><A NAME="4.1.2.NDG Security Packages|outline"></A> 
    4464654.1.2NDG Security Packages</H3> 
    447466<P CLASS="western" ALIGN=JUSTIFY>NDG security uses a wrapper to 
    448 distutils easy_install to enable custom installation steps to be 
    449 correctly carried out.  Download the script from the NDG distribution 
    450 site:</P> 
     467distutils <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">easy_install</SPAN></FONT> 
     468to enable custom installation steps to be correctly carried out.  
     469Download the script from the NDG distribution site:</P> 
    451470<TABLE WIDTH=612 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0> 
    452471        <COL WIDTH=596> 
     
    483502<H2 CLASS="western"><A NAME="4.2.NDG Web Services Configuration|outline"></A> 
    4845034.2NDG Web Services Configuration</H2> 
    485 <H3 CLASS="western"><A NAME="4.2.1.NDG Security System Configuration Directory|outline"></A> 
    486 4.2.1NDG Security System Configuration Directory</H3> 
     504<H3 CLASS="western"><A NAME="4.2.1.NDG Security System Configuration Files|outline"></A> 
     5054.2.1NDG Security System Configuration Files</H3> 
    487506<P CLASS="western" ALIGN=JUSTIFY>Properties files set the 
    488507configuration settings for NDG security <I>server side</I> settings.  
    489 Templates for these are contained within the ndg_security_server 
     508Templates for these are contained within the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">ndg_security_server</SPAN></FONT> 
    490509installed in your python distribution’s site-packages directory.   
    491 A future version of the ndg-security-install.py script will extract 
    492 these and install at a suitable location on the file system.  For the 
    493 moment though, this is a manual process.</P> 
     510A future version of the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">ndg-security-install.py</SPAN></FONT> 
     511script will extract these and install at a suitable location on the 
     512file system.  For the moment though, this is a manual process.</P> 
    494513<P CLASS="western" ALIGN=JUSTIFY>Create a configuration area under 
    495 your servers /etc directory:</P> 
     514your servers <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">/etc</SPAN></FONT> 
     515directory:</P> 
    496516<TABLE WIDTH=612 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0> 
    497517        <COL WIDTH=596> 
     
    507527<P LANG="da-DK" CLASS="western" ALIGN=JUSTIFY><BR><BR> 
    508528</P> 
    509 <P CLASS="western" ALIGN=JUSTIFY>/etc/ndg/security is recognised by 
    510 the Python security software by the NDGSEC_DIR environment variable.  
    511 This variable can be set in the environment of the user account used 
    512 to run the security services or can be set in the init scripts used 
    513 to automatically start up the services from server boot up (See 
    514 sections 4.3.3).</P> 
    515 <P CLASS="western" ALIGN=JUSTIFY>Locate the ndg_security_server egg 
    516 and copy its conf/ directory into the configuration area.  For 
    517 example if you are using python installed in /usr/local then the 
    518 conf/ directory will be in:</P> 
     529<P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">/etc/ndg/security</SPAN></FONT> 
     530is recognised by the Python security software by the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">NDGSEC_DIR 
     531</SPAN></FONT>environment variable.  This variable can be set in the 
     532environment of the user account used to run the security services or 
     533can be set in the init scripts used to automatically start up the 
     534services from server boot up (See sections 4.3.24.3.3 and 4.4.5).</P> 
     535<P CLASS="western" ALIGN=JUSTIFY>Locate the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">ndg_security_server</SPAN></FONT> 
     536egg and copy its <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">conf/</SPAN></FONT> 
     537directory into the configuration area.  For example if you are using 
     538python installed in <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">/usr/local</SPAN></FONT> 
     539then the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">conf/</SPAN></FONT> 
     540directory will be in:</P> 
    519541<TABLE WIDTH=612 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0> 
    520542        <COL WIDTH=596> 
     
    538560                        <P STYLE="margin-bottom: 0cm"><BR> 
    539561                        </P> 
    540                         <P CLASS="western" ALIGN=LEFT>$ cp /usr/local/lib/python&lt;python 
    541                         version num&gt;/site-packages/ndg_security_server-&lt;version 
    542                         info&gt;.egg/ndg/security/server/conf /etc/ndg/security</P> 
    543                 </TD> 
    544         </TR> 
    545 </TABLE> 
    546 <P CLASS="western" ALIGN=JUSTIFY><BR><BR> 
    547 </P> 
    548 <P CLASS="western" ALIGN=JUSTIFY>The conf/ directory will containing 
    549 Session Manager and Attribute Authority properties XML files, certs/ 
    550 directory for storing certificates and attCert/ directory for storing 
    551 Attribute Certificates issued by the Attribute Authority.</P> 
     562                        <P><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">$ cp 
     563                        /usr/local/lib/python&lt;python version 
     564                        num&gt;/site-packages/ndg_security_server-&lt;version 
     565                        info&gt;.egg/ndg/security/server/conf /etc/ndg/security</FONT></P> 
     566                </TD> 
     567        </TR> 
     568</TABLE> 
     569<P CLASS="western" ALIGN=JUSTIFY><BR><BR> 
     570</P> 
     571<P CLASS="western" ALIGN=JUSTIFY>The <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">conf/</SPAN></FONT> 
     572directory will contain these important files:</P> 
     573<UL> 
     574        <LI><P CLASS="western" ALIGN=JUSTIFY>Session Manager and Attribute 
     575        Authority properties XML files</P> 
     576        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">openssl.conf</SPAN></FONT> 
     577        – used by the Session Manager to configure client connections to 
     578        MyProxy</P> 
     579        <LI><P CLASS="western" ALIGN=JUSTIFY>Special <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">.tac</SPAN></FONT> 
     580        configuration files loaded by the <I>Twisted</I> application server 
     581        used to run Session Manager and Attribute Authority services</P> 
     582        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">certs/</SPAN></FONT> 
     583        directory for storing X.509 certificates</P> 
     584        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">mapConfig.xml</SPAN></FONT> 
     585        for role mapping and other trust configuration parameters to enable 
     586        the Attribute Authority to operate with other trusted organisations 
     587        within NDG</P> 
     588        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">attCertLog/</SPAN></FONT> 
     589        directory for storing Attribute Certificates issued by the Attribute 
     590        Authority.</P> 
     591        <LI><P CLASS="western" ALIGN=JUSTIFY>Logging configuration files: 
     592        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">sessionMgrLog.cfg 
     593        </SPAN></FONT>and <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">attAuthorityLog.cfg</SPAN></FONT></P> 
     594</UL> 
     595<P CLASS="western" ALIGN=JUSTIFY>The default location for log files 
     596set in <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">sessionMgrLog.cfg</SPAN></FONT> 
     597and <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">attAuthorityLog.cfg</SPAN></FONT> 
     598is <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">$NDGSEC_DIR/log</SPAN></FONT>. 
     599 Create this directory as follows:</P> 
     600<TABLE WIDTH=612 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0> 
     601        <COL WIDTH=596> 
     602        <TR> 
     603                <TD WIDTH=596 HEIGHT=46 VALIGN=TOP BGCOLOR="#e6e6e6"> 
     604                        <P STYLE="margin-bottom: 0cm"><BR> 
     605                        </P> 
     606                        <P LANG="es-ES"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">$ 
     607                        mkdir /etc/ndg/security/log</FONT></P> 
     608                </TD> 
     609        </TR> 
     610</TABLE> 
    552611<P CLASS="western" ALIGN=JUSTIFY><BR><BR> 
    553612</P> 
     
    620679server certificate and key will be required in addition to enable 
    621680this.  These can be added to the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">$NDGSEC_DIR/conf/certs 
    622 directory and can be referenced by the Session Manager’s properties 
    623 file.</SPAN></FONT></P> 
     681directory and can be <FONT FACE="Helvetica, sans-serif">referenced by 
     682the Session Manager’s properties file.</FONT></SPAN></FONT></P> 
    624683<P CLASS="western" ALIGN=JUSTIFY>A copy of the NDG Certificate 
    625684Authority’s X.509 certificate is also required.  Obtain this from 
     
    6296884.3Session Manager Configuration</H2> 
    630689<P CLASS="western" ALIGN=JUSTIFY>Configuration parameters may be set 
    631 via a properties file.  In addition, the SessionManager can 
     690via a properties file.  In addition, the Session Manager can 
    632691optionally make use of a Credential Repository database.  This 
    633692enables the credentials that users acquire during a session to be 
    634693stored so that they may be retrieved.   When installed, the default 
    635 configuration set in the Session Manager properties file is to <I>not</I> 
     694configuration set in the Session Manager Properties file is to <I>not</I> 
    636695use a Credential Repository.   If this is the case, skip this 
    637696section.</P> 
     
    657716        </TR> 
    658717</TABLE> 
    659 <P CLASS="western" ALIGN=JUSTIFY><BR>Make use of the script  
    660 <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">initCredReposDb.py</SPAN></FONT> 
    661 to create the tables.  As the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">globus</SPAN></FONT> 
     718<P CLASS="western" ALIGN=JUSTIFY><BR>Use the script  
     719init-credrepos-db to create the tables.  As the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">globus</SPAN></FONT> 
    662720user, run the script.  Enter the password for the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">ndgUser</SPAN></FONT> 
    663721account when prompted and type <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">yes</SPAN></FONT> 
     
    670728                        </P> 
    671729                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">$ 
    672                         cd $NDGSEC_DIR/bin</FONT></P> 
    673                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">$ 
    674                         ./initCredReposDb.py –u root</FONT></P> 
     730                        init-credrepos-db –u root</FONT></P> 
    675731                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">Database 
    676732                        password:</FONT></P> 
     
    775831                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;cookieDomain&gt;&lt;/cookieDomain&gt;</FONT></FONT></P> 
    776832                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;myProxyProp&gt;</FONT></FONT></P> 
    777                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;!-- 
     833                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;!-- 
    778834                        </FONT></FONT> 
    779835                        </P> 
    780                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             Delete 
     836                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">Delete 
    781837                        this element and take setting from MYPROXY_SERVER environment </FONT></FONT> 
    782838                        </P> 
    783                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             variable 
     839                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">variable 
    784840                        if required</FONT></FONT></P> 
    785                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             --&gt;</FONT></FONT></P> 
    786                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;hostname&gt;ENTER 
     841                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">--&gt;</FONT></FONT></P> 
     842                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;hostname&gt;ENTER 
    787843                        THE FULLY QUALIFIED HOSTNAME OF THE SERVER&lt;/hostname&gt;</FONT></FONT></P> 
    788                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;!-- 
     844                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;!-- 
    789845                        </FONT></FONT> 
    790846                        </P> 
    791                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             Delete 
     847                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">Delete 
    792848                        this element to take default setting 7512 or read </FONT></FONT> 
    793849                        </P> 
    794                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             <SPAN LANG="fr-FR">MYPROXY_SERVER_PORT 
     850                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><SPAN LANG="fr-FR">MYPROXY_SERVER_PORT 
    795851                        setting</SPAN></FONT></FONT></P> 
    796                         <P LANG="fr-FR" STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">                --&gt;</FONT></FONT></P> 
    797                         <P LANG="fr-FR" STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">                &lt;port&gt;7512&lt;/port&gt;</FONT></FONT></P> 
    798                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><SPAN LANG="fr-FR">          </SPAN>&lt;!--</FONT></FONT></P> 
    799                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             Useful 
     852                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="fr-FR"><FONT SIZE=2 STYLE="font-size: 9pt">--&gt;</FONT></SPAN></FONT></P> 
     853                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="fr-FR"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;port&gt;7512&lt;/port&gt;</FONT></SPAN></FONT></P> 
     854                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;!--</FONT></FONT></P> 
     855                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">Useful 
    800856                        if hostname and certificate CN don't match correctly.  Globus </FONT></FONT> 
    801857                        </P> 
    802                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             host 
     858                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">host 
    803859                        DN is set to &quot;host/&lt;fqdn&gt;&quot;.  Delete this element 
    804860                        and set from </FONT></FONT> 
    805861                        </P> 
    806                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             MYPROXY_SERVER_DN 
     862                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">MYPROXY_SERVER_DN 
    807863                        environment variable if prefered</FONT></FONT></P> 
    808                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;serverDN&gt;&lt;/serverDN&gt;</FONT></FONT></P> 
    809                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             --&gt;</FONT></FONT></P> 
    810                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;!--</FONT></FONT></P> 
    811                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             Set 
     864                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;serverDN&gt;&lt;/serverDN&gt;</FONT></FONT></P> 
     865                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">--&gt;</FONT></FONT></P> 
     866                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;!--</FONT></FONT></P> 
     867                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">Set 
    812868                        &quot;host/&quot; prefix to host cert CN as is default with globus</FONT></FONT></P> 
    813                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             --&gt;</FONT></FONT></P> 
    814                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;serverCNprefix&gt;host/&lt;/serverCNprefix&gt;      </FONT></FONT></P> 
    815                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;!--</FONT></FONT></P> 
    816                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             This 
     869                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">--&gt;</FONT></FONT></P> 
     870                        <P STYLE="margin-bottom: 0cm">           
     871                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;serverCNprefix&gt;host/&lt;/serverCNprefix&gt; </FONT></FONT></P> 
     872                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;!--</FONT></FONT></P> 
     873                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">This 
    817874                        directory path is used to locate the OpenSSL configuration file</FONT></FONT></P> 
    818                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             </FONT></FONT></P> 
    819                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             The 
     875                        <P STYLE="margin-bottom: 0cm">            
     876                        </P> 
     877                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">The 
    820878                        settings are used to set up the defaults for the Distinguished 
    821879                        Name of</FONT></FONT></P> 
    822                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             the 
     880                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">the 
    823881                        new proxy cert. issued </FONT></FONT> 
    824882                        </P> 
    825                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             </FONT></FONT></P> 
    826                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             GLOBUS_LOCATION 
     883                        <P STYLE="margin-bottom: 0cm">            
     884                        </P> 
     885                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">GLOBUS_LOCATION 
    827886                        or GRID_SECURITY_DIR environment variables may be used</FONT></FONT></P> 
    828                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             but 
     887                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">but 
    829888                        the settings can be independent of any Globus installation</FONT></FONT></P> 
    830                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><BR>         --&gt;</FONT></FONT></P> 
    831                         <P STYLE="margin-bottom: 0cm">             
    832                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;girdSecurityDir&gt;$NDGSEC_DIR/conf&lt;/gridSecurityDir&gt;</FONT></FONT></P> 
    833                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;openSSLConfFileName&gt;openssl.conf&lt;/openSSLConfFileName&gt;</FONT></FONT></P> 
    834                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;tmpDir&gt;/tmp&lt;/tmpDir&gt;</FONT></FONT></P> 
    835                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;!-- 
     889                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><BR> 
     890                                  --&gt;</FONT></FONT></P> 
     891                        <P STYLE="margin-bottom: 0cm">           
     892                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;openSSLConfFilePath&gt;$NDGSEC_DIR/conf/openssl.conf&lt;/openSSLConfFilePath&gt;</FONT></FONT></P> 
     893                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;tmpDir&gt;/tmp&lt;/tmpDir&gt;</FONT></FONT></P> 
     894                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;!-- 
    836895                        </FONT></FONT> 
    837896                        </P> 
    838                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">                     Limit 
    839                         on maximum lifetime any proxy certificate can have - </FONT></FONT> 
    840                         </P> 
    841                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">                     specified 
    842                         when a certificate is first created by store() method</FONT></FONT></P> 
    843                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             --&gt;</FONT></FONT></P> 
    844                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;proxyCertMaxLifetime&gt;24&lt;/proxyCertMaxLifetime&gt; 
     897                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">      
     898                                  Limit on maximum lifetime any proxy certificate can have 
     899                        - </FONT></FONT> 
     900                        </P> 
     901                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">      
     902                                  specified when a certificate is first created by store() 
     903                        method</FONT></FONT></P> 
     904                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">--&gt;</FONT></FONT></P> 
     905                        <P STYLE="margin-bottom: 0cm">           
     906                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;proxyCertMaxLifetime&gt;24&lt;/proxyCertMaxLifetime&gt; 
    845907                        &lt;!-- in hours --&gt;</FONT></FONT></P> 
    846                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;!-- 
     908                        <P STYLE="margin-bottom: 0cm">           <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;!-- 
    847909                        </FONT></FONT> 
    848910                        </P> 
    849                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">                     Life 
    850                         time of a proxy certificate when issued from the Proxy Server </FONT></FONT> 
    851                         </P> 
    852                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">                     with 
    853                         getDelegation() method</FONT></FONT></P> 
    854                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">                     --&gt;</FONT></FONT></P> 
    855                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             &lt;proxyCertLifetime&gt;8&lt;/proxyCertLifetime&gt; 
     911                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">      
     912                                  Life time of a proxy certificate when issued from the 
     913                        Proxy Server </FONT></FONT> 
     914                        </P> 
     915                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">      
     916                                  with getDelegation() method</FONT></FONT></P> 
     917                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">      
     918                                  --&gt;</FONT></FONT></P> 
     919                        <P STYLE="margin-bottom: 0cm">           
     920                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;proxyCertLifetime&gt;8&lt;/proxyCertLifetime&gt; 
    856921                        &lt;!-- in hours --&gt;</FONT></FONT></P> 
    857                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">             <SPAN LANG="fr-FR">&lt;caCertFile&gt;$NDGSEC_DIR/conf/certs/cacert.pem&lt;/caCertFile&gt;</SPAN></FONT></FONT></P> 
     922                        <P STYLE="margin-bottom: 0cm">           
     923                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><SPAN LANG="fr-FR">&lt;caCertFile&gt;$NDGSEC_DIR/conf/certs/cacert.pem&lt;/caCertFile&gt;</SPAN></FONT></FONT></P> 
    858924                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="fr-FR"><FONT SIZE=2 STYLE="font-size: 9pt">  &lt;/myProxyProp&gt;</FONT></SPAN></FONT></P> 
    859925                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="fr-FR"><FONT SIZE=2 STYLE="font-size: 9pt">  &lt;simpleCACltProp&gt; 
     
    908974        property file reading software will expand any environment variables 
    909975        included in the file.</FONT></SPAN></FONT></P> 
    910         <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB"><FONT FACE="Helvetica, sans-serif">Openssl.conf 
     976        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">openssl.conf<FONT FACE="Helvetica, sans-serif"> 
    911977        file uses the standard OpenSSL configuration file format.  It is 
    912978        used by the Session Manager MyProxy client to formulate a 
     
    10861152<P CLASS="western" ALIGN=JUSTIFY><BR><BR> 
    10871153</P> 
    1088 <H3 CLASS="western"><A NAME="4.3.3.Twisted Python server .tac file|outline"></A> 
    1089 4.3.3Twisted Python server .tac file</H3> 
    1090 <P CLASS="western" ALIGN=JUSTIFY>Python security services use the 
    1091 Python Twisted package application server.  A special .tac 
    1092 configuration file is loaded by the Twisted server.  Copy this from 
    1093 the ndg_security_server to the NDG security conf/ area:</P> 
    1094 <TABLE WIDTH=618 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0> 
    1095         <COL WIDTH=602> 
    1096         <TR> 
    1097                 <TD WIDTH=602 VALIGN=TOP BGCOLOR="#e0e0e0"> 
    1098                         <P STYLE="margin-bottom: 0cm"><BR> 
    1099                         </P> 
    1100                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">$ 
    1101                         cp /usr/local/lib/python&lt;python version 
    1102                         num&gt;/site-packages/ndg_security_server-&lt;version 
    1103                         info&gt;.egg/ndg/security/server/server-config.tac<FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB"> 
    1104                         $NDGSEC_DIR/conf</SPAN></FONT></FONT></P> 
    1105                         <P><BR> 
    1106                         </P> 
    1107                 </TD> 
    1108         </TR> 
    1109 </TABLE> 
    1110 <P CLASS="western" ALIGN=JUSTIFY><BR><BR> 
    1111 </P> 
    1112 <H3 CLASS="western"><A NAME="_Ref175134983"></A><A NAME="4.3.4.SysV-style Boot Script|outline"></A> 
    1113 4.3.4SysV-style Boot Script</H3> 
     1154<H3 CLASS="western"><A NAME="_Ref175134983"></A><A NAME="_Ref179772391"></A><A NAME="4.3.3.SysV-style Boot Script|outline"></A> 
     11554.3.3SysV-style Boot Script</H3> 
    11141156<P CLASS="western" ALIGN=JUSTIFY>The Session Manager can be 
    11151157configured to start up at system boot of the host machine.  A SysV 
    11161158style start up script <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">ndg-sm</SPAN></FONT> 
    11171159is provided in the installation in:</P> 
    1118 <P CLASS="western" ALIGN=JUSTIFY>/usr/local/lib/python&lt;python 
    1119 version num&gt;/site-packages/ndg_security_server-&lt;version 
    1120 info&gt;.egg/ndg/security/server/<FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">share</SPAN></FONT> 
    1121   
     1160<P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">/usr/local/lib/python</SPAN></FONT>&lt;python 
     1161version num&gt;<FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">/site-packages/ndg_security_server</SPAN></FONT>-&lt;version 
     1162info&gt;<FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">.egg/ndg/security/server/share 
     1163 </SPAN></FONT> 
    11221164</P> 
    11231165<P CLASS="western" ALIGN=JUSTIFY>To configure, install this file:</P> 
     
    11421184<P CLASS="western" ALIGN=JUSTIFY><BR><BR> 
    11431185</P> 
    1144 <P CLASS="western" ALIGN=JUSTIFY>Edit the ndg-sm so that it uses the 
    1145 NDGSEC_DIR environment variable to point to the correct location of 
    1146 the .tac file in the conf/ directory. User and group ID settings can 
    1147 be made to run under alternative account to root.  If used ensure 
    1148 that $NDGSEC_DIR is set with the necessary permissions to enable 
    1149 access.   
    1150 </P> 
     1186<P CLASS="western" ALIGN=JUSTIFY>Edit the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">ndg-sm</SPAN></FONT> 
     1187so that it uses the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">NDGSEC_DIR</SPAN></FONT> 
     1188environment variable to point to the correct location of the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">.tac</SPAN></FONT> 
     1189file in the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">conf/</SPAN></FONT> 
     1190directory. User and group ID settings can be made to run under 
     1191alternative account to root.  If used ensure that <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">$NDGSEC_DIR</SPAN></FONT> 
     1192is set with the necessary permissions to enable access.   
     1193</P> 
     1194<P CLASS="western" ALIGN=JUSTIFY>Note that the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">chkconfig</SPAN></FONT> 
     1195command may not be available on your target machine.  Please refer to 
     1196instructions for your particular Linux distribution.</P> 
    11511197<H2 CLASS="western"><A NAME="4.4.Attribute Authority Configuration|outline"></A> 
    115211984.4Attribute Authority Configuration</H2> 
     
    11671213                        version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;</FONT></FONT></P> 
    11681214                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;AAprop&gt;</FONT></FONT></P> 
    1169                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">       &lt;!-- 
    1170                         </FONT></FONT> 
    1171                         </P> 
    1172                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">       'name' 
    1173                         setting MUST agree with map config file 'thisHost' name</FONT></FONT></P> 
    1174                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">       attribute</FONT></FONT></P> 
    1175                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">       --&gt;</FONT></FONT></P> 
    1176                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;name&gt;BADC&lt;/name&gt; 
    1177                         </FONT></FONT> 
     1215                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;!-- 
     1216                        </FONT></FONT></FONT> 
     1217                        </P> 
     1218                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">'name' 
     1219                        setting MUST agree with map config file 'thisHost' name attribute</FONT></FONT></FONT></P> 
     1220                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">--&gt;</FONT></FONT></FONT></P> 
     1221                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;name&gt;Organisation 
     1222                        Identifier&lt;/name&gt; </FONT></FONT></FONT> 
    11781223                        </P> 
    11791224                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;portNum&gt;SELECT 
     
    12221267                        <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;attCertLifetime&gt;86400&lt;/attCertLifetime&gt; 
    12231268                        &lt;!-- Measured in seconds --&gt;</FONT></FONT></P> 
    1224                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">       &lt;!-- 
    1225                         </FONT></FONT> 
    1226                         </P> 
    1227                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">       Allow 
    1228                         an offset for clock skew between servers running </FONT></FONT> 
    1229                         </P> 
    1230                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">       security 
    1231                         services.  - Use minus sign for time in the past</FONT></FONT></P> 
    1232                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">       --&gt;</FONT></FONT></P> 
     1269                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;!-- 
     1270                        </FONT></FONT></FONT> 
     1271                        </P> 
     1272                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">Allow 
     1273                        an offset for clock skew between servers running </FONT></FONT></FONT> 
     1274                        </P> 
     1275                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">security 
     1276                        services.  - Use minus sign for time in the past</FONT></FONT></FONT></P> 
     1277                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">--&gt;</FONT></FONT></FONT></P> 
    12331278                        <P STYLE="margin-bottom: 0cm">    
    12341279                        <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;attCertNotBeforeOff&gt;0&lt;/attCertNotBeforeOff&gt;</FONT></FONT></P> 
     
    12381283                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;mapConfigFile&gt;$NDGSEC_DIR/conf/mapConfig.xml&lt;/mapConfigFile&gt;</FONT></FONT></FONT></P> 
    12391284                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;!-- 
    1240                         All Attribute Certificates are recorded in this dir before 
    1241                         dispatch</FONT></FONT></P> 
    1242                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">to 
    1243                         SOAP requestor</FONT></FONT></P> 
    1244                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">--&gt;</FONT></FONT></P> 
     1285                        All Attribute Certificates issued are recorded in this dir --&gt;</FONT></FONT></P> 
    12451286                        <P STYLE="margin-bottom: 0cm">    
    1246                         <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;attCertDir&gt;$NDGSEC_DIR/conf/attCert&lt;/attCertDir&gt;</FONT></FONT></P> 
     1287                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;attCertDir&gt;$NDGSEC_DIR/conf/attCertLog&lt;/attCertDir&gt;</FONT></FONT></FONT></P> 
    12471288                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;!-- 
    12481289                        </FONT></FONT></FONT> 
    12491290                        </P> 
    1250                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">File 
    1251                         prefix and suffix for files stored in attCertDir </FONT></FONT> 
    1252                         </P> 
    1253                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">--&gt;</FONT></FONT></P> 
     1291                        <P STYLE="margin-bottom: 0cm">     <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">Files 
     1292                        in attCertDir are stored using a rotating file handler</FONT></FONT></FONT></P> 
     1293                        <P STYLE="margin-bottom: 0cm">     <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">attCertFileLogCnt 
     1294                        sets the max number of files created before the first is</FONT></FONT></FONT></P> 
     1295                        <P STYLE="margin-bottom: 0cm">     <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">overwritten</FONT></FONT></FONT></P> 
     1296                        <P STYLE="margin-bottom: 0cm">     <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">--&gt;</FONT></FONT></FONT></P> 
    12541297                        <P STYLE="margin-bottom: 0cm">    
    1255                         <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;attCertFilePfx&gt;ac-&lt;/attCertFilePfx&gt;</FONT></FONT></P> 
     1298                        <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;attCertFileName&gt;ac.xml&lt;/attCertFileName&gt;</FONT></FONT></P> 
    12561299                        <P STYLE="margin-bottom: 0cm">    
    1257                         <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;attCertFileSfx&gt;.xml&lt;/attCertFileSfx&gt;</FONT></FONT></P> 
     1300                        <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;attCertFileLogCnt&gt;1024&lt;/attCertFileLogCnt&gt;</FONT></FONT></P> 
    12581301                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;dnSeparator&gt;/&lt;/dnSeparator&gt;</FONT></FONT></P> 
    12591302                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;!-- 
     
    12661309                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">--&gt;</FONT></FONT></P> 
    12671310                        <P STYLE="margin-bottom: 0cm">    
    1268                         <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;userRolesModFilePath&gt;&lt;/userRolesModFilePath&gt;</FONT></FONT></P> 
     1311                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;userRolesModFilePath&gt;$NDGSEC_DIR/conf&lt;/userRolesModFilePath&gt;</FONT></FONT></FONT></P> 
    12691312                        <P STYLE="margin-bottom: 0cm">    
    1270                         <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;userRolesModName&gt;&lt;/userRolesModName&gt;</FONT></FONT></P> 
     1313                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;userRolesModName&gt;userRoles&lt;/userRolesModName&gt;</FONT></FONT></FONT></P> 
    12711314                        <P STYLE="margin-bottom: 0cm">    
    1272                         <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;userRolesClassName&gt;&lt;/userRolesClassName&gt;</FONT></FONT></P> 
     1315                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;userRolesClassName&gt;UserRoles&lt;/userRolesClassName&gt;</FONT></FONT></FONT></P> 
    12731316                        <P STYLE="margin-bottom: 0cm">    
    1274                         <FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;userRolesPropFile&gt;&lt;/userRolesPropFile&gt;</FONT></FONT></P> 
     1317                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Monospace">&lt;userRolesPropFile&gt;$NDGSEC_DIR/conf/userRoles.cfg&lt;/userRolesPropFile&gt;</FONT></FONT></FONT></P> 
    12751318                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2 STYLE="font-size: 9pt">&lt;/AAprop&gt;</FONT></FONT></P> 
    12761319                        <P>  
     
    13141357                        name=&quot;yourSiteIdentifier&quot;&gt;</FONT></P> 
    13151358                        <P STYLE="margin-bottom: 0cm">          
    1316                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;wsdl&gt;yourSiteAttAuthorityURI&lt;/wsdl&gt;</FONT></P> 
    1317                         <P STYLE="margin-bottom: 0cm">          
    1318                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginURI&gt;yourSiteLoginPageURI&lt;/loginURI&gt;</FONT></P> 
     1359                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;aaURI&gt;yourSiteAttAuthorityURI&lt;/aaURI&gt;</FONT></P> 
     1360                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;aaDN&gt;the 
     1361                        DN for the Attribute Authority’s X.509 Cert.&lt;/aaDN&gt;</FONT></P> 
     1362                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginURI&gt;Your 
     1363                        Site Login Page URI (https expected)&lt;/loginURI&gt;</FONT></P> 
     1364                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginServerDN&gt;The 
     1365                        DN of loginURI’s SSL cert.&lt;/loginServerDN&gt;</FONT></P> 
     1366                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginRequestServerDN&gt;</FONT></P> 
     1367                        <P STYLE="margin-bottom: 0cm">              <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">The 
     1368                        cert. DN for SSL server making a request to loginURI</FONT></P> 
     1369                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;/loginRequestServerDN&gt;</FONT></P> 
    13191370                        <P STYLE="margin-bottom: 0cm">     <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;/thisHost&gt;</FONT></P> 
    13201371                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;trusted 
     
    13221373                        <P STYLE="margin-bottom: 0cm">          
    13231374                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;aaURI&gt;bodcAttAuthorityURI&lt;/aaURI&gt;</FONT></P> 
    1324                         <P STYLE="margin-bottom: 0cm">          
    1325                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginURI&gt;bodcLoginPageURI&lt;/loginURI&gt;</FONT></P> 
     1375                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;aaDN&gt;the 
     1376                        DN for the Attribute Authority’s X.509 Cert.&lt;/aaDN&gt;</FONT></P> 
     1377                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginURI&gt;BODC’s 
     1378                        Login Page URI&lt;/loginURI&gt;</FONT></P> 
     1379                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginServerDN&gt;The 
     1380                        DN of loginURI’s SSL cert.&lt;/loginServerDN&gt;</FONT></P> 
     1381                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginRequestServerDN&gt;</FONT></P> 
     1382                        <P STYLE="margin-bottom: 0cm">              <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">The 
     1383                        cert. DN for SSL server making a request to loginURI</FONT></P> 
     1384                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;/loginRequestServerDN&gt;</FONT></P> 
    13261385                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;role 
    13271386                        remote=&quot;aBODCrole&quot; local=&quot;aLocalRole&quot;/&gt;</FONT></P> 
     
    13311390                        <P STYLE="margin-bottom: 0cm">          
    13321391                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;aaURI&gt;nocsAttAuthorityURI&lt;/aaURI&gt;</FONT></P> 
     1392                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;aaDN&gt;the 
     1393                        DN for the Attribute Authority’s X.509 Cert.&lt;/aaDN&gt;</FONT></P> 
    13331394                        <P STYLE="margin-bottom: 0cm">          
    13341395                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginURI&gt;nocsLoginPageURI&lt;/loginURI&gt;</FONT></P> 
     1396                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginServerDN&gt;The 
     1397                        DN of loginURI’s SSL cert.&lt;/loginServerDN&gt;</FONT></P> 
     1398                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginRequestServerDN&gt;</FONT></P> 
     1399                        <P STYLE="margin-bottom: 0cm">              <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">The 
     1400                        cert. DN for SSL server making a request to loginURI</FONT></P> 
     1401                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;/loginRequestServerDN&gt;</FONT></P> 
    13351402                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;role 
    13361403                        remote=&quot;aNOCSrole&quot; local=&quot;anotherLocalRole&quot;/&gt;</FONT></P> 
    13371404                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;/trusted&gt;</FONT></P> 
    13381405                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;trusted 
    1339                         name=&quot;PML&quot;&gt;</FONT></P> 
     1406                        name=&quot;NEODAAS&quot;&gt;</FONT></P> 
    13401407                        <P STYLE="margin-bottom: 0cm">          
    1341                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;aaURI&gt;pmlAttAuthorityURI&lt;/aaURI&gt;</FONT></P> 
     1408                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;aaURI&gt;neodaasAttAuthorityURI&lt;/aaURI&gt;</FONT></P> 
     1409                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;aaDN&gt;the 
     1410                        DN for the Attribute Authority’s X.509 Cert.&lt;/aaDN&gt;</FONT></P> 
    13421411                        <P STYLE="margin-bottom: 0cm">          
    1343                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginURI&gt;pmlLoginPageURI&lt;/loginURI&gt;</FONT></P> 
     1412                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginURI&gt;neodaasLoginPageURI&lt;/loginURI&gt;</FONT></P> 
     1413                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginServerDN&gt;The 
     1414                        DN of loginURI’s SSL cert.&lt;/loginServerDN&gt;</FONT></P> 
     1415                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;loginRequestServerDN&gt;</FONT></P> 
     1416                        <P STYLE="margin-bottom: 0cm">              <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">The 
     1417                        cert. DN for SSL server making a request to loginURI</FONT></P> 
     1418                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;/loginRequestServerDN&gt;</FONT></P> 
    13441419                        <P STYLE="margin-bottom: 0cm">          <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;role 
    1345                         remote=&quot;aPMLrole&quot; local=&quot;yetAnotherLocalRole&quot;/&gt;</FONT></P> 
     1420                        remote=&quot;neodaasRole&quot; local=&quot;yetAnotherLocalRole&quot;/&gt;</FONT></P> 
    13461421                        <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;/trusted&gt;</FONT></P> 
    13471422                        <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&lt;/AAmap&gt;</FONT></P> 
     
    13551430<P CLASS="western" ALIGN=JUSTIFY><BR><BR> 
    13561431</P> 
    1357 <P CLASS="western" ALIGN=JUSTIFY>&lt;todo: &gt;</P> 
     1432<P CLASS="western" ALIGN=JUSTIFY>The map file contains an entry for 
     1433each site that the Attribute Authority trusts.  These are listed 
     1434using the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">trusted</SPAN></FONT> 
     1435element name.  The Attribute Authority identifies itself with the 
     1436similar <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">thisHost</SPAN></FONT> 
     1437element.  Each uses a name attribute to uniquely identify the 
     1438organisation.  The example above shows a BADC map file which trusts 
     1439the organisations BODC, NOCS and NEODAAS.</P> 
     1440<P CLASS="western" ALIGN=JUSTIFY>Note that the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">thisHost 
     1441name </SPAN></FONT>attribute should match the name element in the 
     1442corresponding <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">attAuthorityProperties.xml</SPAN></FONT> 
     1443file.  <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">name</SPAN></FONT> 
     1444is copied as the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">issuerName</SPAN></FONT> 
     1445used in Attribute Certificates issued by the Attribute Authority.</P> 
     1446<P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">thisHost</SPAN></FONT> 
     1447and trusted elements share all the same sub-elements barring role.  
     1448</P> 
     1449<UL> 
     1450        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">aaURI</SPAN></FONT> 
     1451        – this is the address of the Attribute Authority</P> 
     1452        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">aaDN</SPAN></FONT> 
     1453        – the Distinguished Name of the Attribute Authority’s X.509 
     1454        certificate (not currently used)</P> 
     1455        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">loginURI</SPAN></FONT> 
     1456        – the address of the Login Service  
     1457        </P> 
     1458        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">loginServerDN</SPAN></FONT> 
     1459        – the Distinguished Name of the X.509 certificate held by the 
     1460        Login Service for SSL connections.  It is expected that the Login 
     1461        Service is run over https to protect the privacy of login 
     1462        credentials.  This field is not currently used.</P> 
     1463        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">loginRequestServerDN</SPAN></FONT> 
     1464        – on request for secured credentials a service provider enables 
     1465        the user to redirect to their chosen Login Service at another 
     1466        trusted site.   The on successful authentication the Login Service 
     1467        can return the user back to the service provider to enable them to 
     1468        continue with their request.  This return to address must be over 
     1469        https to enable credentials to be encrypted for the transit but also 
     1470        to validate service provider host making the request.   The Login 
     1471        Service carries this out by checking the SSL certificate of the 
     1472        service provider host and checking its Distinguished Name against 
     1473        the <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">loginRequestServerDN</SPAN></FONT> 
     1474        entries for the organisations it trusts.</P> 
     1475        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">role</SPAN></FONT> 
     1476        – this element is used to express an individual role mapping.  The 
     1477        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">local</SPAN></FONT> 
     1478        attribute refers to a role <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">thisHost</SPAN></FONT> 
     1479        supports.  The <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">remote</SPAN></FONT> 
     1480        attribute is assigned to the role of the trusted organisation it 
     1481        maps to.  It is possible to have multiple role entries.  One local 
     1482        role may map to many remote roles and vice versa: one remote role 
     1483        may map to many local roles.</P> 
     1484</UL> 
    13581485<H3 CLASS="western"><A NAME="4.4.4.Twisted Python server .tac file|outline"></A> 
    135914864.4.4Twisted Python server .tac file</H3> 
    1360 <P CLASS="western" ALIGN=JUSTIFY>Python security services use the 
    1361 Python Twisted package application server.  A special .tac 
    1362 configuration file is loaded by the Twisted server.  Copy this from 
    1363 the ndg_security_server to the NDG security conf/ area:</P> 
     1487<P CLASS="western" ALIGN=JUSTIFY>Copy this from the 
     1488ndg_security_server to the NDG security conf/ area:</P> 
    13641489<TABLE WIDTH=618 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0> 
    13651490        <COL WIDTH=602> 
     
    13801505<P CLASS="western" ALIGN=JUSTIFY><BR><BR> 
    13811506</P> 
    1382 <H3 CLASS="western"><A NAME="4.4.5.SysV-style Boot Script|outline"></A> 
     1507<H3 CLASS="western"><A NAME="_Ref179772414"></A><A NAME="4.4.5.SysV-style Boot Script|outline"></A> 
    138315084.4.5SysV-style Boot Script</H3> 
    13841509<P CLASS="western" ALIGN=JUSTIFY>As with the Session Manager, the 
     
    26422767<H2 CLASS="western"><A NAME="5.4.An Example Attribute Authority AAUserRoles interface class|outline"></A> 
    264327685.4An Example Attribute Authority AAUserRoles interface class</H2> 
    2644 <P CLASS="western" ALIGN=JUSTIFY>This interface is required in order 
    2645 to link the Attribute Authority to the data centre’s system for 
    2646 identifying registered users and managing their roles.  The 
    2647 installation comes with a simple test class which illustrates this:</P> 
    2648 <TABLE WIDTH=626 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0> 
    2649         <COL WIDTH=610> 
    2650         <TR> 
    2651                 <TD WIDTH=610 VALIGN=TOP BGCOLOR="#e0e0e0"> 
    2652                         <P STYLE="margin-bottom: 0cm"><BR> 
    2653                         </P> 
    2654                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;&quot;&quot;NDG 
    2655                         Attribute Authority User Roles class - acts as an interface 
    2656                         between</FONT></P> 
    2657                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">the 
    2658                         data centre's user roles configuration and the Attribute Authority</FONT></P> 
    2659                         <P STYLE="margin-bottom: 0cm">                                     
    2660                                                                     
    2661                         </P> 
    2662                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">NERC 
    2663                         Data Grid Project</FONT></P> 
    2664                         <P STYLE="margin-bottom: 0cm">                                     
    2665                                                                     
    2666                         </P> 
    2667                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">P 
    2668                         J Kershaw 29/07/05</FONT></P> 
    2669                         <P STYLE="margin-bottom: 0cm">                                     
    2670                                                                     
    2671                         </P> 
    2672                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">Copyright 
    2673                         (C) 2005 CCLRC &amp; NERC</FONT></P> 
    2674                         <P STYLE="margin-bottom: 0cm">                                     
    2675                                                                     
    2676                         </P> 
    2677                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">This 
    2678                         software may be distributed under the terms of the Q Public 
    2679                         License,</FONT></P> 
    2680                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">version 
    2681                         1.0 or later.</FONT></P> 
    2682                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;&quot;&quot;</FONT></P> 
    2683                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">cvsID 
    2684                         = '$Id'</FONT></P> 
    2685                         <P STYLE="margin-bottom: 0cm"><BR> 
    2686                         </P> 
    2687                         <P STYLE="margin-bottom: 0cm"><BR> 
    2688                         </P> 
    2689                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">from 
    2690                         AttAuthority import AAUserRoles</FONT></P> 
    2691                         <P STYLE="margin-bottom: 0cm"><BR> 
    2692                         </P> 
    2693                         <P STYLE="margin-bottom: 0cm"><BR> 
    2694                         </P> 
    2695                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">class 
    2696                         TestUserRoles(AAUserRoles):</FONT></P> 
    2697                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;&quot;&quot;Test 
    2698                         User Roles class dynamic import for Attribute Authority&quot;&quot;&quot;</FONT></P> 
    2699                         <P STYLE="margin-bottom: 0cm"><BR> 
    2700                         </P> 
    2701                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">def 
    2702                         __init__(self, propertiesFilePath=None):</FONT></P> 
    2703                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="nb-NO">pass</SPAN></FONT></P> 
    2704                         <P LANG="nb-NO" STYLE="margin-bottom: 0cm"><BR> 
    2705                         </P> 
    2706                         <P LANG="nb-NO" STYLE="margin-bottom: 0cm"><BR> 
    2707                         </P> 
    2708                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="nb-NO">def 
    2709                         userIsRegistered(self, dn):</SPAN></FONT></P> 
    2710                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">return 
    2711                         True</FONT></P> 
    2712                         <P STYLE="margin-bottom: 0cm"><BR> 
    2713                         </P> 
    2714                         <P STYLE="margin-bottom: 0cm"><BR> 
    2715                         </P> 
    2716                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">def 
    2717                         getRoles(self, dn):</FONT></P> 
    2718                         <P>        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">return 
    2719                         ['staff', 'postdoc', 'undergrad'] </FONT> 
    2720                         </P> 
    2721                         <P><BR> 
    2722                         </P> 
    2723                 </TD> 
    2724         </TR> 
    2725 </TABLE> 
    2726 <P STYLE="margin-bottom: 0cm"><BR> 
    2727 </P> 
     2769<P><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">This 
     2770interface is required in order to link the Attribute Authority to the 
     2771data centre’s system for identifying registered users and managing 
     2772their roles.  The installation comes with a simple test class which 
     2773illustrates this.  See ndg.security.server.conf.userRoles.</FONT></P> 
    27282774<P CLASS="western" ALIGN=JUSTIFY>The class must inherit from the 
    27292775<FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">AAUserRoles</SPAN></FONT> 
     
    27352781        – returns True if the user with the given input Distinguished Name 
    27362782        is registered at the site.  This method might contain an SQL query 
    2737         to the site’s user database for example.  This method is <I>optional</I>.</P> 
     2783        to the site’s user database for example.  This method is <I>optional 
     2784        </I><SPAN STYLE="font-style: normal">and is not part of the API to 
     2785        the Attribute Authority.</SPAN></P> 
    27382786        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">getRoles()</SPAN></FONT> 
    27392787        – returns a list of roles to which the user with the given input 
     
    27502798<P CLASS="western" ALIGN=JUSTIFY>The custom class used by the BODC is 
    27512799a more detailed example:</P> 
    2752 <TABLE WIDTH=626 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0> 
     2800<TABLE WIDTH=626 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0 STYLE="page-break-before: auto"> 
    27532801        <COL WIDTH=610> 
    27542802        <TR> 
    27552803                <TD WIDTH=610 VALIGN=TOP BGCOLOR="#e0e0e0"> 
    2756                         <P STYLE="margin-bottom: 0cm"><BR> 
    2757                         </P> 
    2758                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;&quot;&quot;NDG 
    2759                         Attribute Authority User Roles class for the BODC - acts as an 
    2760                         interface</FONT></P> 
    2761                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">between 
    2762                         BODC user database and the Attribute Authority</FONT></P> 
    2763                         <P STYLE="margin-bottom: 0cm"><BR> 
    2764                         </P> 
    2765                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">NERC 
    2766                         Data Grid Project</FONT></P> 
    2767                         <P STYLE="margin-bottom: 0cm"><BR> 
    2768                         </P> 
    2769                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">P 
    2770                         J Kershaw 09/09/05</FONT></P> 
    2771                         <P STYLE="margin-bottom: 0cm"><BR> 
    2772                         </P> 
    2773                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">Copyright 
    2774                         (C) 2005 CCLRC &amp; NERC</FONT></P> 
    2775                         <P STYLE="margin-bottom: 0cm"><BR> 
    2776                         </P> 
    2777                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">This 
    2778                         software may be distributed under the terms of the Q Public 
    2779                         License,</FONT></P> 
    2780                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">version 
    2781                         1.0 or later.</FONT></P> 
    2782                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;&quot;&quot;</FONT></P> 
    2783                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">from 
    2784                         DCOracle2 import *</FONT></P> 
    2785                         <P STYLE="margin-bottom: 0cm"><BR> 
    2786                         </P> 
    2787                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"># 
    2788                         For parsing of properties file</FONT></P> 
    2789                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">import 
    2790                         cElementTree as ElementTree</FONT></P> 
    2791                         <P STYLE="margin-bottom: 0cm"><BR> 
    2792                         </P> 
    2793                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">from 
    2794                         NDG.X509 import *</FONT></P> 
    2795                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">from 
    2796                         NDG.AttAuthority import AAUserRoles</FONT></P> 
    2797                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">from 
    2798                         NDG.AttAuthority import AAUserRolesError</FONT></P> 
    2799                         <P STYLE="margin-bottom: 0cm"><BR> 
    2800                         </P> 
    2801                         <P STYLE="margin-bottom: 0cm"><BR> 
    2802                         </P> 
    2803                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">class 
    2804                         BODCUserRoles(AAUserRoles):</FONT></P> 
    2805                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;&quot;&quot;User 
    2806                         Roles class dynamic import for BODC Attribute Authority&quot;&quot;&quot;</FONT></P> 
    2807                         <P STYLE="margin-bottom: 0cm"><BR> 
    2808                         </P> 
    2809                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"># 
    2810                         valid configuration property keywords</FONT></P> 
    2811                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">__validKeys 
    2812                         = [ 'userName', 'dbAddr']</FONT></P> 
    2813                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">          
    2814                            </FONT> 
    2815                         </P> 
    2816                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">          
    2817                            </FONT> 
    2818                         </P> 
    2819                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">def 
    2820                         __init__(self, propFilePath=None):</FONT></P> 
    2821                         <P STYLE="margin-bottom: 0cm">     
    2822                         </P> 
    2823                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">     self.__db 
    2824                         = None</FONT></P> 
    2825                         <P STYLE="margin-bottom: 0cm"><BR> 
    2826                         </P> 
    2827                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> if 
    2828                         propFilePath:</FONT></P> 
    2829                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2830                            prop = self.readProperties(propFilePath)</FONT></P> 
    2831                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2832                            self.connect(prop['userName'], prop['dbAddr'])</FONT></P> 
    2833                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> </FONT></P> 
    2834                         <P STYLE="margin-bottom: 0cm"><BR> 
    2835                         </P> 
    2836                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">def 
    2837                         readProperties(self, propFilePath):</FONT></P> 
    2838                         <P STYLE="margin-bottom: 0cm"><BR> 
    2839                         </P> 
    2840                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;&quot;&quot;Read 
    2841                         the configuration properties for the Attribute Authority</FONT></P> 
    2842                         <P STYLE="margin-bottom: 0cm"><BR> 
    2843                         </P> 
    2844                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">propFilePath: 
    2845                         file path to properties file</FONT></P> 
    2846                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;&quot;&quot;</FONT></P> 
    2847                         <P STYLE="margin-bottom: 0cm">         
    2848                         </P> 
    2849                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">try:</FONT></P> 
    2850                         <P STYLE="margin-bottom: 0cm">            <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">tree 
    2851                         = ElementTree.parse(propFilePath)</FONT></P> 
    2852                         <P STYLE="margin-bottom: 0cm">             
    2853                         </P> 
    2854                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">except 
    2855                         IOError, ioErr:</FONT></P> 
    2856                         <P STYLE="margin-bottom: 0cm">            <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">raise 
    2857                         AAUserRolesError(\</FONT></P> 
    2858                         <P STYLE="margin-bottom: 0cm">                            <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;Error 
    2859                         parsing properties file \&quot;%s\&quot;: %s&quot; % \</FONT></P> 
    2860                         <P STYLE="margin-bottom: 0cm">                            
    2861                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">(ioErr.filename, 
    2862                         ioErr.strerror))</FONT></P> 
    2863                         <P STYLE="margin-bottom: 0cm"><BR> 
    2864                         </P> 
    2865                         <P STYLE="margin-bottom: 0cm">         
    2866                         </P> 
    2867                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">prop 
    2868                         = tree.getroot()</FONT></P> 
    2869                         <P STYLE="margin-bottom: 0cm"><BR> 
    2870                         </P> 
    2871                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"># 
    2872                         Copy properties from file as member variables</FONT></P> 
    2873                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">userRolesProp 
    2874                         = \</FONT></P> 
    2875                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">         dict([(elem.tag, 
    2876                         elem.text.strip()) for elem in prop])</FONT></P> 
    2877                         <P STYLE="margin-bottom: 0cm"><BR> 
    2878                         </P> 
    2879                         <P STYLE="margin-bottom: 0cm"><BR> 
    2880                         </P> 
    2881                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"># 
    2882                         Check for missing properties</FONT></P> 
    2883                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">propKeys 
    2884                         = userRolesProp.keys()</FONT></P> 
    2885                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">missingKeys 
    2886                         = [key for key in BODCUserRoles.__validKeys \</FONT></P> 
    2887                         <P STYLE="margin-bottom: 0cm">                       <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">if 
    2888                         key not in propKeys]</FONT></P> 
    2889                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">if 
    2890                         missingKeys != []:</FONT></P> 
    2891                         <P STYLE="margin-bottom: 0cm">            <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">raise 
    2892                         AAUserRolesError(&quot;The following properties are &quot; + \</FONT></P> 
    2893                         <P STYLE="margin-bottom: 0cm">                                    
    2894                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;missing 
    2895                         from the properties file: &quot; + \</FONT></P> 
    2896                         <P STYLE="margin-bottom: 0cm">                                    
    2897                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">', 
    2898                         '.join(missingKeys))</FONT></P> 
    2899                         <P STYLE="margin-bottom: 0cm"><BR> 
    2900                         </P> 
    2901                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> return 
    2902                         userRolesProp</FONT></P> 
    2903                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> </FONT></P> 
    2904                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> </FONT></P> 
    2905                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> </FONT></P> 
    2906                         <P STYLE="margin-bottom: 0cm"><BR> 
    2907                         </P> 
    2908                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">def 
    2909                         connect(self, </FONT> 
    2910                         </P> 
    2911                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">         userName,</FONT></P> 
    2912                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">         dbAddr, 
    2913                         </FONT> 
    2914                         </P> 
    2915                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">         passPhrase=None,</FONT></P> 
    2916                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">         prompt=None):</FONT></P> 
    2917                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">     &quot;&quot;&quot;Connect 
    2918                         to database</FONT></P> 
    2919                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> </FONT></P> 
    2920                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> If 
    2921                         no passphrase is given prompt from stdin&quot;&quot;&quot;</FONT></P> 
    2922                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> </FONT></P> 
    2923                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> </FONT></P> 
    2924                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> if 
    2925                         not passPhrase:</FONT></P> 
    2926                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2927                            if not prompt:</FONT></P> 
    2928                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2929                                 prompt = &quot;Database Passphrase: &quot;</FONT></P> 
    2930                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">         </FONT></P> 
    2931                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2932                            import getpass</FONT></P> 
    2933                         <P STYLE="margin-bottom: 0cm">            <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">passPhrase 
    2934                         = getpass.getpass(prompt=prompt)</FONT></P> 
    2935                         <P STYLE="margin-bottom: 0cm"><BR> 
    2936                         </P> 
    2937                         <P STYLE="margin-bottom: 0cm"><BR> 
    2938                         </P> 
    2939                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">try:</FONT></P> 
    2940                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2941                            self.__db = connect(&quot;%s/%s@%s&quot; % (userName, 
    2942                         passPhrase, dbAddr))</FONT></P> 
    2943                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2944                            self.__cursor = self.__db.cursor()</FONT></P> 
    2945                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2946                            </FONT> 
    2947                         </P> 
    2948                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> except 
    2949                         Exception, e:</FONT></P> 
    2950                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2951                            raise AAUserRolesError(\</FONT></P> 
    2952                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2953                                 &quot;Error connecting to database \&quot;%s\&quot;: %s&quot; 
    2954                         % (dbAddr, e))</FONT></P> 
    2955                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">         </FONT></P> 
    2956                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> </FONT></P> 
    2957                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">def 
    2958                         userIsRegistered(self, dn):</FONT></P> 
    2959                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">     &quot;&quot;&quot;Check 
    2960                         user with given Distinguished Name is registered with </FONT> 
    2961                         </P> 
    2962                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> BODC 
    2963                         database&quot;&quot;&quot;</FONT></P> 
    2964                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> </FONT></P> 
    2965                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">     try:</FONT></P> 
    2966                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2967                            emailAddr = X500DN(dn)['CN']</FONT></P> 
    2968                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2969                            query = &quot;&lt;BODC Database query&gt;&quot;</FONT></P> 
    2970                         <P STYLE="margin-bottom: 0cm">            
    2971                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">self.__cursor.execute(query, 
    2972                         emailAddr)</FONT></P> 
    2973                         <P STYLE="margin-bottom: 0cm"><BR> 
    2974                         </P> 
    2975                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2976                            if self.__cursor.fetchall():</FONT></P> 
    2977                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2978                                 return True</FONT></P> 
    2979                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2980                            else:</FONT></P> 
    2981                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2982                                return False</FONT></P> 
    2983                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">         </FONT></P> 
    2984                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> except 
    2985                         Exception, e:</FONT></P> 
    2986                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2987                            raise AAUserRolesError(\</FONT></P> 
    2988                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    2989                                 &quot;Error checking user \&quot;%s\&quot; is registered: %s&quot; 
    2990                         % (dn, e))</FONT></P> 
    2991                         <P STYLE="margin-bottom: 0cm"><BR> 
    2992                         </P> 
    2993                         <P STYLE="margin-bottom: 0cm"><BR> 
    2994                         </P> 
    2995                         <P STYLE="margin-bottom: 0cm">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">def 
    2996                         getRoles(self, dn):</FONT></P> 
    2997                         <P STYLE="margin-bottom: 0cm">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">&quot;&quot;&quot;Retrieve 
    2998                         roles from user with given Distinguished Name&quot;&quot;&quot;</FONT></P> 
    2999                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> try:</FONT></P> 
    3000                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    3001                            emailAddr = X500DN(dn)['CN']</FONT></P> 
    3002                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    3003                            query = &quot;&lt;BODC Database query&gt;&quot;</FONT></P> 
    3004                         <P STYLE="margin-bottom: 0cm">            
    3005                         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">self.__cursor.execute(query, 
    3006                         emailAddr)</FONT></P> 
    3007                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    3008                            roles = self.__cursor.fetchall()</FONT></P> 
    3009                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    3010                            return [i[0] for i in roles]</FONT></P> 
    3011                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">  
    3012                            </FONT> 
    3013                         </P> 
    3014                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"> <SPAN LANG="fr-FR">except 
    3015                         Exception, e:</SPAN></FONT></P> 
    3016                         <P LANG="fr-FR" STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace">     
    3017                            raise AAUserRolesError(\</FONT></P> 
    3018                         <P STYLE="margin-bottom: 0cm"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="fr-FR">       
    3019                            </SPAN>&quot;Error getting roles for user \&quot;%s\&quot; is 
    3020                         registered: %s&quot; % (dn, e))</FONT></P> 
    3021                         <P><BR> 
     2804                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>&quot;&quot;&quot;NDG 
     2805                        Attribute Authority User Roles class - acts as an interface 
     2806                        between</FONT></FONT></P> 
     2807                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>the 
     2808                        data centre's user roles configuration and the Attribute Authority</FONT></FONT></P> 
     2809                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2810                        </P> 
     2811                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>BODC 
     2812                        User Roles Interface to Oracle database</FONT></FONT></P> 
     2813                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2814                        </P> 
     2815                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>@author: 
     2816                        P J Kershaw 09/08/07</FONT></FONT></P> 
     2817                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>@copyright: 
     2818                        (C) 2007 STFC &amp; NERC</FONT></FONT></P> 
     2819                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>@licence: 
     2820                        This software may be distributed under the terms of the Q Public</FONT></FONT></P> 
     2821                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>License, 
     2822                        version 1.0 or later.</FONT></FONT></P> 
     2823                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>&quot;&quot;&quot;</FONT></FONT></P> 
     2824                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#000000">__revision__ 
     2825                        = </FONT><I><FONT COLOR="#00aa00">'$Id:$'</FONT></I></FONT></FONT></P> 
     2826                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2827                        </P> 
     2828                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2829                        </P> 
     2830                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">from</FONT><FONT COLOR="#000000"> 
     2831                        ConfigParser </FONT><FONT COLOR="#0000ff">import</FONT><FONT COLOR="#000000"> 
     2832                        SafeConfigParser</FONT></FONT></FONT></P> 
     2833                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2834                        </P> 
     2835                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2># 
     2836                        Use a conditional import here because if the TestUserRoles class 
     2837                        is used,</FONT></FONT></P> 
     2838                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2># 
     2839                        cx_Oracle is not required</FONT></FONT></P> 
     2840                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">try</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     2841                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2842                           </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">import</FONT><FONT COLOR="#000000"> 
     2843                        cx_Oracle</FONT></FONT></FONT></P> 
     2844                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">except</FONT><FONT COLOR="#000000"> 
     2845                        ImportError, e:</FONT></FONT></FONT></P> 
     2846                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2847                           </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">from</FONT><FONT COLOR="#000000"> 
     2848                        warnings </FONT><FONT COLOR="#0000ff">import</FONT><FONT COLOR="#000000"> 
     2849                        warn</FONT></FONT></FONT></P> 
     2850                        <P STYLE="margin-bottom: 0cm; background: transparent">    
     2851                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>warn(str(e), 
     2852                        RuntimeWarning)</FONT></FONT></P> 
     2853                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2854                           </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">pass</FONT></FONT></FONT></P> 
     2855                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2856                        </P> 
     2857                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">from</FONT><FONT COLOR="#000000"> 
     2858                        ndg.security.server.AttAuthority </FONT><FONT COLOR="#0000ff">import</FONT><FONT COLOR="#000000"> 
     2859                        AAUserRoles, AAUserRolesError</FONT></FONT></FONT></P> 
     2860                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">from</FONT><FONT COLOR="#000000"> 
     2861                        ndg.security.common.X509 </FONT><FONT COLOR="#0000ff">import</FONT><FONT COLOR="#000000"> 
     2862                        X500DN</FONT></FONT></FONT></P> 
     2863                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2864                        </P> 
     2865                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2866                        </P> 
     2867                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">class</FONT><FONT COLOR="#000000"> 
     2868                        <B>TestUserRoles</B>(AAUserRoles):</FONT></FONT></FONT></P> 
     2869                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2870                           </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><I><FONT COLOR="#00aa00">&quot;&quot;&quot;Test 
     2871                        User Roles class dynamic import for Attribute Authority</FONT></I></FONT></FONT></P> 
     2872                        <P STYLE="margin-bottom: 0cm; background: transparent">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>NOT 
     2873                        for use on production system&quot;&quot;&quot;</FONT></FONT></P> 
     2874                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2875                        </P> 
     2876                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2877                           </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">def</FONT><FONT COLOR="#000000"> 
     2878                        <B>__init__</B>(<I>self</I>, propertiesFilePath=</FONT><FONT COLOR="#0000ff">None</FONT><FONT COLOR="#000000">):</FONT></FONT></FONT></P> 
     2879                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2880                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">pass</FONT></FONT></FONT></P> 
     2881                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2882                        </P> 
     2883                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2884                           </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">def</FONT><FONT COLOR="#000000"> 
     2885                        <B>getRoles</B>(<I>self</I>, dn):</FONT></FONT></FONT></P> 
     2886                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2887                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><I><FONT COLOR="#00aa00">&quot;&quot;&quot;Test 
     2888                        getRoles returns role attributes regardless of user Id!&quot;&quot;&quot;</FONT></I></FONT></FONT></P> 
     2889                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2890                        </P> 
     2891                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2892                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     2893                        Parse username from DN string</FONT></FONT></FONT></P> 
     2894                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2895                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     2896                        TODO: this may be e-mail address for BODC?</FONT></FONT></FONT></P> 
     2897                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2898                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">try</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     2899                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2900                                   <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>cn 
     2901                        = X500DN(dn)[</FONT><I><FONT COLOR="#00aa00">'CN'</FONT></I><FONT COLOR="#000000">]</FONT></FONT></FONT></P> 
     2902                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2903                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">if</FONT><FONT COLOR="#000000"> 
     2904                        len(cn) == </FONT><FONT COLOR="#800000">2</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     2905                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2906                                       </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     2907                        Proxy cert has two common names set - assume extra common </FONT></FONT></FONT> 
     2908                        </P> 
     2909                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2910                                       </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     2911                        name will be 'proxy' or a number</FONT></FONT></FONT></P> 
     2912                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2913                                       <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>username=[n 
     2914                        </FONT><FONT COLOR="#0000ff">for</FONT><FONT COLOR="#000000"> n </FONT><FONT COLOR="#0000ff">in</FONT><FONT COLOR="#000000"> 
     2915                        cn </FONT><FONT COLOR="#0000ff">if</FONT><FONT COLOR="#000000"> 
     2916                        n!=</FONT><I><FONT COLOR="#00aa00">&quot;proxy&quot;</FONT></I><FONT COLOR="#000000"> 
     2917                        </FONT><FONT COLOR="#0000ff">and</FONT><FONT COLOR="#000000"> </FONT><FONT COLOR="#0000ff">not</FONT><FONT COLOR="#000000"> 
     2918                        n.isdigit()][</FONT><FONT COLOR="#800000">0</FONT><FONT COLOR="#000000">]</FONT></FONT></FONT></P> 
     2919                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2920                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">else</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     2921                        <P STYLE="margin-bottom: 0cm; background: transparent">            
     2922                            <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>username 
     2923                        = cn</FONT></FONT></P> 
     2924                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2925                        </P> 
     2926                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2927                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">except</FONT><FONT COLOR="#000000"> 
     2928                        Exception, e:</FONT></FONT></FONT></P> 
     2929                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2930                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">raise</FONT><FONT COLOR="#000000"> 
     2931                        AAUserRolesError, </FONT><I><FONT COLOR="#00aa00">&quot;Parsing 
     2932                        username from DN %s: %s&quot;</FONT></I><FONT COLOR="#000000"> % 
     2933                        (dn,e)</FONT></FONT></FONT></P> 
     2934                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2935                        </P> 
     2936                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2937                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">return</FONT><FONT COLOR="#000000"> 
     2938                        [</FONT><I><FONT COLOR="#00aa00">'Public'</FONT></I><FONT COLOR="#000000">, 
     2939                        </FONT><I><FONT COLOR="#00aa00">'Researcher'</FONT></I><FONT COLOR="#000000">]</FONT></FONT></FONT></P> 
     2940                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2941                        </P> 
     2942                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2943                        </P> 
     2944                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">class</FONT><FONT COLOR="#000000"> 
     2945                        <B>UserRoles</B>(AAUserRoles):</FONT></FONT></FONT></P> 
     2946                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2947                           </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><I><FONT COLOR="#00aa00">&quot;&quot;&quot;User 
     2948                        Roles class dynamically imported for Attribute Authority</FONT></I></FONT></FONT></P> 
     2949                        <P STYLE="margin-bottom: 0cm; background: transparent">    <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>- 
     2950                        see the Attribute Authority Properties file to make the correct</FONT></FONT></P> 
     2951                        <P STYLE="margin-bottom: 0cm; background: transparent">    
     2952                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>settings&quot;&quot;&quot;</FONT></FONT></P> 
     2953                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2954                        </P> 
     2955                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2956                           </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">def</FONT><FONT COLOR="#000000"> 
     2957                        <B>__init__</B>(<I>self</I>, propertiesFilePath=</FONT><FONT COLOR="#0000ff">None</FONT><FONT COLOR="#000000">):</FONT></FONT></FONT></P> 
     2958                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2959                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">if</FONT><FONT COLOR="#000000"> 
     2960                        </FONT><FONT COLOR="#0000ff">not</FONT><FONT COLOR="#000000"> 
     2961                        propertiesFilePath:</FONT></FONT></FONT></P> 
     2962                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2963                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">raise</FONT><FONT COLOR="#000000"> 
     2964                        AAUserRolesError, </FONT><I><FONT COLOR="#00aa00">&quot;No user 
     2965                        roles property file set&quot;</FONT></I></FONT></FONT></P> 
     2966                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2967                        </P> 
     2968                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#000000">      
     2969                           </FONT><FONT COLOR="#c0c0c0"># Retrieve database connection and 
     2970                        query settings from config file</FONT></FONT></FONT></P> 
     2971                        <P STYLE="margin-bottom: 0cm; background: transparent">        
     2972                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>configParser 
     2973                        = SafeConfigParser()</FONT></FONT></P> 
     2974                        <P STYLE="margin-bottom: 0cm; background: transparent">        
     2975                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>configParser.read(propertiesFilePath)</FONT></FONT></P> 
     2976                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2977                        </P> 
     2978                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2979                               <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><I>self</I>.__conxnStr 
     2980                        = configParser.get(</FONT><I><FONT COLOR="#00aa00">'Oracle'</FONT></I><FONT COLOR="#000000">, 
     2981                        </FONT><I><FONT COLOR="#00aa00">'connection'</FONT></I><FONT COLOR="#000000">)</FONT></FONT></FONT></P> 
     2982                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     2983                        </P> 
     2984                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2985                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     2986                        The Oracle connection could be made HERE to make getRoles method</FONT></FONT></FONT></P> 
     2987                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2988                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     2989                        more efficient but then AA would hog an Oracle connection as long 
     2990                        as</FONT></FONT></FONT></P> 
     2991                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2992                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     2993                        it is running.  There may be away to avoid this using a connection</FONT></FONT></FONT></P> 
     2994                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#000000">      
     2995                           </FONT><FONT COLOR="#c0c0c0"># pool</FONT></FONT></FONT></P> 
     2996                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     2997                               <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><I>self</I>.__query 
     2998                        =  configParser.get(</FONT><I><FONT COLOR="#00aa00">'Oracle'</FONT></I><FONT COLOR="#000000">, 
     2999                        </FONT><I><FONT COLOR="#00aa00">'query'</FONT></I><FONT COLOR="#000000">)</FONT></FONT></FONT></P> 
     3000                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     3001                        </P> 
     3002                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     3003                        </P> 
     3004                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3005                           </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">def</FONT><FONT COLOR="#000000"> 
     3006                        <B>getRoles</B>(<I>self</I>, dn):</FONT></FONT></FONT></P> 
     3007                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3008                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><I><FONT COLOR="#00aa00">'''Roles 
     3009                        interface for BODC database'''</FONT></I></FONT></FONT></P> 
     3010                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     3011                        </P> 
     3012                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3013                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3014                        Parse username from DN string</FONT></FONT></FONT></P> 
     3015                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3016                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3017                        TODO: this may be e-mail address for BODC?</FONT></FONT></FONT></P> 
     3018                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3019                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">try</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     3020                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3021                                   <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>cn 
     3022                        = X500DN(dn)[</FONT><I><FONT COLOR="#00aa00">'CN'</FONT></I><FONT COLOR="#000000">]</FONT></FONT></FONT></P> 
     3023                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3024                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">if</FONT><FONT COLOR="#000000"> 
     3025                        len(cn) == </FONT><FONT COLOR="#800000">2</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     3026                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3027                                       </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3028                        Proxy cert has two common names set - assume extra common </FONT></FONT></FONT> 
     3029                        </P> 
     3030                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3031                                       </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3032                        name will be 'prixy' or a number</FONT></FONT></FONT></P> 
     3033                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3034                                       <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>username=[n 
     3035                        </FONT><FONT COLOR="#0000ff">for</FONT><FONT COLOR="#000000"> n </FONT><FONT COLOR="#0000ff">in</FONT><FONT COLOR="#000000"> 
     3036                        cn </FONT><FONT COLOR="#0000ff">if</FONT><FONT COLOR="#000000"> 
     3037                        n!=</FONT><I><FONT COLOR="#00aa00">&quot;proxy&quot;</FONT></I><FONT COLOR="#000000"> 
     3038                        </FONT><FONT COLOR="#0000ff">and</FONT><FONT COLOR="#000000"> </FONT><FONT COLOR="#0000ff">not</FONT><FONT COLOR="#000000"> 
     3039                        n.isdigit()][</FONT><FONT COLOR="#800000">0</FONT><FONT COLOR="#000000">]</FONT></FONT></FONT></P> 
     3040                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3041                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">else</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     3042                        <P STYLE="margin-bottom: 0cm; background: transparent">            
     3043                            <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>username 
     3044                        = cn</FONT></FONT></P> 
     3045                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     3046                        </P> 
     3047                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3048                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">except</FONT><FONT COLOR="#000000"> 
     3049                        Exception, e:</FONT></FONT></FONT></P> 
     3050                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3051                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">raise</FONT><FONT COLOR="#000000"> 
     3052                        AAUserRolesError, </FONT><I><FONT COLOR="#00aa00">&quot;Parsing 
     3053                        username from DN %s: %s&quot;</FONT></I><FONT COLOR="#000000"> % 
     3054                        (dn,e)</FONT></FONT></FONT></P> 
     3055                        <P STYLE="margin-bottom: 0cm; background: transparent"><BR> 
     3056                        </P> 
     3057                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3058                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3059                        It may be possible to use a connection pool and move this</FONT></FONT></FONT></P> 
     3060                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3061                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3062                        connect call to __init__ see:</FONT></FONT></FONT></P> 
     3063                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3064                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0">#</FONT></FONT></FONT></P> 
     3065                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3066                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3067                        http://www.python.net/crew/atuining/cx_Oracle/html/module.html</FONT></FONT></FONT></P> 
     3068                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3069                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0">#</FONT></FONT></FONT></P> 
     3070                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3071                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">try</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     3072                        <P STYLE="margin-bottom: 0cm; background: transparent">            
     3073                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>con 
     3074                        = cx_Oracle.connect(<I>self</I>.__conxnStr)</FONT></FONT></P> 
     3075                        <P STYLE="margin-bottom: 0cm; background: transparent">            
     3076                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>cursor 
     3077                        = con.cursor()</FONT></FONT></P> 
     3078                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3079                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">except</FONT><FONT COLOR="#000000"> 
     3080                        Exception, e:</FONT></FONT></FONT></P> 
     3081                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3082                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">raise</FONT><FONT COLOR="#000000"> 
     3083                        AAUserRolesError, </FONT><I><FONT COLOR="#00aa00">&quot;Error 
     3084                        connecting to Oracle database: &quot;</FONT></I><FONT COLOR="#000000"> 
     3085                        +\</FONT></FONT></FONT></P> 
     3086                        <P STYLE="margin-bottom: 0cm; background: transparent">        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>                    
     3087                                       str(e)</FONT></FONT></P> 
     3088                        <P STYLE="margin-bottom: 0cm; background: transparent">         
     3089                        </P> 
     3090                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3091                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3092                        Substitute the username into the query - the query is expected to </FONT></FONT></FONT> 
     3093                        </P> 
     3094                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3095                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3096                        have a &quot;%s&quot; to allow this</FONT></FONT></FONT></P> 
     3097                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3098                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0">#</FONT></FONT></FONT></P> 
     3099                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3100                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3101                        Convert username to string type explicitly as the execute method </FONT></FONT></FONT> 
     3102                        </P> 
     3103                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3104                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3105                        doesn't like unicode type</FONT></FONT></FONT></P> 
     3106                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3107                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">try</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     3108                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3109                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">try</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     3110                        <P STYLE="margin-bottom: 0cm; background: transparent">            
     3111                            <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>query 
     3112                        = <I>self</I>.__query % str(username)</FONT></FONT></P> 
     3113                        <P STYLE="margin-bottom: 0cm; background: transparent">            
     3114                            <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>cursor.execute(query)</FONT></FONT></P> 
     3115                        <P STYLE="margin-bottom: 0cm; background: transparent">            
     3116                            <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>result 
     3117                        = cursor.fetchall()</FONT></FONT></P> 
     3118                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3119                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">except</FONT><FONT COLOR="#000000"> 
     3120                        Exception, e:</FONT></FONT></FONT></P> 
     3121                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3122                                       </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">raise</FONT><FONT COLOR="#000000"> 
     3123                        AAUserRolesError, </FONT><I><FONT COLOR="#00aa00">&quot;Error 
     3124                        executing query: &quot;</FONT></I><FONT COLOR="#000000"> + str(e)</FONT></FONT></FONT></P> 
     3125                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3126                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">finally</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     3127                        <P STYLE="margin-bottom: 0cm; background: transparent">        
     3128                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>  cursor.close()</FONT></FONT></P> 
     3129                        <P STYLE="margin-bottom: 0cm; background: transparent">        
     3130                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>  con.close()</FONT></FONT></P> 
     3131                        <P STYLE="margin-bottom: 0cm; background: transparent">         
     3132                        </P> 
     3133                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3134                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3135                        Result is a list of tuples.  The first element of each tuple is a</FONT></FONT></FONT></P> 
     3136                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3137                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3138                        role name -&gt; Convert into a simple list of role names</FONT></FONT></FONT></P> 
     3139                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3140                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">try</FONT><FONT COLOR="#000000">:</FONT></FONT></FONT></P> 
     3141                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3142                                   <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>roleNames 
     3143                        = [role[</FONT><FONT COLOR="#800000">0</FONT><FONT COLOR="#000000">] 
     3144                        </FONT><FONT COLOR="#0000ff">for</FONT><FONT COLOR="#000000"> role 
     3145                        </FONT><FONT COLOR="#0000ff">in</FONT><FONT COLOR="#000000"> 
     3146                        result]</FONT></FONT></FONT></P> 
     3147                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3148                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#0000ff">except</FONT><FONT COLOR="#000000"> 
     3149                        TypeError:</FONT></FONT></FONT></P> 
     3150                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3151                                   </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT COLOR="#c0c0c0"># 
     3152                        Catch non-iterable error with result var</FONT></FONT></FONT></P> 
     3153                        <P STYLE="margin-bottom: 0cm; background: transparent">            
     3154                        <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2>roleNames 
     3155                        = []</FONT></FONT></P> 
     3156                        <P STYLE="margin-bottom: 0cm; background: transparent">         
     3157                        </P> 
     3158                        <P STYLE="margin-bottom: 0cm; background: transparent"><FONT COLOR="#000000"> 
     3159                               </FONT><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><FONT SIZE=2><FONT FACE="Monospace"><FONT COLOR="#0000ff">return</FONT><FONT COLOR="#000000"> 
     3160                        roleNames</FONT></FONT></FONT></FONT></P> 
     3161                        <P STYLE="background: transparent"><BR> 
    30223162                        </P> 
    30233163                </TD> 
     
    30273167</P> 
    30283168<P CLASS="western" ALIGN=JUSTIFY>Note:</P> 
    3029 <P CLASS="western" ALIGN=JUSTIFY><BR><BR> 
    3030 </P> 
    30313169<UL> 
    3032         <LI><P CLASS="western" ALIGN=JUSTIFY>It use the Python library 
    3033         <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">DCOracle2</SPAN></FONT> 
     3170        <LI><P CLASS="western" ALIGN=JUSTIFY>It uses the Python library 
     3171        cx_<FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">Oracle</SPAN></FONT> 
    30343172        to connect to an Oracle database.</P> 
    30353173        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">ElementTree</SPAN></FONT> 
    30363174        Python library is used to parse an XML properties file.</P> 
     3175        <LI><P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">ndg.security.common.X509</SPAN></FONT> 
     3176        security python library is used to parse the user Distinguished Name 
     3177        passed into <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">getRoles</SPAN></FONT> 
     3178        and <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">userIsRegistered</SPAN></FONT> 
     3179        methods.</P> 
     3180        <LI><P CLASS="western" ALIGN=JUSTIFY>Database connection and query 
     3181        settings are taken from a config file:</P> 
    30373182</UL> 
    3038 <P CLASS="western" ALIGN=JUSTIFY><FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">NDG.X509</SPAN></FONT> 
    3039 security python library is used to parse the user Distinguished Name 
    3040 passed into <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">getRoles</SPAN></FONT> 
    3041 and <FONT FACE="Lucida Console, DejaVu Sans Mono, monospace"><SPAN LANG="en-GB">userIsRegistered</SPAN></FONT> 
    3042 methods.</P> 
     3183<TABLE WIDTH=626 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=7 CELLSPACING=0 STYLE="page-break-before: auto"> 
     3184        <COL WIDTH=610> 
     3185        <TR> 
     3186                <TD WIDTH=610 VALIGN=TOP BGCOLOR="#e0e0e0"> 
     3187                        <P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#3f7f5f"><FONT FACE="Monospace"><FONT SIZE=2>#</FONT></FONT></FONT></P> 
     3188                        <P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#3f7f5f"><FONT FACE="Monospace"><FONT SIZE=2># 
     3189                        BODC Attribute Authority - Oracle interface settings</FONT></FONT></FONT></P> 
     3190                        <P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#3f7f5f"><FONT FACE="Monospace"><FONT SIZE=2>#</FONT></FONT></FONT></P> 
     3191                        <P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#3f7f5f"><FONT FACE="Monospace"><FONT SIZE=2># 
     3192                        P J Kershaw 09/08/07</FONT></FONT></FONT></P> 
     3193                        <P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#3f7f5f"><FONT FACE="Monospace"><FONT SIZE=2>#</FONT></FONT></FONT></P> 
     3194                        <P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2>[Oracle]</FONT></FONT></P> 
     3195                        <P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#3f7f5f"><FONT FACE="Monospace"><FONT SIZE=2># 
     3196                        Database connection string</FONT></FONT></FONT></P> 
     3197                        <P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2><FONT COLOR="#000000">connection 
     3198                        = </FONT><FONT COLOR="#2a00ff">user/password@dsn</FONT></FONT></FONT></P> 
     3199                        <P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#3f7f5f"><FONT FACE="Monospace"><FONT SIZE=2># 
     3200                        Query string &quot;%%s&quot; will be substituted by the username 
     3201                        specified by the code</FONT></FONT></FONT></P> 
     3202                        <P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0cm; background: transparent"> 
     3203                        <FONT FACE="Monospace"><FONT SIZE=2><FONT COLOR="#000000">query = 
     3204                        </FONT><FONT COLOR="#2a00ff">select</FONT><FONT COLOR="#000000"> 
     3205                        </FONT><FONT COLOR="#2a00ff">something</FONT><FONT COLOR="#000000"> 
     3206                        </FONT><FONT COLOR="#2a00ff">from</FONT><FONT COLOR="#000000"> 
     3207                        </FONT><FONT COLOR="#2a00ff">atable</FONT><FONT COLOR="#000000"> 
     3208                        </FONT><FONT COLOR="#2a00ff">where</FONT><FONT COLOR="#000000"> 
     3209                        </FONT><FONT COLOR="#2a00ff">username</FONT><FONT COLOR="#000000"> 
     3210                        </FONT><FONT COLOR="#2a00ff">=</FONT><FONT COLOR="#000000"> </FONT><FONT COLOR="#2a00ff">'%%s'</FONT></FONT></FONT></P> 
     3211                        <P CLASS="western" ALIGN=LEFT STYLE="background: transparent"><BR> 
     3212                        </P> 
     3213                </TD> 
     3214        </TR> 
     3215</TABLE> 
     3216<P CLASS="western" ALIGN=LEFT><BR><BR> 
     3217</P> 
    30433218<P CLASS="western" ALIGN=JUSTIFY><BR><BR> 
    30443219</P> 
  • TI12-security/trunk/python/ndg.security.client/setup.py

    r2937 r2942  
    2727_entryPoints = \ 
    2828{ 
    29     'console_scripts': ['ndgSessionClient = ndg.security.client.ndgSessionClient:main'] 
     29    'console_scripts': [\ 
     30        'ndgSessionClient = ndg.security.client.ndgSessionClient:main'] 
    3031} 
    3132 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/conf/attAuthorityProperties.xml

    r2900 r2942  
    3636    <!-- Location of role mapping file --> 
    3737    <mapConfigFile>$NDGSEC_DIR/conf/mapConfig.xml</mapConfigFile> 
    38     <!-- All Attribute Certificates are recorded in this dir before dispatch 
    39     to SOAP requestor 
    40     --> 
     38    <!-- All Attribute Certificates issued are recorded in this dir --> 
    4139    <attCertDir>$NDGSEC_DIR/conf/attCertLog</attCertDir> 
    4240    <!--  
    43     File prefix and suffix for files stored in attCertDir  
     41    Files in attCertDir are stored using a rotating file handler 
     42    attCertFileLogCnt sets the max number of files created before the first is 
     43    overwritten 
    4444    --> 
    4545    <attCertFileName>ac.xml</attCertFileName> 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/conf/sessionMgrProperties.xml

    r2939 r2942  
    11<?xml version="1.0" encoding="utf-8"?> 
    22<sessMgrProp> 
    3     <portNum></portNum> 
     3    <portNum></portNum> <!-- the port number the service is to run on --> 
    44    <useSSL>Yes</useSSL> <!-- leave blank to use http --> 
    55    <sslCertFile>$NDGSEC_DIR/conf/certs/hostcert.pem</sslCertFile> 
     
    1818    include the cert with the signature in the inbound SOAP message 
    1919    --> 
    20     <clntCertFile></clntCertFile>     
     20    <clntCertFile></clntCertFile>  
     21    <!-- 
     22    Following two settings may be left blank 
     23    -->    
    2124    <sessMgrEncrKey></sessMgrEncrKey> 
    2225    <sessMgrURI></sessMgrURI> 
     26    <!--  
     27    Domain defaults to the server host - any more generic setting could be a  
     28    a security risk 
     29    --> 
    2330    <cookieDomain></cookieDomain> 
    2431        <myProxyProp> 
     
    6168                <!--  
    6269                        Life time of a proxy certificate when issued from the Proxy Server  
    63                         with getDelegation() method 
    64                         --> 
     70                        with ndg.security.server.MyProxy.getDelegation() method 
     71                --> 
    6572                <proxyCertLifetime>8</proxyCertLifetime> <!-- in hours --> 
    6673                <caCertFile>$NDGSEC_DIR/conf/certs/cacert.pem</caCertFile> 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/initCredReposDb.py

    r2909 r2942  
    2626 
    2727 
    28 if __name__ == "__main__": 
     28def main(): 
    2929    parser = optparse.OptionParser() 
    3030    parser.add_option("-u", 
     
    7777    except Exception, e: 
    7878        sys.stderr.write("Error creating tables: %s\n" % str(e)) 
     79 
     80if __name__ == "__main__": 
     81    main() 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/share/Makefile

    r2730 r2942  
    1515SCRIPT_FILES=ndg-sm ndg-ca ndg-gk ndg-log 
    1616NAME_SUB=Attribute Authority 
    17 CODE_SUB=AttAuthority 
     17CODE_SUB=attAuthority 
    1818ENV_SUB=AA 
    1919 
     
    2121        @echo -n "Making script files ${SCRIPT_FILES} from ${TEMPL_FILE} ... " 
    2222        @NAME_REPL=( "Session Manager" "Certificate Authority" "Gatekeeper" "Log" ); \ 
    23         CODE_REPL=( SessionMgr CertificateAuthority Gatekeeper Log ); \ 
     23        CODE_REPL=( sessionMgr ca gatekeeper log ); \ 
    2424        ENV_REPL=( SM CA GK LOG ); \ 
    2525        j=0; \ 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/share/ndg-aa

    r2730 r2942  
    2525gid="globus" 
    2626 
    27 # Set path to Twisted 'tac' file - use prefixDir + srvSubDir combination or 
    28 # set tacFilePath directly 
    29 prefixDir=$(dirname $(dirname $(type -p python))) 
    30 srvSubDir=lib/site-packages/ndg/security/server/AttAuthority 
    31 tacFilePath=${prefixDir}/${srvSubDir}/server-config.tac 
     27# Suggested location for NDG Security settings 
     28export NDGSEC_DIR=/etc/ndg/security 
     29 
     30# Set path to Twisted 'tac' file.  It is recommended that the .tac file is  
     31# installed from the egg in /.../lib/pythonX.Y/site-packages into  
     32# $NDGSEC_DIR/conf for ease of reference here 
     33tacFilePath=${NDGSEC_DIR}/conf/attAuthority.tac 
    3234 
    3335# Set a specific location for the properties file if required 
     36# otherwise $NDGSEC_DIR/conf/attAuthorityProperties.xml is assumed 
    3437#export NDGSEC_AA_PROPFILEPATH= 
    3538 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/share/ndg-ca

    r2730 r2942  
    2525gid="globus" 
    2626 
    27 # Set path to Twisted 'tac' file - use prefixDir + srvSubDir combination or 
    28 # set tacFilePath directly 
    29 prefixDir=$(dirname $(dirname $(type -p python))) 
    30 srvSubDir=lib/site-packages/ndg/security/server/CertificateAuthority 
    31 tacFilePath=${prefixDir}/${srvSubDir}/server-config.tac 
     27# Suggested location for NDG Security settings 
     28export NDGSEC_DIR=/etc/ndg/security 
     29 
     30# Set path to Twisted 'tac' file.  It is recommended that the .tac file is  
     31# installed from the egg in /.../lib/pythonX.Y/site-packages into  
     32# $NDGSEC_DIR/conf for ease of reference here 
     33tacFilePath=${NDGSEC_DIR}/conf/ca.tac 
    3234 
    3335# Set a specific location for the properties file if required 
     36# otherwise $NDGSEC_DIR/conf/caProperties.xml is assumed 
    3437#export NDGSEC_CA_PROPFILEPATH= 
    3538 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/share/ndg-gk

    r2730 r2942  
    2525gid="globus" 
    2626 
    27 # Set path to Twisted 'tac' file - use prefixDir + srvSubDir combination or 
    28 # set tacFilePath directly 
    29 prefixDir=$(dirname $(dirname $(type -p python))) 
    30 srvSubDir=lib/site-packages/ndg/security/server/Gatekeeper 
    31 tacFilePath=${prefixDir}/${srvSubDir}/server-config.tac 
     27# Suggested location for NDG Security settings 
     28export NDGSEC_DIR=/etc/ndg/security 
     29 
     30# Set path to Twisted 'tac' file.  It is recommended that the .tac file is  
     31# installed from the egg in /.../lib/pythonX.Y/site-packages into  
     32# $NDGSEC_DIR/conf for ease of reference here 
     33tacFilePath=${NDGSEC_DIR}/conf/gatekeeper.tac 
    3234 
    3335# Set a specific location for the properties file if required 
     36# otherwise $NDGSEC_DIR/conf/gatekeeperProperties.xml is assumed 
    3437#export NDGSEC_GK_PROPFILEPATH= 
    3538 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/share/ndg-log

    r2730 r2942  
    2525gid="globus" 
    2626 
    27 # Set path to Twisted 'tac' file - use prefixDir + srvSubDir combination or 
    28 # set tacFilePath directly 
    29 prefixDir=$(dirname $(dirname $(type -p python))) 
    30 srvSubDir=lib/site-packages/ndg/security/server/Log 
    31 tacFilePath=${prefixDir}/${srvSubDir}/server-config.tac 
     27# Suggested location for NDG Security settings 
     28export NDGSEC_DIR=/etc/ndg/security 
     29 
     30# Set path to Twisted 'tac' file.  It is recommended that the .tac file is  
     31# installed from the egg in /.../lib/pythonX.Y/site-packages into  
     32# $NDGSEC_DIR/conf for ease of reference here 
     33tacFilePath=${NDGSEC_DIR}/conf/log.tac 
    3234 
    3335# Set a specific location for the properties file if required 
     36# otherwise $NDGSEC_DIR/conf/logProperties.xml is assumed 
    3437#export NDGSEC_LOG_PROPFILEPATH= 
    3538 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/share/ndg-sm

    r2730 r2942  
    2525gid="globus" 
    2626 
    27 # Set path to Twisted 'tac' file - use prefixDir + srvSubDir combination or 
    28 # set tacFilePath directly 
    29 prefixDir=$(dirname $(dirname $(type -p python))) 
    30 srvSubDir=lib/site-packages/ndg/security/server/SessionMgr 
    31 tacFilePath=${prefixDir}/${srvSubDir}/server-config.tac 
     27# Suggested location for NDG Security settings 
     28export NDGSEC_DIR=/etc/ndg/security 
     29 
     30# Set path to Twisted 'tac' file.  It is recommended that the .tac file is  
     31# installed from the egg in /.../lib/pythonX.Y/site-packages into  
     32# $NDGSEC_DIR/conf for ease of reference here 
     33tacFilePath=${NDGSEC_DIR}/conf/sessionMgr.tac 
    3234 
    3335# Set a specific location for the properties file if required 
     36# otherwise $NDGSEC_DIR/conf/sessionMgrProperties.xml is assumed 
    3437#export NDGSEC_SM_PROPFILEPATH= 
    3538 
  • TI12-security/trunk/python/ndg.security.server/setup.py

    r2937 r2942  
    3434 
    3535# Make a script interface to MyProxy client 
    36 _entryPoints = {'console_scripts': \ 
    37                 ['myproxy-client = ndg.security.server.MyProxy:main']} 
     36_entryPoints = {'console_scripts': [\ 
     37    'myproxy-client = ndg.security.server.MyProxy:main', 
     38    'init-credrepos-db = ndg.security.server.initCredReposDb:main'] 
     39} 
    3840     
    3941setup( 
Note: See TracChangeset for help on using the changeset viewer.