Package: pyramid-openid
pyramid_openid provides a view for the Pyramid framework that acts as an OpenID consumer.This code is offered under the BSD-derived Repoze Public License.Much of this code was inspired by (read: 'lifted from') the repoze.who.plugins.openidcode which can be found here:http://quantumcore.org/docs/repoze.who.plugins.openidIn your Pyramid app, add the pyramid_openid.verify_openid view_callable to yourview_configuration, and add the needed settings to your .ini file.Here is a barebones setup:openid.store.type = fileopenid.store.file.path = %(here)s/sstoreopenid.success_callback = myapp.lib:remember_meThis setup requires you have a folder in your app directory called 'sstore',and that you have a callback function in your lib module named "remember_me".Remember_me will receive the current request and the other information returnedfrom the OpenID provider, and should then do whatever is needed to remember the user -pyramid.security.remember, load metadata into the session, etc - that part iscompletely up to the coder.This setup will then assume the defaults for the rest of the keys.Once the configuration is in place, it's time to hook up the view to the application.You can do this however you want to.Example:In your app config setup code, add this line before 'return config.make_wsgi_app()'config.add_route('verify_openid',pattern='/dologin.html',view='pyramid_openid.verify_openid')Now you have a URL to submit your OpenID form to: /dologin.html.Based on the configuration above, it expects to find the user's OpenID URLin request.params['openid'].REQUIRED SETTINGS=================OpenID Data Store-----------------Key:openid.store.typeDescription:This determines the type of store python-openid will useto track nonces and other cross request data. Note thatthis defaults to None, which has python-openid use astateless request type. Stateless mode isn't reliable;something else should be chosen. File and mem arerecommended.The SQL store has yet to be tested or even verifiedworking. It is also not recommended.Default:NoneExamples:To use a file store:(openid.store.file.path must also be specified)openid.store.type = fileTo use a memory store:openid.store.type = memTo use a sql store:(openid.store.sql.connection_string andopenid.store.sql.associations_table must alsobe specified)THIS IS NOT TESTED AND DOES NOT WORKopenid.store.type = sqlOPTIONAL SETTINGS:==================Successful Login Callback-------------------------Key:openid.success_callbackDescription:This is a callable that will be called upon successful verificationby the OpenID provider. The callable will be passed three parameters;the current context, the current request, and a dictionary with thefollowing structure:{'identity_url': The user's unique URL from the provider,'ax':		A dictionary containing all the returnedactive exchange parameters requested,'sreg':		A list containing all the returnedsimple registration parameters requested}This callback is required to have the following format:module.optional_submodules:functionWhat is returned from this callable is return as the response.Default:NoneExample:If the callback is in the lib module of the my app package, andis named openid_callback, then this is the setting to be used:openid.success_callback = myapp.lib:openid_callbackAX--Keys:openid.ax_requiredopenid.ax_optionalDescription:These represent user data requested via OpenID Attribute Exchange.Default:NoneExample:To require that the provider respond with the user's email:openid.ax_required = email=http://schema.openid.net/contact/emailSX--Keys:openid.sreg_requiredopenid.sreg_optionalDescription:These represent user data requested via OpenID Simple Registration.Default:NoneExample:To require that the provider respond with the user's email:openid.sreg_required = emailIncoming OpenID Param Name:---------------------------Key:openid.param_field_nameDescription:When a request is first submitted with the user's OpenID URL,it must be retrieved from request.params with a key.This is the name of that key in request.params.Default:openidExamples:Once submitted, the user's OpenID URL will be found inrequest.params['users_openid_url']:openid.param_field_name = users_openid_urlError Destination-----------------Key:openid.error_destinationDescription:When something in the OpenID verification process fails,the user will be sent to this url. The error messagewill be stored in the request.session.flash queueas specified by openid.error_flash_queueDefault:request.referrerExample:To send the user to a http://www.example.com/sorry.html upon failure:openid.error_destination = http://www.example.com/sorry.htmlError Flash Queue-----------------Key:openid.error_flash_queueDescription:If something goes awry in the OpenID process, the error messagewill be put in the request.session.flash message queue, and thisis the name of that queue.Default:The default flash queue ('')Example:To put the error messages in the 'OpenIDErrors' flash queue:openid.error_flash_queue=OpenIDErrorsRealm Name----------Key:openid.realm_nameDescription:This is the value of the realm parameter passed to the OpenIDprovider. It's here for the sake of completeness, but unlessyou know what you're doing there's no reason to change it.Default:request.host_urlExample:To set the Realm to 'www.example.com':openid.realm_name = http://www.example.comNote:Changing the realm_name will most likely cause your requestto fail.CONDITIONAL SETTINGS====================File Store Path---------------Key:openid.store.file.pathDescription:If the file store path is to be used, then it needsa writable folder to store data into. This is that path.Default:No defaultExample:To store data in the folder named "sstore" in the samefolder as your development.ini:(Note that you must make this directory as well)openid.store.file.path = %(here)s/sstoreSQL Connection String---------------------Key:openid.store.sql.connection_stringDescription:This is the connection string for the database forpython-openid to store its temporary data in.THIS HAS NOT BEEN TESTED AND DOES NOT WORK YET.Default:No defaultSQL Associations Table----------------------Key:openid.store.sql.associations_tableDescription:This is the name of the table that python-openidwill store is temporary data in.THIS HAS NOT BEEN TESTED AND DOES NOT WORK YET.Default:No default