分布式系统用户统一认证浅析(一)--认证中心被动认证实现
现在越来越多的系统迫于压力以及提高性能,很多站点都是采用多站点分布式运行,例如腾讯、新浪的站点就分成很多个频道,各个频道有独立的域名,独立的 IP 来支撑,这样一来各个站点之间就出现了统一认证的问题,也就是需要用户在一个站点登录,其他站点都能用的,且退出之后,各个站点都不能用,形成对用户的统一管理,避免了各个子系统之间的功能冗余。 本文就作者自己的一些使用过的设计方法进行整理。使用过的方式主要两种,一是认证中心被动认证,二是认证中心主动认证,本文将介绍被动认证模式。 一、认证流程 主要的流程是,用户第一次访问系统 A 的页面 a ,当前系统(系统 A )状态还没有登录,所以只能跳转到认证中心进行登录,登录之后,认证中心跳转回来站点 A 的页面 a ,该用户现在已经拥有了 Token ( Token 由认证中心根据用户名以及登录时间生成,这个是唯一的字符串,每次生成都会不同),但是站点 A 不知道此 Token 是否合法,所以系统 A 自动跳转到认证中心,拿该 Token 进行验证,验证通过再跳转回来站点 A ,此时站点知道用户的 Token 合法,允许访问页面 a 。此种验证方法有个小问题就是,访问站点 A 的每个页面都需要到认证中心认证所拥有的 Token 是否合法(因为有可能用户会在其中一个子系统退出,退出后用户的旧 Token 为非法 Token ) 二、认证实现 (C#