在开始开发涉及到成员关系的应用程序时必须首先理解凡个关键的概念这些概念是身份验证和授权
身份──我是谁
在考虑身份时我们可以用几种独一的特性来描述自己例如我是一个头发金黄的女人喜欢看科幻电影和组装PC机但这些信息对于对我的羽毛球技术感兴趣的人来说并不是必需的保存在站点中的身份信息很可能只与一个人的某些方面相关例如一个购物站点会保存用户的姓名电话号码电子邮件地址和家庭地址这些信息都与商品的销售有关它们可能不会关心您的个人兴趣(除非它们和Amazon的规模一样大)所以它们并不需要保存关于用户的这类信息但是这并不妨碍它们拥有这些方面的身份信息
因此身份也就是我是谁的概念是一组范围很广的实际情况的集合您可能曾经在简历里写下了很多实际情况但这些情况同样只与潜在的雇主相关在简历中保存和删除哪些情况由自己决定在保存一个站点的成员的信息时情况也是一样的必须在开发阶段就确定要保存成员的哪些实际情况
身份验证──这就是我
在试图登录一个网站的时候用户要输入某些证书例如邮件地址及其口令的组合网站接下来必须判断用户是否就是自己声明的那个人因此用户输入的邮件地址和口令的组合必须与保存在服务器文件中特定的邮件地址和口令组合相匹配
身份验证的过程就是证明自己是自己所声明的那个人的过程很多站点不论它们是零售商品还是提供社区服务都使用邮件地址和口令的组合作为身份验证方法这是一种经过反复考验的方法虽然这种方法不是绝对安全但是只要选择一个足够可靠的口令并严格保密同时站点的代码经过严格的测试那么用户的配置文件将只能由用户本人使用
授权──这是我能做的
在向网站输入用户名和口令之后Web服务器将不仅会验证口令和用户名是否匹配还将查看站点管理员给用户授予了什么权限身份验证之后的下一个步骤是授权这个步骤将检索您所拥有的用户账户类型的更多信息
例如以一个银行网站为例在用户的登录信息通过验证之后服务器将查看用户在该站点上的权限与大多数用户一样您可以查询账户在账户之间转账或者支付账单然而如果银行受到某个安全方面的恐吓(类似于Internet上到处流传的网络钓鱼(phishing)电子邮件)您可能会发现自己突然无法通过这个在线应用程序添加任何第三方代理订单直到安全危机解除为止功能的关闭很可能是由管理员为一些或所有用户设置一个特殊的标记而进行控制的在页面上告诉用户他们不再有权限修改他们账户的详细信息
登录站点
登录站点的过程从用户的角度看就是输入一组证书然后根据自己的配置文件看到不同用户界面的过程通常用户所使用的证书是用户名加口令的组合然而对于安全性更高的站点例如银行站点可以使用其他的方式登录包括PIN和安全认证如果不考虑向服务器传送身份验证证书的方法那么身份验证的基本原则是一样的一旦验证完成之后通过身份验证机制查询用户具有什么样的权限就比较简单了
ASPNET 入门教程完整版