为了账号安全,请及时绑定邮箱和手机立即绑定

Windows Authentication Asp.net core 2 数据库角色授权

Windows Authentication Asp.net core 2 数据库角色授权

C#
POPMUISE 2021-07-27 21:00:39
我正在开发一个将使用 Asp.Net Core 2.1 和 Windows 身份验证的 Intranet 应用程序。我从 IIS 获得通过就好了,但我想使用存储在数据库中的角色进行授权。我有一个 IClaimsTransformeration 类,它根据 LAN Id 从数据库中获取角色,并使用角色键将它们添加到声明列表中。public class MyClaimsTransformer : IClaimsTransformation{    private readonly IUnitOfWorkMtuSecurity _unitOfWork;    public MyClaimsTransformer(IUnitOfWorkMtuSecurity unitOfWork)    {        _unitOfWork = unitOfWork;    }    // Each time HttpContext.AuthenticateAsync() or HttpContext.SignInAsync(...) is called the claims transformer is invoked. So this might be invoked multiple times.     public async Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)    {        var identity = principal.Identities.FirstOrDefault(x => x.IsAuthenticated);        if (identity == null) return principal;        //var user = await _userManager.GetUserAsync(principal);        var user = identity.Name;        if (user == null) return principal;        //Get user with roles from repository.        var dbUser = _unitOfWork.UserInformations.GetUserWithRoles(user);        // Inject DbRoles into Claims list        foreach (var role in dbUser.UserInformationUserRoles.Select((r=>r.UserRole)))        {            var claim = new Claim(ClaimTypes.Role, role.Name);            identity.AddClaim(claim);        }        return new ClaimsPrincipal(identity);    }  }我在 startup.cs 中将 IClaimsTransformation 添加到我的服务中services.AddScoped<IClaimsTransformation, MyClaimsTransformer>();然后我将属性添加到我的控制器[Authorize(Roles = "Administrator")]当我运行我的应用程序时,出现以下错误:处理请求时发生未处理的异常。InvalidOperationException: 未指定 authenticationScheme,也未找到 DefaultForbidScheme。Microsoft.AspNetCore.Authentication.AuthenticationService.ForbidAsync(HttpContext 上下文、字符串方案、AuthenticationProperties 属性)在startup.cs中,我将以下内容添加到服务中services.AddAuthentication(IISDefaults.AuthenticationScheme);这消除了错误,但无论如何我都会收到 403 错误。您无权查看此页面。HTTP 错误 403当我查看 MyClaimsTransformer 的返回值时,我可以看到管理员角色已添加到声明列表中,但无论如何我都会收到 403 错误。有没有人对我缺少的东西有什么建议?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 185 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信