如何使用 Postman 通过 cookie 身份验证测试 ASP.NET Core Web API?

Chr*_*ith 4 authentication cookies asp.net-mvc postman asp.net-core-webapi

我有一个实现 Cookie 身份验证的 ASP.NET Core MVC Web 应用程序(.NET Core 2.1),如下所示:

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";
});
Run Code Online (Sandbox Code Playgroud)

Web 应用程序还包括一个 Web API,其中客户端 JavaScript 使 Ajax 调用回 Web 服务器。Web API 控制器装饰有 [Authorize]; 要求用户在 Ajax 调用可以访问 Web API 方法之前通过 Web 应用程序登录。

我想使用 Postman(Windows 本机应用程序)在本地主机上运行 Web 应用程序时测试 Web API 调用。登录后如何将身份验证cookie从浏览器复制到Postman?

Chr*_*ith 8

要将 cookie 从浏览器复制到 Postman,您需要使用浏览器的开发工具和 Postman 的管理 Cookie 功能。

  1. 运行并登录到您的 Web 应用程序并打开浏览器的开发人员工具。
  2. 从开发人员工具中,找到 localhost 的 cookie 列表。以 Chrome(版本 73)为例,选择应用程序选项卡并展开存储 > Cookies 选项。
  3. 在 Cookies 选项中,单击您的 localhost Web 应用程序,例如http://localhost:port。这将显示 cookie 列表。
  4. 登录到您的 Web 应用程序后,.AspNetCore.Cookies应该存在一个名为的 cookie 。复制值,即它应该是一长串字符,例如CfDJ8FNwIhImGGFJmGnb...
  5. 从 Postman 创建一个访问您选择的 Web API 方法的请求,并找到该请求的 Cookies 选项。来自 Postman (v7.0.6) 的示例如下: Postman (v7.0.6) Cookies 选项截图

  6. 在管理 Cookies 中,添加一个新的 cookie。来自 Postman (v7.0.6) 的示例如下:

    Postman (v7.0.6) 从 Manage Cookies 截图中添加 Cookie

  7. 占位符值应更新为:

    Cookie_1=值;路径=/;域=本地主机;

    .AspNetCore.Cookies=CfDJ8FNwIhImGGFJmGnb...为简洁起见缩短...; 路径=/;域=本地主机;

  8. 点击发送。响应应该是从 Web API 方法调用返回的数据或错误,而不是登录页面的 HTML。如果是登录页面 HTML,则 cookie 或 cookie 值很可能不正确。