我在Azure上托管了一个ASP.Net MVC应用,该应用具有Azure App Service Authentication(轻松身份验证),可以针对4个提供商成功验证用户身份。
目的是将App Service创建的ClaimsPrincipal与数据库中的用户进行匹配,以便可以为他们分配其他角色,等等。
但是,我似乎无法使用已更改/新的声明来更新ClaimsPrincipal。没有抛出任何错误,对于后续请求,ClaimsPrincipal根本不会更改。
我尝试了以下方法:
var principal = ClaimsPrincipal.Current;
var context = HttpContext.Current;
var existingClaim = identity.FindFirst(claimKey);
if (existingClaim != null)
identity.RemoveClaim(existingClaim);
identity.AddClaim(new Claim(claimKey, claimValue));
var updatedPrincipal = new ClaimsPrincipal(identity);
var authenticationManager = context.GetOwinContext().Authentication;
authenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant(updatedPrincipal, new AuthenticationProperties() { IsPersistent = true });
authenticationManager.SignOut(identity.AuthenticationType);
authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = true }, identity);
context.User = updatedPrincipal;
Thread.CurrentPrincipal = updatedPrincipal;
如何更改App Service ClaimsPrincipal以添加新的声明?