我有一个使用Google OAuth2来保护安全的网络应用。我需要通过邮递员测试许多API端点,但它们需要用户使用google进行身份验证。
当我访问某些API时,请说localhost:8080/user
,如果用户未经过身份验证,则网络应用会重定向到Google登录页面,并在身份验证后发送结果。否则,如果用户已经过身份验证,则只会发回结果。我还可以使用localhost:8080/login
显式登录用户(登录按钮在主页上执行的操作)。这适用于浏览器,但它不适用于邮递员。
我如何在邮差中做同样的事情?尝试访问API会返回google登录页面,但无法提供凭据(用户名,密码和OTP)。有没有办法使用localhost:8080/login
端点登录?
答案 0 :(得分:0)
我认为您可以使用“预请求脚本”功能来完成您的需要。
假设可以访问POST /登录,并且您能够存储经过身份验证的会话的会话数据,则可以使用“预请求脚本”功能在每个请求之前执行身份验证。 (这可以在集合级别或请求级别完成。)
以下是我在一些需要身份验证的端点上执行操作的示例...
const loginRequest = {
url: "http://localhost:1337/login",
method: "POST",
body: {
mode: "raw",
raw: JSON.stringify({
email: 'user@domain.com',
password: 'so much security goin on here.'
})
}
};
pm.sendRequest(loginRequest, function (err, response) {
const responseJSON = response.json();
pm.environment.set('jwt_token', responseJSON.token);
console.log(err ? err : pm.environment.get('jwt_token'));
});
这不是处理受保护端点的预身份验证的最佳方法;而不是发出一个请求,你每次都要做两个。我通常做的是点击POST /登录,将我需要的结果存储在集合/环境/全局变量中,并在我的其他请求中使用这些变量。我使用“双请求”方法作为黑客,我需要执行第三方身份验证(类似于我认为你正在尝试做的事情),或者当我创建/调试需要的API时对每个请求进行身份验证。
如果我离开这里,请在评论中告诉我,我会更新我的回复。
答案 1 :(得分:0)
可以使用"获取新的访问令牌"选择OAuth2作为auth选项时显示的选项。
选择此选项后,添加相关详细信息,与应用程序中的相关内容相同。点击请求令牌现在应该显示一个简单的浏览器,如窗口,其中将显示OAuth提供程序登录页面。
登录后,Postman会保存令牌,然后可以将其用于进一步的请求。
我创建了一个blog post,其中包含更多细节。