我有一个Web API,需要执行自定义授权。我使用OAuth凭证和我想我可能会通过实施authorizationManagerWeb API中的自定义授权 - 来自ASP.Net Web API的IClaimsPrincipal用户(System.Security.Claims.ClaimsPrincipal)
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中,这可能是它可能不是正确的事情使用。