1 #!/usr/bin/env python 2 # -*- coding: iso-8859-1 -*- 3 4 "An OpenID login example with some local user pages." 5 6 from WebStack.Resources.OpenIDLogin import OpenIDLoginResource, Authenticator 7 from WebStack.Resources.ResourceMap import MapResource 8 from WebStack.Resources.Static import StringResource 9 from WebStack.Generic import ContentType 10 11 def get_site_map(app_url, deployment_url): 12 13 """ 14 Return a resource for the site having the given 'app_url' and 15 'deployment_url'. The 'app_url' should be the "bare" reference using a 16 protocol, host and port, not including any path information. 17 """ 18 19 login = OpenIDLoginResource( 20 app_url=app_url, 21 authenticator=Authenticator( 22 credentials=( 23 # Local identifier, username, password 24 (( "badger", "badger"), "abc"), 25 (( "vole", "vole"), "xyz"), 26 ((u"???", u"???"), u"???"), 27 (( "badger2", "badger"), "abc"), 28 (( "vole2", "vole"), "xyz"), 29 ((u"???2", u"???"), u"???"), 30 ) 31 ) 32 ) 33 34 return MapResource({ 35 "" : login, 36 "login" : login, 37 38 # Some local OpenID pages. 39 40 "badger" : 41 StringResource(""" 42 <html> 43 <head> 44 <link rel="openid2.provider openid.server" href="%s/login" /> 45 <link rel="openid2.local_id openid.delegate" href="badger" /> 46 <title>Badger's Home Page</title> 47 </head> 48 <body> 49 <p>Home page for the OpenID authenticated user, <code>badger</code>.</p> 50 </body> 51 </html> 52 """ % deployment_url, ContentType("text/html")), 53 u"???" : 54 StringResource(u""" 55 <html> 56 <head> 57 <link rel="openid2.provider openid.server" href="%s/login" /> 58 <link rel="openid2.local_id openid.delegate" href="???" /> 59 <title>Home Page for ???</title> 60 </head> 61 <body> 62 <p>Home page for the OpenID authenticated user, <code>???</code>.</p> 63 </body> 64 </html> 65 """ % deployment_url, ContentType("text/html", "iso-8859-1")), 66 "vole" : 67 StringResource(""" 68 <html> 69 <head> 70 <link rel="openid2.provider openid.server" href="%s/login" /> 71 <link rel="openid2.local_id openid.delegate" href="vole" /> 72 <title>Vole's Home Page</title> 73 </head> 74 <body> 75 <p>Home page for the OpenID authenticated user, <code>vole</code>.</p> 76 </body> 77 </html> 78 """ % deployment_url, ContentType("text/html")), 79 80 # OpenID 2.0 resources. 81 # See: http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.html#_Ref129424065 82 # ("3.3 Media Types for XRI Resolution") 83 # See: http://openid.net/specs/openid-authentication-2_0.html#discovery 84 # ("7.3. Discovery") 85 86 "badger2" : 87 StringResource(""" 88 <?xml version="1.0"?> 89 <Service xmlns="xri://$xrd*($v*2.0)"> 90 <Type>http://specs.openid.net/auth/2.0/signon</Type> 91 <URI>%s/login</URI> 92 <LocalID>badger2</LocalID> 93 </Service> 94 """ % deployment_url, ContentType("application/xrd+xml")), 95 u"???2" : 96 StringResource(u""" 97 <?xml version="1.0" encoding="iso-8859-1"?> 98 <Service xmlns="xri://$xrd*($v*2.0)"> 99 <Type>http://specs.openid.net/auth/2.0/signon</Type> 100 <URI>%s/login</URI> 101 <LocalID>???2</LocalID> 102 </Service> 103 """ % deployment_url, ContentType("application/xrd+xml", "iso-8859-1")), 104 "vole2" : 105 StringResource(""" 106 <?xml version="1.0"?> 107 <Service xmlns="xri://$xrd*($v*2.0)"> 108 <Type>http://specs.openid.net/auth/2.0/signon</Type> 109 <URI>%s/login</URI> 110 <LocalID>vole2</LocalID> 111 </Service> 112 """ % deployment_url, ContentType("application/xrd+xml")), 113 }) 114 115 # vim: tabstop=4 expandtab shiftwidth=4