使用只能使用一次的令牌登录。
项目描述
介绍
一次性令牌 PAS 允许用户使用特殊令牌登录。令牌生成,只能使用一个。这允许成员在不提供用户名和密码的情况下登录。您可以发送带有特殊登录 url 的电子邮件,以便会员可以轻松访问门户。
安装
该产品是为 Plone 2.5 编写的,但可以很容易地用于 3.x。
通过快速安装程序安装
在 OTT 插件中激活 Authentication and Extraction,将此插件移到顶部。
用法
生成令牌:
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)
经理的使用
通过访问@@login_as 浏览器视图并输入目标用户名,允许在 Plone 站点根目录上具有管理门户权限的用户以任何其他用户身份登录。此功能取自 niteoweb.loginas 包并进行了修改。
安全
为什么不让用户自己登录而不是使用这个插件呢?在特定情况下,自动登录用户很有用。例如; 会员参与一项计划以节省能源并跟踪他的能源使用情况。每个月他都会收到一封电子邮件以自动登录并更新他的使用情况。另一个例子; 门户用于通知成员新发布的时事通讯,这些信件不公开。会员获得一个自动登录到时事通讯的链接,以便他可以阅读它。
这一切都是为了让用户更轻松,并且登录没有障碍。在上述情况下,成员是没有提升权限的普通用户。当然,可能存在一次性令牌无用和/或安全的情况。
url 中包含的登录代码包含登录名和 base64 中的令牌。每个令牌都是唯一生成的随机数据 md5 哈希,并且只能使用一次。如果给定的用户名、令牌和存储的带有用户名的令牌之间成功匹配,则您已通过身份验证。
清除旧令牌
旧令牌可以通过在令牌存储上调用 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。谢谢![纳罗]
0.1.1 - 2009-09-02
重新发布,添加 metadata.xml
0.1 - 未发布
初始发行