Проверка подлинности токена Web Api JWT - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь создать и использовать токен jwt.Токен успешно сгенерирован, но с использованием этого токена для запроса POST отображается неавторизованная ошибка.

Мой файл startup.cs выглядит следующим образом:

public void Configuration(IAppBuilder app)
{
    ConfigureAuth(app);
}

public void ConfigureAuth(IAppBuilder app)
{

    var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(ConfigurationManager.AppSettings["JWTTokenKey"]));

    var signInCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature);

    app.UseJwtBearerAuthentication(
        new JwtBearerAuthenticationOptions
        {
            //AuthenticationMode = AuthenticationMode.Active,
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidAudience = ConfigurationManager.AppSettings["Application"],
                ValidIssuer = ConfigurationManager.AppSettings["Application"],
                IssuerSigningKey = key
            }
        });
}

LoginController

public class LoginController : ApiController
{
    [HttpPost]
    [Route("api/v1/Login/Signin")]
    public IHttpActionResult Signin([FromBody] LoginModel login)
    {
        var claims = new[] { new Claim("UserName", login.UserName) };
        var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(ConfigurationManager.AppSettings["JWTTokenKey"]));
        var signInCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature);
        var jwt = new JwtSecurityToken(
                issuer: ConfigurationManager.AppSettings["Application"],
                audience: ConfigurationManager.AppSettings["Application"],
                expires: DateTime.Now.AddMinutes(5),
                claims: claims,
                signingCredentials: signInCredentials
            );
        var token = new JwtSecurityTokenHandler().WriteToken(jwt);
        return Json(new
        {
            access_token = token,
            expires = Convert.ToString(jwt.ValidTo)
        });
    }

    [Authorize]
    [HttpPost]
    public int Register(int id)
    {
        return 1;
    }

    [HttpPost]
    public void TestPost([FromBody]string value)
    {
    }

    public class LoginModel
    {
        public string UserName { get; set; }
        public string Password { get; set; }
    }
}

Как я могу вызвать метод Register в LoginController с созданным токеном jwt.Заранее спасибо.

...