C # - Как добавить заявки пользователей / роли из JWT на веб-API 2 - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь настроить авторизацию клиента в моем приложении.Моя конечная цель - сделать HTTP-запрос к API, который вернет список заявок для данного пользователя.К сожалению, я не могу понять, как добавить утверждения к Идентификации претензий.

Вот что я пытаюсь сделать в Global.asax:

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
    if (HttpContext.Current.User != null)
    {
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            var claimsIdentity = (ClaimsIdentity)HttpContext.Current.User.Identity;
            var identity = new ClaimsIdentity(claimsIdentity);
            identity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));
        }
    }
}

Затем в моем контроллере:

[HttpGet]
[Route("test")]
[Authorize(Roles = ("Admin"))]
public IHttpActionResult GetClaims()
{
    return Ok("Success");
}

И, наконец, это ответ 401 - Unauthorized:

{
    "message": "Authorization has been denied for this request."
}

Есть предложения?

1 Ответ

0 голосов
/ 24 апреля 2019

Я думаю, вам нужно добавить личность в текущую учетную запись:

var userNameClaim = new Claim(ClaimTypes.Name, appID);

var identity = new ClaimsIdentity(new[] { userNameClaim }, "Admin");

var principal = new ClaimsPrincipal(identity);

Thread.CurrentPrincipal = principal;

if (System.Web.HttpContext.Current != null)
{
    System.Web.HttpContext.Current.User = principal;
}
...