我有一個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中,這可能是它可能不是正確的事情使用。