mic*_*ael 6 iprincipal iidentity wif portable-class-library .net-4.5
使用WIF(Windows Identity Foundation)4.5,Microsoft创建了WindowsPrincipal类,这是一种类型ClaimsPrincipal.当然,这些类不可移植,但它们背后的接口是(IPrincipal).ClaimsIndentity实现IIdentity接口的类也是如此.
我遇到的问题是这些类和WIF一般完全基于"声明"的概念,这很棒......但是这两个接口IPrincipal并IIdentity没有.不仅如此,ClaimsPrincipal该类还具有一系列标识,而不仅仅是与之关联的单个标识.
Identity和IsInRole成员.AuthenticationType,IsAuthenticated和Name成员.鉴于可移植类库只能访问这两个接口,如何获得实际的声明?
此外,在极少数情况下,委托人具有多重身份,如何获得"非主要"身份?
Microsoft.IdentityModel.dll微软提供了不可移植的声明感知类型(我希望如此)。这些类型只是扩展当前的身份类型,例如IPrincipal:
public interface IClaimsPrincipal : IPrincipal
Run Code Online (Sandbox Code Playgroud)
IPrincipal这意味着声明感知类型与使用和接口的旧代码兼容IIdentity。但为了让您的代码声明被意识到Microsoft.IdentityModel.dll,您必须添加对(不能作为 PCL 提供)的引用或从头开始编写。
如果您想测试旧代码在处理声明感知类型的实例时的行为,您可以使用向下转换到接口IPrincipal:
IClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(new List<IClaimsIdentity>()
{
new ClaimsIdentity("AuthType1"),
new ClaimsIdentity("AuthType2")
});
IPrincipal principal = claimsPrincipal as IPrincipal;
IIdentity identity = principal.Identity;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2520 次 |
| 最近记录: |