Changeset 4905 for TI12-security


Ignore:
Timestamp:
03/02/09 16:40:11 (11 years ago)
Author:
pjkersha
Message:

Initial working version of OpenID Relying Party middleware - this is an RP factored out of the original functionality included in the SSO Pylons project.

Location:
TI12-security/trunk/python/ndg.security.server/ndg/security/server/wsgi/openid/relyingparty
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/wsgi/openid/relyingparty/__init__.py

    r4863 r4905  
    1313import logging 
    1414log = logging.getLogger(__name__) 
     15 
     16import httplib # to get official status code messages 
    1517 
    1618import authkit.authenticate 
     
    4749        @param app_conf: application specific configuration - must follow  
    4850        format of propertyDefaults class variable"""     
     51 
     52             
     53        authKitApp = authkit.authenticate.middleware(app, app_conf) 
     54        app = beaker.middleware.SessionMiddleware(authKitApp) 
    4955                 
    5056        # Check for sign in template settings 
     
    7379                        del conf[k] 
    7480         
    75             app_conf['authkit.openid.template.string']=app.makeTemplate() 
    76              
    77         app = authkit.authenticate.middleware(app, app_conf) 
    78         app = beaker.middleware.SessionMiddleware(app) 
     81            authKitApp.template = app.getTemplateFunc()#app.makeTemplate() 
    7982 
    8083        super(OpenIDRelyingPartyMiddleware, self).__init__(app,  
     
    8487                 
    8588    def __call__(self, environ, start_response): 
    86         return self._app(environ, start_response) 
     89        '''Alter start_response to override the status code and force to 401. 
     90        This will non-browser based client code to bypass the OpenID interface 
     91        ''' 
     92        def setUnauthorizedResponse(status, header, exc_info=None): 
     93            return start_response("%s %s" % (401, httplib.responses[401]),  
     94                                  header, 
     95                                  exc_info) 
     96             
     97        return self._app(environ, setUnauthorizedResponse) 
    8798 
    8899class SigninInterfaceError(Exception): 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/wsgi/openid/relyingparty/signin_interface/buffet/__init__.py

    r4863 r4905  
    3232    propertyDefaults = { 
    3333        'templateType': 'kid',  
    34         'templateRootDir': None, 
     34        'templatePackage': None, 
    3535        'staticContentRootDir': './', 
    3636        'baseURL': 'http://localhost', 
     37        'logoutURI': '', 
    3738        'leftLogo': None, 
    3839        'leftAlt': None, 
     
    5859         
    5960        self._buffet = OpenIDRelyingPartyRenderingBuffet(self.templateType,  
    60                                             template_root=self.templateRootDir) 
     61                                            template_root=self.templatePackage) 
    6162         
    6263        self.title = "Enter your OpenID to Sign in" 
     
    6465        self.headExtras = '' 
    6566        self.loginStatus = True 
     67        self.loggedIn = False 
     68         
     69        # TODO: handle session object scope 
     70        self.session = {'username': ''} 
    6671         
    6772        staticApp = StaticURLParser(self.staticContentRootDir) 
    68         app = Cascade([staticApp, self._app]) 
     73        self._app = Cascade([staticApp, app]) 
    6974         
    7075    def _render(self, templateName, c=None, **kw): 
     
    9196     
    9297    def __call__(self, environ, start_response): 
    93         static_app = StaticURLParser(document_root=self.documentRootDir) 
    94         app = Cascade([static_app, self._app]) 
    95         return app 
     98        return self._app(environ, start_response) 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/wsgi/openid/relyingparty/signin_interface/buffet/templates/ndgpage.kid

    r4863 r4905  
    77        <title py:content="c.title">title</title> 
    88                ${XML(c.headExtras)} 
    9         <!--! The following includes the javascript, note that the XML 
    10         function is needed to avoid escaping the < character --> 
    11 <!--   
    12         <?python 
    13             # Fudge for WebHelpers migration to 0.6.1 
    14             if hasattr(h, 'javascript_include_tag'): 
    15                 javascript_include_tag = h.javascript_include_tag 
    16             else: 
    17                 javascript_include_tag = h.rails.javascript_include_tag 
    18         ?> 
    19         ${XML(javascript_include_tag(builtins=True))} 
    20         <script type="text/javascript" src="${c.baseURL}/js/toggleDiv.js"/> 
    21 --> 
    22         <link media="all, screen" href="${c.baseURL}/layout/ndg2.css" type="text/css" rel="stylesheet"/> 
    23         <link rel="icon" type="image/ico" href="${c.baseURL}/layout/favicon.jpg" /> 
     9        <link media="all, screen" href="${c.baseURL}/layout/ndg2.css"  
     10            type="text/css" rel="stylesheet"/> 
     11        <link rel="icon" type="image/ico"  
     12            href="${c.baseURL}/layout/favicon.jpg"/> 
    2413    </head> 
    2514 
     
    4130                    ?> 
    4231                    <li class="$status"><span class="pagetab"> 
    43 <!--   
    44                     ${XML(h.link_to_if(linkto,tab[0],tab[1]))} 
    45 --> 
    4632                    </span></li>  
    4733                 </span> 
     
    5945                <td align="left" width="60%"> 
    6046                    <table><tbody> 
    61                     <tr><td><span py:replace="linkimage(c.ndgLink,c.ndgImage,'NDG')"/></td> 
    62                     <td>OpenID Provider Site for <a href="http://ndg.nerc.ac.uk"> NERC DataGrid</a> 
    63                     ${c.disclaimer} </td> 
     47                    <tr> 
     48                        <td><span py:replace="linkimage(c.ndgLink,c.ndgImage,'NDG')"/></td> 
     49                        <td>OpenID Provider Site for <a href="http://ndg.nerc.ac.uk">NERC DataGrid</a> 
     50                    ${c.disclaimer}</td> 
    6451                    </tr> 
    6552                    </tbody></table> 
     
    6855                    <div py:if="c.loginStatus" id="loginStatus"> 
    6956                        <!--! now we choose one of the next two (logged in or not) --> 
    70                         <div py:if="'username' in c.session" id="loggedIn"> 
     57                        <div py:if="c.loggedIn" id="loggedIn"> 
    7158                            <table><tbody><tr><td>  
    72                                 <!-- Create link using embedded python  
    73                                     construct because including a link with '&' 
    74                                     directly causes an error 
    75                                 --> 
    76                                 <?python 
    77                                     logOutLink='%s?submit=true&success_to=%s&fail_to=%s' % \ 
    78                                     (c.urls['url_loginsubmit'],  
    79                                      c.urls['url_login'], 
    80                                      c.urls['url_mainpage']) 
    81                                 ?> 
    8259                                Logged in as ${c.session['username']}.  
    83                                 [<a href="$logOutLink"> 
    84                                     Log out 
    85                                 </a>] 
    86                             </td></tr></tbody></table> 
    87                         </div> 
    88                         <div py:if="'username' not in c.session" id="loggedOut"> 
    89                             <table><tbody><tr><td>  
    90                                 Other services may be available if you <a href="${c.urls['url_login']}">login</a>. 
     60                                [<a href="$c.logOutURI">Log out</a>] 
    9161                            </td></tr></tbody></table> 
    9262                        </div> 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/wsgi/openid/relyingparty/signin_interface/buffet/templates/signin.kid

    r4863 r4905  
    22        <div py:def="openIDSignin()" class="openIDSignin" style="text-indent:5px"> 
    33                <form action="$c.baseURL/verify" method="post"> 
    4                   <table cellspacing="0" border="0" cellpadding="5"> 
    5                     <tr> 
    6                         <td>OpenID:</td>  
    7                         <td> 
    8                                 <input type="text" name="openid" value="" class='openid-identifier'/> 
    9                         </td> 
    10                         <td align="right"> 
    11                                 <input type="submit" name="authform" value="Go"/> 
    12                         </td> 
    13                         <td> 
    14                                 <a href="http://openid.net/what/" target="_blank"><small>What's this?</small></a> 
    15                         </td> 
    16                     </tr> 
     4                        <table cellspacing="0" border="0" cellpadding="5" style="align: left"> 
     5                            <tr align="left"> 
     6                                        <td>OpenID:</td>  
     7                                        <td align="left"> 
     8                                                <input type="text" name="openid" value="" class='openid-identifier'/> 
     9                                        </td> 
     10                                        <td align="right"> 
     11                                                <input type="submit" name="authform" value="Go"/> 
     12                                        </td> 
     13                                        <td> 
     14                                                <a href="http://openid.net/what/" target="_blank"><small>What's this?</small></a> 
     15                                        </td> 
     16                            </tr> 
    1717                  </table> 
    1818                </form> 
     19                <div id="message"> 
     20                        $$message 
     21                </div> 
    1922        </div> 
    20  
     23         
    2124    <head> 
    2225                <style> 
Note: See TracChangeset for help on using the changeset viewer.