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


■ Value 很明显了,就是指定声明的值 。虽然可以用其它CLR类型来表示,但通常都是一个字符串 。(比如出生日期)
■指示发行当前声明的IP名称 。
■表示当前的Claim属于哪个,表示声明引用的是哪个主体的标识 。
我们来举一个很简单的例子 。假如你的程序已经配置好了WIF来使用基于声明的身份标识 。身份验证在会话的刚一开始就发生了,所以在执行过程中你都可以假设用户已经通过了身份验证 。在你代码里的某个特定点上,你需要向你的用户发送一封e-mail 。因此你需要获取她的e-mail地址 。在WIF里就可以这么写:
IClaimsIdentity identity = Thread.CurrentPrincipal.Identity as IClaimsIdentity; string Email = (from c in identity.Claimswhere c.ClaimType == System.IdentityModel.Claims.ClaimTypes.Emailselect c.Value).SingleOrDefault();
第一行代码从当前线程里获取当前的,第二行代码用LINQ从当前声明集合里获取e-mail地址 。查询条件很直观:查询所有的声明,看看哪个类型是Email声明类型,并返回第一个找到的结果 。上面演示的代码没有指示验证用户用的是哪种协议或者证书类型 。这就意味着你可以随便在验证身份的代码里做任何修改,而这里的代码不需要做任何改变 。
总结
我们这次讲了基于声明的身份标识以及WIF的基本工作原理,在接下来的文章中,我们将利用WIF的这些美妙特性,来构建我们的单点登录实现 。