Agregar reclamos de roles: ¿debo usar IClaimsTransformer?

Nos gustaría agregar muchos reclamos de roles al director actual (utilizamos elAuthorize(Roles) atributo), y encontré elIClaimsTransformer eso parece un ajuste perfecto.

Lo hemos registrado así

 app.UseClaimsTransformation(new ClaimsTransformationOptions
        {
            Transformer = new GetRolesFromDatabaseClaimsTransformer(new RoleManager2(Configuration.GetConnectionString("ourcoolapp")))
        });

Y la transformación es así:

public Task<ClaimsPrincipal> TransformAsync(ClaimsTransformationContext context)
{
        // A hacky way to not load on all requests. Better ideas?
        if (!context.Context.Request.Path.Value.Contains("api/"))
        {
            return Task.FromResult(context.Principal);
        }

        var roleClaims = RoleManager.GetRolesForUser(context.Principal.Identity.Name).Select(roleName => new Claim("role", roleName));

        var claims = new List<Claim> { };
        var identity = context.Principal.Identity as ClaimsIdentity;
        claims.AddRange(identity.Claims);
        claims.AddRange(roleClaims);

        var userIdentity = new ClaimsIdentity(claims, "local");
        var userPrinicpal = new ClaimsPrincipal(userIdentity);

        return Task.FromResult(userPrinicpal);
}

Pregunta: ¿Existen formas alternativas o más inteligentes de agregar las declaraciones de roles?

Gracias

Larsi

Respuestas a la pregunta(1)

Su respuesta a la pregunta