在安全领域中,有两个非常重要的概念--Authentication(身份验证)和Authorization(授权)。Authentication说明你是谁,Authorization说明你可以干什么?在当今的网络应用中,最常见的身份认证方式就是用户名(ID)加密码或者其他的只有当前用户知道的一些私人问题。更为强壮的认证方式是基于硬件或者人的生物特征。一般来说,认证方式的强度从弱到强依次为:
What you know--你知道什么
最常见的就是用户名/密码,以及一些只有你知道的问题。例如:你小学里的老师名字叫什么、你最喜爱的球星是谁,等等。
What you have--你拥有什么
常见的方式是一些实体硬件,如令牌产生器(一次性密码)、手机等。图10-1就是RSA公司生产的SecurID。此设备根据时间变化,定期地会生成一个唯一的不可预测的令牌值。
![]() |
| 图10-1 RSA公司生产的SecurID |
What you are--你是什么
比如我们在一些美国大片中看到的视网膜扫描以及我们上班用到的指纹扫描、脸谱扫描等。它利用的是人基本且唯一的一些生物特征。
使用时,为了增加系统的机密性,我们可以采用双因子身份验证。这里的双因子指的就是上面3种认证方式中的两种方式的组合。就拿RSA的SecurID来说,用户在初次使用它时,需要初始化一个PIN码,这样以后使用时,必须同时输入这个PIN码(What you know)和产生的唯一令牌(What you have)。
让我们再来看一下Web会话。根据RFC 2616,HTTP协议是无状态的,这就意味着Web应用并不了解有关同一用户以前请求的信息。会话就是在服务器端维护每次HTTP请求的状态。这样,一旦一个经过验证的会话建立了,那么Session ID就基本等同于我们上面所说的用户名/密码、一次性令牌等,每个用户的Session ID都应该是唯一的以及不可预测的。
下 面我们将会详细地讲解在现代的Web应用中,一般如何进行身份验证和会话管理。




