首页 文章

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

提问于
浏览
2

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

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

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

2 回答

  • 0

    我认为您可以使用“Pre-request 脚本”功能来完成您的需要。

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

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

    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'));
    });
    

    这不是处理受保护端点 pre-authenticating 的最佳方法;而不是发出一个请求,你每次都要做两个。我通常做的是点击 POST /login,在 collection/environment/global 变量中存储我需要的结果,并在我的其他请求中使用这些变量。我使用“two-request”方法作为我需要执行 third-party auth 的情况(类似于我认为你正在尝试做的事情),或者当我 creating/debugging 是需要对每个请求进行身份验证的 API 时。

    如果我离开这里,请在评论中告诉我,我会更新我的 response(s)。

  • 0

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

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

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

    我创建了一个博客文章更多的细节。

相关问题