35、使用 Windows Identity Foundation (WIF) 保护 WCF 服务

使用 Windows Identity Foundation (WIF) 保护 WCF 服务

1. 声明查询

IClaimsIdentity 上的声明集合被明确设计为对 LINQ 友好,这使我们可以使用查询语法或扩展方法来查询声明,具有很强的表达能力。例如,使用扩展方法查询电子邮件声明:

var email = id.Claims.First(c => c.ClaimType == ClaimTypes.Email);

还可以要求声明在集合中仅出现一次:

var dob = id.Claims.Single(c => c.ClaimType == ClaimTypes.DateOfBirth);

此外,还可以围绕 LINQ 查询构建便捷包装器。Thinktecture.IdentityModel 库提供了一些针对 IClaimsPrincipal 和 IClaimsIdentity 的扩展方法,如 FindClaims、GetClaimValue、DemandClaim 等。

2. 访问声明

对于底层代码(如转换或授权代码,有时也包括外观代码),可以直接对 IClaimsPrincipal 进行操作。而业务代码应使用类似 User 类的抽象,通过其属性查询声明集合,这样可以避免技术细节干扰业务逻辑,并且可以独立于业务代码更改底层实现。同时,为了便于单元测试,可以在代码中注入主体。

3. 授权
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值