【发布时间】:2015-01-27 06:40:49
【问题描述】:
我有一个需要进行自定义授权的 Web API。我正在使用 oAuth 令牌,我想我可以通过实现一个授权管理器来做额外的检查
using Microsoft.IdentityModel.Claims;
using System.Diagnostics;
using System.Linq;
public override bool CheckAccess(AuthorizationContext context){
public override bool CheckAccess(AuthorizationContext context)
{
//authorization code here
}
}
当我尝试创建 AuthorizationContext 我没有正确的主体类型时,就会出现问题。我注意到,从我的 Web API 调用中,我得到了一个 System.Security.Claims.ClaimsPrincipal 用户,它不能转换为新 AuthorizationContext 所需的 IClaimsPrincipal。
var authorizationContext = new AuthorizationContext(principal, "resource", "action");//System.Security.Claims.ClaimsPrincipal is the wrong type of principal here, but is what user is on Web API call.
这当然会导致以下错误:
无法从“System.Security.Claims.ClaimsPrincipal”转换为“Microsoft.IdentityModel.Claims.IClaimsPrincipal”
除了 ClaimsAuthorizationManager 之外,我还应该实施什么吗?考虑到我拥有的主体类型,是否有一种简单的方法来创建我需要的上下文对象?
我确实注意到 ClaimsAuthorizationManager 位于 Microsoft.IdentityModel.Claims 中,而其他许多 Web api 内容位于 Microsoft.AspNet.Identity 或 Microsoft.AspNet.Identity.Core 中,这可能表明它可能不正确使用的东西。
【问题讨论】:
标签: c# asp.net asp.net-identity wif