IdentityServer - 客户端无法识别用户声明已更新

时间:2016-06-08 12:04:20

标签: identityserver3

我是一个MVC网站,需要两个因素身份验证才能进行多项操作。并非所有用户都需要2fa,因此登录时无法设置。

我是一个AuthorizationAttribute,用于检查用户对特定2fa声明的声明。

 protected override bool AuthorizeCore(HttpContextBase httpContext)
  {

      var principal = (ClaimsPrincipal)httpContext.User;
      if (!principal.Identity.IsAuthenticated)
      {
          return false;
      }

      return
          principal.Claims.Any(
              x =>
                  x.Type == MyClaimTypes.AuthenticationMethod &&
                  x.Value == AuthenticationMethods.TwoFactorAuthentication);

  }

如果它们不存在,我将它们发送到身份服务器中的2fa控制器,该控制器会提示用户输入2fa代码等。然后,用我在属性中检查的用户声明更新用户声明并将其发送回我的网站

在IdentityServer上我有以下

var claims = user.Claims.Where(c => c.Type != "amr").ToList();
                claims.Add(new Claim(Constants.ClaimTypes.AuthenticationMethod, Constants.AuthenticationMethods.TwoFactorAuthentication));
                claims.Add(new Claim(Constants.AuthenticationMethods.TwoFactorAuthentication, twoFactorProvider));

                if (fullLogin)
                {

                    user.RemoveClaim(user.Claims.First(c => c.Type == "amr"));
                    user.AddClaims(claims);
                    var newIdentity = new ClaimsIdentity(user.Claims);

                    context.Authentication.SignIn(newIdentity);     

                }

然而,我的网站并不是用户新主张的明智之处。

如何在我的属性中进行检查以找到新获得的声明?

0 个答案:

没有答案