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

问题描述 投票:1回答:2

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

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

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

postman google-oauth2 web-api-testing
2个回答
0
投票

我认为您可以使用“预请求脚本”功能来完成您的需要。

假设可以访问POST /登录,并且您能够存储经过身份验证的会话的会话数据,则可以使用“预请求脚本”功能在每个请求之前执行身份验证。 (这可以在集合级别或请求级别完成。)

以下是我在一些需要身份验证的端点上所做的示例...

const loginRequest = {
    url: "http://localhost:1337/login",
    method: "POST",
    body: {
        mode: "raw",
        raw: JSON.stringify({
            email: '[email protected]',
            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时每个请求的身份验证。

如果我离开这里,请在评论中告诉我,我会更新我的回复。


0
投票

可以使用选择OAuth2作为auth选项时显示的“获取新访问令牌”选项。

选择此选项后,添加相关详细信息,与应用程序中的相关内容相同。现在,单击请求令牌应显示一个简单的浏览器,如窗口,其中将显示OAuth提供程序登录页面。

登录后,Postman会保存令牌,然后可以将其用于进一步的请求。

我已经创建了一个更多细节的blog post

© www.soinside.com 2019 - 2024. All rights reserved.