使用WIF实现单点登录Part II —— Windows Identity F( 二 )


使用WIF实现单点登录Part II —— Windows Identity F

文章插图
图1 用户出示声明
基于此模型,单点登录更容易了,而且应用程序也不用再干这些事儿了:
基于此模型,应用程序通过用户提供的声明来处理所有有关标识的事情,从简单的用户姓名到授权用户访问高级特性和资源 。
基于声明的身份标识介绍
上面说了这么多,可能已经出现了很多陌生的名词,接下来我们以一个实际生活中的例子来解释一下这些名词吧 。
假设你要去电影院看一部纪录片,要考虑以下因素:
1、该纪录片含有不适合未成年人观看的情节,因此电影院的员工需要你出示身份证明来验证你是否适合观看 。你掏出钱包,却发现你的身份证丢了,而驾照也已经过期了 。
2、你决定不看首映,先到附近的DOL( of ,牌照部)领取一个新的驾照 。
3、工作人员先看你是否和记录里的照片长得一致,或许还会让你去视力表那测一下 。当他确信了你确实是你之后,就会给你发新的驾照 。
4、你回到电影院出示了新驾照,工作人员确认了你确实够年龄观看影片了,就会给你下一场电影的门票 。
使用WIF实现单点登录Part II —— Windows Identity F

文章插图
上图演示了这个例子的过程 。
使用WIF实现单点登录Part II —— Windows Identity F

文章插图
上面这个例子应该说是很常见的了 。那么接下来我们把它抽象到我们的身份验证里去看看:
假设我们的系统包括了一个用户(主体,)和他要访问的程序 。在上面的例子里,这个用户就是要去看电影的人;通常,可以是任何东西,无论是真实的用户还是无人值守的程序标识 。应用程序可以是一个网站,Web服务,或者通常的任何需要身份验证和授权用户的软件 。用标识里的行话来讲,就是叫做依赖方( party,RP) 。在上面的例子里,RP就是电影院及其工作人员 。系统里可能包括一个到多个标识提供者( ,IP) 。IP是认识的一个实体 。它知道该如何去验证,就像上面的例子,DOL知道如何根据档案库里的照片和顾客本人的脸去做做比较;它知道顾客的事儿,就像DOL知道它区域里每个司机的出生日期 。IP是一个抽象的角色,但它需要具体的组件:目录,用户系统信息库,以及身份验证系统,这些都是IP用来履行其职责的部分例子 。我们假设有都多种标准途径来用IP进行身份验证以及接收返回的必要用户信息(如上例的出生日期) 。我们就将这些用户信息称为声明() 。
声明这个词终于千呼万唤始出来了 。声明是一个实体对的陈述 。这个陈述可以是与关联的任何东西,无论是诸如出生日期这样的属性还是这个属于某个特定的安全组 。声明和简单的属性不一样的地方是声明通常是和发行它的实体相关联的 。这是一个很重要的区别:它提供了一个标准,让你自己决定是否去信任这个 。回想一下上面的例子,印在驾照上的日期与随便在某张边条纸上写得很潦草的日期,电影院员工信任的是前者而不是后者 。
使用WIF实现单点登录Part II —— Windows Identity F

文章插图
上图描述了抽象后的过程,接下来对这个过程详细解释一下:
1、主体()想要通过某种途径(浏览器,富客户端等等)去访问RP应用程序 。主体先去了解RP的策略 。得知RP信任哪个标识,需要哪种声明,以及要用哪个安全协议 。
2、主体选择其中一个RP信任的IP,并检测其策略,得知要用什么安全协议 。然后发送请求到IP并发行一个能匹配RP需求的令牌 。这个过程和去DOL请求一个含有出生日期的档案是一样的 。主体需要提供一些证明来让IP进行辨识 。要使用的协议详情在IP的策略里进行描述 。