通过Azure应用服务身份验证(轻松身份验证)更新/替换ClaimsIdentity

时间:2018-08-26 07:40:15

标签: asp.net azure authentication claims-based-identity azure-web-app-service

我在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以添加新的声明?

0 个答案:

没有答案