如何建立统一帐号服务

背景

随着互联网技术的发展,各式各样的互联网公司在崛起,也在给人们的生活提供着各种方便。也伴随着公司的不断壮大,业务在不停的扩展,同一公司下会有很多不同的产品,不同的产品可能使用了不同的域名,但是他们可能会使用公司统一的帐号服务,所以简历统一的帐号服务体系就成为了必然。比如说:淘宝(www.taobao.com)和天猫(www.tmall.com)它们使用了相同的帐号,在不同的产品和域名下进行了帐号的统一管理。

目的

基于这样一个大的背景,今天想要讨论一下如何实现一个统一的帐号服务?并且如何减少这种服务带来的问题?

实现细节

关于怎么实现,我们很简单就想到了使用单点登录(http://www.blogjava.net/Jack2007/archive/2008/04/10/191795.html)实现。它的基本原理就是:在一个域名下进行认证之后,在其他信任的域名列表不需要在进行登录认证,用一张图片说明如下:

 

而我要讲的是如何实现单点登录,算是一个实践例子。

我们知道如何证明一个用户在该域名下是否是登录状态,必须存在一个标识进行标注。在web应用中,浏览器的cookie就担任了这么一个角色,可以很方便的记录用户的登录状态或者用户其他信息(但是处于安全的考虑,一般用户信息不建议使用cookie进行记录,除非是不重要的信息)。目前基本上所有的web应用的帐号体系都是通过cookie记录用户状态,这也进一步佐证了为什么禁用了浏览器的cookie好多登录都会失效(这个大家可以进行实验,禁用浏览器cookie后,对想要测试的网站进行登录即可)。

那么怎么让不同的域名同样具备相同的登录状态的?首先可以看一下有哪些情况:假设我们公司现在存在四个域名,分别是:www.a.com www.b.com www.c.com user.a.com。其实这就是两种情况,第一种是:不同域名;第二种是不同子域。不同子域有一种简单的实现方式就是直接设置不同子域共用根域的cookie信息即可,对于不同域名的情况,只要通过某种方式将cookie设置到它们域名下即可,我这里使用的方式是将不同的域名cname(http://baike.so.com/doc/6836406.html)到主域名,然后向不同的域名设置cookie。

下面介绍上述两种情况的具体实现:www.a.com和user.a.com可以设置cookie时,加上domain参数,如:domain: ‘a.com‘,这样主域的登录状态被设置成功时,子域就可以访问这个状态了;www.a.comwww.b.com 、www.c.com可以启用一个公用的服务域名,passport.a.com passport.b.com passport.c.com分别向a.com、b.com、c.com设置cookie,这样就转换成了本域的情况了。以a.com为主域,passport.b.com和passport.c.com可以cname到passport.a.com即可。

上面说到的就完成了不同域名设置登录状态的情况,这只是完成了第一步,相当于上图说的ticket,然后就是拿上这个ticket进行验证 。

后续可以做的

安全问题:

上面的这种做法存在一些安全问题,上面讲到不同子域可以共享根域的cookie,这样就会存在cookie泄漏的问题,解决方案就是要控制a.com下的子域名都要受自己控制不能被滥用;其次需要防止的网站被xss攻击,攻击之后攻击者获取ticket,然后就可以验证了。这种方式可以采用双因子验证,其中一个为httpOnly这样的话,只有部署了sdk才能验证成功,还可以对reffer进行设置,采用白名单机制也能有效的进行防御;还可以通过https、post请求、验证码、频度限制进行控制。

易用性

现在提供的帐号登录、注册相关,都普遍采用弹层的形式,这样对用户来说提供了一个简单、易操作的入口,不需要进行跳转提升了用户的体验。这样就需要解决的就是跨域设置cookie的问题,常用的就是jsonp的形式,这种情况无法进行post请求,建议使用iframe+post形式。特别的密码需要直接加密后进行传递,这样对用户隐私也是一种保护。

以上是自己在实践中的一些想法,欢迎讨论、拍砖~

参考资料:

http://www.blogjava.net/Jack2007/archive/2008/04/10/191795.html

http://shaoshuai.me/tech/2014/08/16/cookie-theft-and-session-hijacking.html

如何建立统一帐号服务

时间: 2024-10-07 20:06:30

如何建立统一帐号服务的相关文章

Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号

原文:Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号 原文出处:http://blog.csdn.net/dba_huangzj/article/details/38037457,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog

Linux 第八周上课笔记(2) nfs,ldap网络帐号,autofs自动挂载服务

######################NFS############################ nfs 手动挂载方式 1)yum install nfs-utils 2)showmount -e ip                       ##识别该ip下的共享 3)mount ip:/sharedir /mountpoint        ##挂载点 挂载目录 永久挂载方式 方法一 vim /etc/fstab 172.25.254.250:/nfsshare/nfs1 /m

多个公众号(服务号和订阅号)之间需要用户帐号互通

由于同一公司下多个公众号之间需要用户帐号互通,微信开放平台提供了UnionID机制,来解决此问题 通过获取用户基本信息接口,开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个公众号,可使用以下办法通过UnionID机制来在多公众号之间进行用户帐号互通. 1. 将多个公众号绑定到同一个微信开放平台(open.weixin.qq.com)帐号下,即同一个Union下 2. 通过获取用户基本信息接口中的UnionID来区分用户的唯一性,不过需要注意的是:公众号只有在被绑定到微信开放平台帐

Linux命令Man解释:useradd:帐号建立或更新

名称 useradd - 帐 号 建 立 或 更 新 新 使 用 者 的 资 讯 语 法 useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,...]] [-m [-k skeleton_dir] | -M] [-s shell] [-u uid [ -o]] [-n] [-r] login useradd -D [-g default_group

云桌面帐号自助服务

解锁和重置密码,要确保已在PS系统中录入过身份证号码. 帐号解锁 使用本人手机拨打 4001524366 转 4 转 1 重置密码 使用本人手机拨打 4001524366 转 4 转 2 重置后的密码由两个部分组成 前六位字符以短信方式发送至来电手机 后六位字符以语音的形式播报给来电用户 比如收到的短信前半段6位为IFMsgv,后6位语音播报(655723),那么重置后的密码就是IFMsgv655723. 原文地址:http://blog.51cto.com/novali/2070621

扣扣帐号被盗了,怎样才可以找回?

找回帐号 1.已设置了密码保护且记得相关密保资料,可以登录安全中心通过"找回密码"直接找回. 2.未设置密保或忘了密保(密码),能通过"密码管理" → "帐号申诉",且依照提示输入信息,然后"提交"找回. 密保问题 密保问题忘了,该怎么办? 1.如果有密保手机.密保卡.密保令牌中的任何一种,可以登录安全中心,选择"密保管理"点击"修改"密保问题,通过"统一安全验证"后

微信公众帐号开发之一(java)

闲来没事,就记录一下微信公众平台的开发吧~ 其实微信公众平台开发没有想象中的那么困难,因为注册了微信公众平台帐号登录之后在开发者模式里有详细的文档,个人感觉介绍还是比较详细的. 微信公众平台订阅号和服务号的区别网上已经有N多的介绍了,这里就不再说了.从微信公众平台登录之后开始说起吧. 对于开发者来说,开发者模式是最好的选择了.因为在里面可以更自由更灵活的选择消息回复方式.编辑模式只能对特定的字符进行相应的消息回复.而且在开发者模式下可以灵活的创建自定义菜单(前提是你的帐号有提供相应的接口,需要微

云计算统一办公运营平台服务能力设计方案

1.前言 1.1.背景 目前,运营商的业务支撑系统多采用传统的"烟囱式"架构模式,即:按功能分为不同的子系统,根据不同需求独立地进行设计和建设,系统架构从应用.数据再到基础设施,都以烟囱式部署为主.这种系统架构模式的显著特点是纵向统一,系统内部建设一体化.这种系统架构模式虽保证了各功能系统内部建设的统一,但同时也导致出现了系统系统间独立性强.信息不透明.部门间横向协调性差.共通性少及资源共享率不高等诸多问题. 近年来,随着云技术的飞速发展和业务需求的持续扩大,运营商对业务支撑系统的横向

一起学微软Power BI系列-使用技巧(4)Power BI中国版企业环境搭建和帐号问题

千呼万唤的Power BI中国版终于落地了,相信12月初的微软技术大会之后已经铺天盖地的新闻出现了,不错,Power BI中国版真的来了,但还有些遗憾,国际版的一些重量级服务如power bi embeded,都还暂时不能用,但相信会很快,等了一年,也不在乎多等点时间了,而且中国版的一些服务已经可以先进行一些测试和技术储备了.今天就来说说Power BI帐号注册的相关问题,以及多人协作环境的搭建. 苦逼这篇文章应该在2016年末发出来的,杯具搞到半夜,Win10系统死掉了...无法保存,当时那个