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 次 |
最近记录: |