账号系统的两阶段登录和三阶段登录

标签: Web | 发表时间:2014-03-25 00:27 | 作者:ideawu
出处:http://www.ideawu.net/blog

简单的账号登录是一阶段登录, 也即用户提供用户名和密码, 然后服务器端验证账号和密码是否正确以决定是否成功登录. 一阶段登录其实安全性是非常危险了, 其危险性就在于这个登录流程涉及到的数据都是静态的, 因为用户名和密码一般不会改变.

为了在登录流程中引入动态数据, 必须把流程改为两阶段登录: 1, 获取动态临时 secret salt; 2. 利用 secret salt 加密用户名和/或密码. 而为了实现单点登录(SSO), 还需要利用三阶段登录.

1, 获取动态临时 secret salt

在登录之前, 客户端(浏览器)向服务器请求一个有效期非常短的 secret salt(加密盐), 这个 salt 的有效期一般只有数秒, 将在登录成功或者失败, 或者重新获取新的 secret salt 之后自动失效, 从而保证登录过程即使被截获并重放, 也是无效的.

2. 利用 secret salt 加密用户名和/或密码

用户名和经过加密或者 md5 摘要之后的密码被提交到服务器时, secret salt 并不提交给服务器, 因为服务器端在 session 中保存了这个 secret salt. secret salt 保存在服务器端, 可以避免伪装的 secret salt. 服务器接收到提交的用户名和密码后, 再把数据库的用户名和取出来, 用同样的算法进行加密或者 md5, 然后校验登录状态.

3. 设置跨域 cookie 实现 SSO

为了实现单点登录(SSO), 需要使用三阶段登录流程, 这最后的一步登录被是设置跨域的登录 cookie. 例如, 当用户在 a.com 登录网站时, 如果也希望自动地在 b.com, c.com 等待网站自动登录, 那么就必须将登录 cookie 设置到这些域名之下.

在前面的两个步骤完成登录后, 服务器同时生成一个临时的 token, 这个 token 也有较短时间的有效期, 然后, a.com 的网页把这个 token 带在 URL 中, 利用隐藏的 form(或者 iframe 等)访问 b.com 和 c.com, b.com 和 c.com 的服务器端首先验证临时 token, 如果正确便设置自己域名下的登录 cookie. 最终, 完成了多域名同时登录.

Related posts:

  1. 网站如何禁止非浏览器访问?
  2. 让你的网站支持手机二维码登录
  3. 博客防垃圾评论探讨
  4. 使用Python POST任意的HTTP数据以及使用Cookie
  5. Wordpress评论转义HTML标签

相关 [系统 阶段 登录] 推荐:

账号系统的两阶段登录和三阶段登录

- - idea's blog
简单的账号登录是一阶段登录, 也即用户提供用户名和密码, 然后服务器端验证账号和密码是否正确以决定是否成功登录. 一阶段登录其实安全性是非常危险了, 其危险性就在于这个登录流程涉及到的数据都是静态的, 因为用户名和密码一般不会改变.. 为了在登录流程中引入动态数据, 必须把流程改为两阶段登录: 1, 获取动态临时 secret salt; 2.

PHP实现Google Oauth的登录系统

- - 极客521 | 极客521
本文讲述的是如何为你的PHP项目实现Google的Oauth系统. 这个示例PHP脚本非常快,对增加你的PHP项目注册当然是很有帮助的. 在这之前,我们已经覆盖了包含Facebook、Twitter、Google plus以及Instagram的Oauth登录系统示例. 很遗憾之前我遗漏掉了Google的Oauth登录系统.

设计一个可扩展的用户登录系统(第三方登录)

- - 企业架构 - ITeye博客
在Web系统中,用户登录是最基本的功能. 要实现用户名+密码登录,很多同学的第一想法就是直接创建一个 Users表,包含 username和 password两列,这样,就可以实现登录了:. id | username | password | name等其他字段 ----+----------+----------+---------------- A1 | bob.

社会化登录系统Janrain融资3300万美元

- - TECH2IPO创见
Janrain支持一次安装后通过Facebook, Google, Twitter, Yahoo, LinkedIn等帐号登录进网站,它的客户包括飞利浦、英国4频道、环球音乐、美泰玩具等大公司的官网. 2012年公司营收较11年翻倍,每月新注册的社交账号增幅达到300%.. 本轮融资由Millennium Technology Value Partners领投,跟投的有Split Rock Partners, Epic Ventures, Salesforce, 以及现有投资者Emergence Capital, RPM Ventures, DFJ Frontier 和 Anthem Venture Partners participating.

跨域单点登录系统的设计与实现

- - CSDN博客推荐文章
跨域单点登录系统的设计与实现. 一、跨域单点登录系统整体设计. 如上图所示:在系统存在一个认证中心以及多个站点. 用户信息统一由认证中心管理,在其它子站的登录均会跳转到认证中心来登录. 单点登录系统的关键在于,当用户从一个子站登录后,它会在认证中心生成ticket标识,只要该标识存在就代表用户已经成功登陆了.

分布式系统中的一致性协议之两阶段提交协议(2PC)

- - 断尘居
 两阶段提交协议是很常见的解决分布式事务的方式,他可以保证分布式事务中,要么所有参与的进程都提交事务成功,要么都取消事务,这样做可以在分布式环境中保持ACID中A(原子性).      在两阶段提交协议中,包含了两种角色:协调者与参与者. 参与者就是实际处理事务的机器,而协调者就是其中一台单独的处理分布式事务的机器.

解决登录界面和系统内语言不一致问题

- linsen - Tip4Mac
前阵子有朋友在新浪微博上问到为什么他的Mac登录界面和系统内的显示语言不一致. 我们最后搜索了一下发现这还是个比较普遍的问题. 连编辑益牙自己也遇到了(由于长期不关机,不重启,我都没有意识到). 这个问题很常见,以至于苹果自己也出了一篇文章来解决. 具体的步骤大家可以参考下面或者上述链接内的内容:.

在FreeBSD系统中用pkill命令踢出SSH在线登录用户

- - haohtml's blog
FreeBSD是一个多用户多任务的操作系统,用户可以在不同地方通过ssh连上FreeBSD服务器,在系统中我们可以使用w命令来查看当前在线登录用户. 看到了吧,已经有3个用户登录到服务器了. 接下来使用who am i 看那个是自己的登录终端,下面自己是pts/1. 接下来使用pkill命令将要其它的用户踢出,这里为p0和p2.

无线自行车刹车在三万亿次试验中仅有三次失败,控制系统从此进入革命性新阶段

- menzi - 译言-电脑/网络/数码科技
很多飞行员已经能通过电传系统控制飞机飞行,而一位德国科学家正在试图摆脱电缆实现无线操纵. 他发明的无线自行车制动系统在三万亿次试验中仅失败三次,这无疑为无线飞行操控扫平了前路. 德国Saarland大学的计算机科学家们已经研制出一个自行车无线制动系统,据称控制系统将因此得到革命性发展. 轻松骑行:Holger Hermanns 教授展示一辆装备了他发明的无线制动盘的自行车.

关于已登录 Mac App Store 的 Lion 系统的所有相关信息、教程汇总

- 子奇 - 苹果fans-中文 Apple Blog
    昨天真是疯狂的一天,公布了大赚特赚的第三季财报后,苹果一口气发布了 Lion 系统、新款 Mac mini、新款 MacBook Air、Thunderbolt Display 显示器、iWork 升级、iTunes 10.4、Safari 5.1 等一堆软硬件.     Mac OS X Lion 系统的报道已经持续小半年了,这里不多废话.