使用只能使用一次的令牌登录。
项目描述
简介
一次性令牌PAS允许用户使用特殊令牌登录。令牌生成后只能使用一次。这使得成员可以在不提供用户名和密码的情况下登录。您可以发送包含特殊登录URL的电子邮件,以便成员轻松访问门户。
安装
此产品是为Plone 2.5编写的,但可以轻松用于3.x。
通过快速安装程序安装
在OTT插件中激活身份验证和提取,将该插件移到顶部。
使用方法
生成令牌
tokenTool = getToolByName(self, 'onetimetoken_storage') token = tokenTool.setToken(userId) 'http://myplone/@@do_some_nice_stuff?token=%s' % token = token
将带有登录代码的URL发送给用户
用户只能使用一次令牌,有效期为三周。可以在工具中设置过期时间。
或者您可以生成临时用户,稍后删除
tokenTool = getToolByName(self, 'onetimetoken_storage') # get token and create temporary user token = tokenTool.setToken() # user uses token to do some nice stuff 'http://myplone/@@do_some_nice_stuff?token=%s' % token = token # inside that view userid = self.verifyToken(token) # do some stuff with user (login, get some girls, etc) # ... # delete temporary user tokenTool.deleteTemporaryUser(userid)
管理员的使用
在Plone网站根目录上具有管理门户权限的用户可以通过访问@@login_as浏览器视图并输入目标用户名来登录为任何其他用户。此功能已从niteoweb.loginas包中提取并修改。
安全性
为什么不使用此插件让用户自己登录呢?在某些特定情况下,自动登录用户非常有用。例如;一位成员参加节能计划并跟踪其能源使用情况。每个月他都会收到一封自动登录并更新其使用的电子邮件。另一个例子;一个门户用于向成员通知新发布的通讯,这些信件不是公开的。成员会收到一个自动登录到通讯的链接,以便他可以阅读。
这一切都是为了让用户更容易登录,并且没有登录障碍。在上述情况下,成员是普通用户,没有提升权限。当然,可能存在一次性令牌不适用或不安全的情况。
包含在URL中的登录代码包含base64编码的登录名和令牌。每个令牌都是随机数据的唯一生成的md5哈希值,只能使用一次。如果提供的用户名、令牌和存储的具有用户名的令牌之间有成功匹配,则进行身份验证。
清除旧令牌
可以通过调用token存储上的clearExpired来清除旧令牌。使用crontick和cron4plone,此任务可以自动化。
在cron4plone中添加此调用:portal/onetimetoken_storage/clearExpired
待办事项
一些文档或单元测试会很好
控制面板用于设置过期时间。
在生成令牌时禁用成员检查。这是因为我们在生成大量密钥(> 15,000)和SQL PAS时遇到了性能问题。将其作为控制面板中的选项添加。
变更日志
0.3 - 2013-12-27
修复了Plone 4安装代码兼容性 [Radim Novotny]
将所有令牌异常子类化为Products.OneTimeTokenPAS.config.TokenError [Domen Kozar @ niteoweb]
添加了一些测试覆盖率 [Domen Kozar @ niteoweb]
在发出.setToken()时添加了创建临时用户的能力。还添加了.deleteTemporaryUser(userid)方法 [Domen Kozar @ niteoweb]
修复了.clearExpired()永远不会实际执行任何操作的错误 [Domen Kozar @ niteoweb]
0.2 - 2009-10-12
添加了@@login_as浏览器视图,允许以任何用户登录。想法和部分代码取自niteoweb.loginas。谢谢![naro]
0.1.1 - 2009-09-02
再次发布,添加了metadata.xml
0.1 - 未发布
初始发布