Je souhaite ajouter une revendication de rôle à un utilisateur Windows déjà authentifié. Ma première approche naïve consistait à ajouter la revendication de rôle à l'intérieur d'un middleware personnalisé owin qui s'exécute avant WebApi. Comme ceci:Asp.Net WebApi 2: Ajouter une revendication de rôle à WindowsIdentity
public class IdentityMiddleware : OwinMiddleware
{
public IdentityMiddleware(OwinMiddleware next) : base(next)
{
}
public async override Task Invoke(IOwinContext context)
{
var user = context.Request.User as WindowsPrincipal;
var identity = user.Identity as ClaimsIdentity;
identity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));
await Next.Invoke(context);
}
}
Toutefois, lors de la fourniture de l'attribut Autoriser dans le contrôleur comme ceci.
public class TestController : ApiController
{
[Authorize(Roles = "Admin")]
public string Get()
{
return User.Identity.Name;
}
}
..Je recevra un .
J'ai remarqué que l'émetteur de la nouvelle réclamation est «autorité locale» au lieu de «autorité antidumping», est-ce la raison?
Merci, mais il n'y a pas de constructeur pour la AuthorizeAttribute dans System.Web.Http, version = 5.2.3.0 – mode777
Si votre problème n'est pas encore résolu, vous pouvez écrire un attribut d'autorisation personnalisé en héritant de System.Web.Mvc.AuthorizeAttribute et vérifier vos revendications 'manuellement' – Verthosa
C'est exactement ce que j'essayais d'éviter mais j'ai fini par faire de toute façon :) – mode777