邮递员:如何对使用Google OAuth2的webapp进行身份验证?

时间:2017-12-07 14:53:29

标签: postman google-oauth2 web-api-testing

我有一个使用Google OAuth2来保护安全的网络应用。我需要通过邮递员测试许多API端点,但它们需要用户使用google进行身份验证。

当我访问某些API时,请说localhost:8080/user,如果用户未经过身份验证,则网络应用会重定向到Google登录页面,并在身份验证后发送结果。否则,如果用户已经过身份验证,则只会发回结果。我还可以使用localhost:8080/login显式登录用户(登录按钮在主页上执行的操作)。这适用于浏览器,但它不适用于邮递员。

我如何在邮差中做同样的事情?尝试访问API会返回google登录页面,但无法提供凭据(用户名,密码和OTP)。有没有办法使用localhost:8080/login端点登录?

2 个答案:

答案 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,其中包含更多细节。