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 Несанкционированное ошибку. Что мне не хватает?

+0

Web API является лицом без гражданства. Он ничего не делает с куки. Если вы хотите использовать '[Authorize]', вы должны пройти аутентификацию с каждым запросом. Теперь, как вы это делаете (передача маркера, передача фактических учетных данных, OAuth и т. Д.) - это другое дело. Этот вопрос может помочь: http://stackoverflow.com/questions/11775594/how-to-secure-an-asp-net-web-api/ –

+0

Неверно, WebAPI может использовать проверку подлинности с помощью форм (которая хранится в зашифрованном файле cookie), как и любое приложение ASP.NET (MVC и WebForms). –

ответ

0

следующие потребности добавлены в web.config:

<system.web> 
    <authentication mode="Forms"> 
    </authentication> 
    <!-- other stuff --> 
<system.web>