为Pyramid框架提供的一个作为Fedora账号系统OpenID消费者的视图。
项目描述
pyramid_fas_openid为Pyramid框架提供了一个视图,作为Fedora账号系统的OpenID消费者。
此代码依据BSD派生的Repoze公共许可证提供。
其中大部分代码受到了repoze.who.plugins.openid代码的启发(即:从中提取)。该代码可在以下地址找到:[http://quantumcore.org/docs/repoze.who.plugins.openid](http://quantumcore.org/docs/repoze.who.plugins.openid)(无需跟随链接)
在您的Pyramid应用程序中,将pyramid_openid.verify_openid view_callable添加到您的view_configuration中,并在您的.ini文件中添加所需的设置。
以下是一个基本设置示例:openid.store.type = file openid.store.file.path = %(here)s/sstore openid.success_callback = myapp.lib:remember_me
此设置要求您在应用程序目录中有一个名为“sstore”的文件夹,并且在您的lib模块中有一个名为“remember_me”的回调函数。Remember_me将接收当前请求和OpenID提供者返回的其他信息,然后应该执行所需的一切以记住用户 - pyramid.security.remember,将元数据加载到会话中等 - 这部分完全取决于程序员。
此设置将假定其余键的默认值。
一旦配置就绪,就是时候将视图连接到应用程序了。您可以根据自己的需求来操作。
示例:在您的应用程序配置设置代码中,在“return config.make_wsgi_app()”之前添加此行
- config.add_route('verify_openid',
pattern='/dologin.html', view='pyramid_openid.verify_openid')
现在您有一个URL可以提交OpenID表单:/dologin.html。根据上述配置,它期望在request.params['openid']中找到用户的OpenID URL。
必需的设置
OpenID数据存储
键:openid.store.type
描述:这决定了python-openid将使用哪种存储来跟踪nonce和其他跨请求数据。请注意,默认值为None,这意味着python-openid使用无状态请求类型。无状态模式不可靠;应选择其他选项。推荐使用文件和mem。
SQL存储尚未经过测试或验证其是否正常工作。它也不推荐使用。
默认:None
示例:要使用文件存储:(openid.store.file.path也必须指定)openid.store.type = file
要使用内存存储:openid.store.type = mem
要使用SQL存储:(openid.store.sql.connection_string和openid.store.sql.associations_table也必须指定)这尚未经过测试且无法工作 openid.store.type = sql
可选设置
成功的登录回调
键:openid.success_callback
描述:这是一个在OpenID提供者成功验证后被调用的可调用对象。该可调用对象将传递三个参数;当前上下文、当前请求和一个具有以下结构的字典
{ 'identity_url': The user's unique URL from the provider, 'ax': A dictionary containing all the returned active exchange parameters requested, 'sreg': A list containing all the returned simple registration parameters requested }
此回调必须具有以下格式:module.optional_submodules:function
从该可调用对象返回的内容将作为响应返回。
默认:None
示例:如果回调位于my应用程序包的lib模块中,并且命名为openid_callback,则这是要使用的设置:openid.success_callback = myapp.lib:openid_callback
AX
键:openid.ax_required openid.ax_optional
描述:这些代表通过OpenID属性交换请求的用户数据。
默认:None
示例:要求提供者响应用户的电子邮件:openid.ax_required = email=http://schema.openid.net/contact/email
SX
键:openid.sreg_required openid.sreg_optional
描述:这些代表通过OpenID简单注册请求的用户数据。
默认:None
示例:要求提供者响应用户的电子邮件:openid.sreg_required = email
传入OpenID参数名称
键:openid.param_field_name
描述:当首次提交包含用户OpenID URL的请求时,必须从request.params中通过一个键来检索它。这是request.params中该键的名称。
默认:openid
示例:提交后,用户的OpenID URL将位于request.params['users_openid_url']中:openid.param_field_name = users_openid_url
错误目的地
键:openid.error_destination
描述:当OpenID验证过程中的某项操作失败时,用户将被发送到该URL。错误信息将按照openid.error_flash_queue的指定存储在request.session.flash队列中。
默认:request.referrer
示例:在失败时将用户发送到http://www.example.com/sorry.html:openid.error_destination = http://www.example.com/sorry.html
错误闪存队列
键:openid.error_flash_queue
描述:如果OpenID过程中出现问题,错误信息将被放入request.session.flash消息队列中,这是该队列的名称。
默认:默认闪存队列('')
示例:将错误信息放入“OpenIDErrors”闪存队列:openid.error_flash_queue=OpenIDErrors
领域名称
键:openid.realm_name
描述:这是传递给OpenID提供程序的领域参数的值。这是为了完整性而在这里,但除非你知道自己在做什么,否则没有必要更改它。
默认:request.host_url
示例:将领域设置为“www.example.com”:openid.realm_name = http://www.example.com
注意:更改realm_name很可能会导致您的请求失败。
条件设置
文件存储路径
键:openid.store.file.path
描述:如果使用文件存储路径,则需要一个可写文件夹以存储数据。这是该路径。
默认:无默认值
示例:在与开发.ini相同的文件夹中存储数据到名为“sstore”的文件夹中:(注意您必须创建此目录)openid.store.file.path = %(here)s/sstore
SQL连接字符串
键:openid.store.sql.connection_string
描述:这是python-openid存储其临时数据的数据库的连接字符串。这尚未经过测试且尚不可用。
默认:无默认值
SQL关联表
键:openid.store.sql.associations_table
描述:这是python-openid将临时数据存储的表名。这尚未经过测试且尚不可用。
默认:无默认值