0
Сайт авторизуется через отдельную систему. После авторизации пользователя я хочу сохранить некоторую дополнительную информацию с помощью своего файла cookie Auth. Я могу сделать это, используя следующий код.Внешняя аутентификация MVC с атрибутом [Авторизовать]
var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
var serialized = JsonConvert.SerializeObject(accountNumber, Formatting.None, settings);
var authTicket = new FormsAuthenticationTicket(1, "MyAuthTicket", DateTime.Now, DateTime.Now.AddMinutes(15),
false, serialized);
var encTicket = FormsAuthentication.Encrypt(authTicket);
var faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
{
HttpOnly = true,
};
Response.Cookies.Add(faCookie);
Однако, когда я пытаюсь ударить метод WebAPI помеченный [Авторизоваться], я получаю 401 Несанкционированное ошибку. Что мне не хватает?
Web API является лицом без гражданства. Он ничего не делает с куки. Если вы хотите использовать '[Authorize]', вы должны пройти аутентификацию с каждым запросом. Теперь, как вы это делаете (передача маркера, передача фактических учетных данных, OAuth и т. Д.) - это другое дело. Этот вопрос может помочь: http://stackoverflow.com/questions/11775594/how-to-secure-an-asp-net-web-api/ –
Неверно, WebAPI может использовать проверку подлинности с помощью форм (которая хранится в зашифрованном файле cookie), как и любое приложение ASP.NET (MVC и WebForms). –