Как протестировать ASP.NET Core Web API с помощью cookie-аутентификации с помощью Postman? - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть веб-приложение ASP.NET Core MVC (.NET Core 2.1), которое реализует проверку подлинности cookie следующим образом:

services.AddAuthentication(options => {
    options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddCookie(options => {
    options.LoginPath = "/account/login";
    options.LogoutPath = "/account/logout";
});

Веб-приложение также включает в себя веб-API, где клиентский JavaScript заставляет Ajax перезванивать веб-серверу. Контроллеры веб-API украшены [Authorize]; требование пользователя войти в систему через веб-приложение, прежде чем вызовы Ajax смогут получить доступ к методам веб-API.

Я хочу использовать Postman (собственное приложение Windows) для проверки вызовов веб-API при запуске веб-приложения на локальном хосте. Как скопировать файлы cookie для аутентификации в Postman из браузера после входа в систему?

Ответы [ 2 ]

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

Это не так, как работает аутентификация с API. Вам нужно отправить заголовок Authorization с каким-то токеном. Обычно у вас есть централизованный поставщик удостоверений, который может обрабатывать несколько схем аутентификации. Веб-приложение будет на самом деле аутентифицироваться с этим поставщиком удостоверений через учетные данные клиента и запрашивать область API. Затем вам будет предоставлен токен, который разрешает этому веб-приложению работать с запрошенным API. Вы передаете токен в заголовке Authorization вместе со своими запросами, а затем API проверяет токен у провайдера идентификации, чтобы убедиться, что это действительный токен, предоставляющий доступ. Описанным выше поставщиком удостоверений может быть IdentityServer или размещенное решение, такое как Auth0 или Azure AD.

В любом случае, вы не авторизуетесь через cookie. Файлы cookie предназначены для веб-приложений. API не имеют состояния и поэтому не имеют куки. Файл cookie, передаваемый из веб-приложения в браузер, в любом случае не будет работать для API, поскольку это не одно и то же.

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

Чтобы скопировать файлы cookie из браузера в Postman, вам необходимо использовать инструменты разработчика браузера и функцию управления файлами cookie Postman.

  1. Запустить и войти в свое веб-приложение и открыть Инструменты разработчика браузера..
  2. В инструментах разработчика найдите список файлов cookie для localhost.Используя Chrome (версия 73) в качестве примера, выберите вкладку «Приложение» и разверните опцию «Хранилище> Файлы cookie».
  3. В разделе «Файлы cookie» выберите веб-приложение localhost, например http://localhost:port..список файлов cookie.
  4. После входа в веб-приложение должен присутствовать файл cookie с именем .AspNetCore.Cookies.Скопируйте значение, т. Е. Оно должно быть длинной строкой символов, например CfDJ8FNwIhImGGFJmGnb...
  5. . В Postman создайте запрос для доступа к выбранному вами методу веб-API и найдите для него параметр Cookies.Пример из Почтальона (v7.0.6) ниже: Postman (v7.0.6) Cookies option screenshot

  6. В разделе «Управление файлами cookie» добавьте новый файл cookie.Пример из Почтальона (v7.0.6) ниже:

    Postman (v7.0.6) Adding Cookie from Manage Cookies screenshot

  7. Значение заполнителя должно быть обновлено с:

    Cookie_1 =значение;Путь = /;домен = localhost;

    до

    .AspNetCore.Cookies = CfDJ8FNwIhImGGFJmGnb ... сокращено для краткости ...;Путь = /;домен = localhost;

  8. Нажмите отправить.Ответом должны быть данные или ошибка, возвращаемые вызовом метода веб-API, а не HTML-код вашей страницы входа.Если это HTML-код страницы входа, то значение cookie или значение cookie, скорее всего, неверно.

...