ASP.中的身份声明提供程序映射.NET



我有一个MVC应用程序,带有OData API(都是.NET Framework(,它们支持多个身份验证/身份验证提供程序。问题是,在某些情况下,声明类型不一致——例如,用户id的sub-vuid。中有推荐的方法吗。NET Framework提供索赔类型映射功能?

我正在考虑创建一个ActionFilter,并在启动期间传递一个ILookup或其他我相信会起作用的东西,但我只是想知道是否有更好的方法来处理它。

感谢

找到了我的解决方案。

我正在使用自定义ClaimsAuthenticationManager(System.Security.Claims(实现来重新映射索赔类型,并在需要时添加自定义索赔:

public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal)
{
if (incomingPrincipal.Identity.IsAuthenticated)
{
ClaimsIdentity identity = (ClaimsIdentity)incomingPrincipal.Identity;
AddUserIdClaim(identity);
AddUserNameClaim(identity);
AddUserEmailClaim(identity);
RemapGroups(identity);
}
return incomingPrincipal;
}

它被用于Global.asax.cs:

protected void Application_PostAuthenticateRequest()
{
ClaimsPrincipal currentPrincipal = ClaimsPrincipal.Current;
CustomClaimsManager customClaimsTransformer = new CustomClaimsManager();
ClaimsPrincipal tranformedClaimsPrincipal = customClaimsTransformer.Authenticate(string.Empty, currentPrincipal);
Thread.CurrentPrincipal = tranformedClaimsPrincipal;
HttpContext.Current.User = tranformedClaimsPrincipal;
}

最新更新