Я пытаюсь создать и использовать токен 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.Заранее спасибо.