.NET Core 3.0 ClaimsTransformation - PullRequest
       24

.NET Core 3.0 ClaimsTransformation

1 голос
/ 21 октября 2019

Ранее в .NET Framework я использовал настраиваемую RoleProvider вместе с проверкой подлинности Windows для доставки настраиваемых ролей по отношению к текущему принципалу, а не по группам Active Directory.

Итак, цель состоит в том, чтобы иметь возможность использоватьдекоративный атрибут [Authorize(Roles="")], в котором роли берутся из базы данных, а не из активного каталога (или их комбинация подойдет).

Чтобы достичь этого в основном, я считаю, что мне нужно использовать IClaimsTransformation для назначения заявок на роли, как обсуждено здесь .

Здесь я просто пытаюсь добавить одну роль "Администратор", однако, когда я использую [Authorize(Roles = "Admin")], я получаю 403 Несанкционированный ответ.

Startup.cs

services.AddRazorPages();
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddSingleton<IClaimsTransformation, ClaimsTransformer>();
-------
app.UseAuthorization();

ClaimsTransformer.cs

    public class ClaimsTransformer : IClaimsTransformation
    {
        public async Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
        {
            var identity = (ClaimsIdentity)principal.Identity;
            var c = new Claim(identity.RoleClaimType, "Admin");
            identity.AddClaim(c);
            return await Task.FromResult(principal);
        }
    }

К сожалению, это работает, когда я звоню User.IsInRole(), и я вижу группу, когда проверяю заявкипоэтому он добавляется, однако не работает с атрибутом Authorize. Любой совет будет оценен.

...