Laravel API调用失败。 PostMan使用Basic Auth覆盖Authorization标头

时间:2017-04-10 08:41:21

标签: php laravel api authentication postman

您正在尝试从Postman调用API 使用的框架是:Laravel

该网站具有浏览器身份验证(使用.htacess)
API具有用户身份验证(Laravel Passport)(用户必须登录)

现在,

我需要调用API并包含两个标题,即

  • 我添加了使用username / pwd作为浏览器凭据的Basic Auth
      
        

    Basic Auth:username / pwd

      
  • 在Headers中我添加了
      
        

    授权:持票人oauthtoken

      

(其中oauthtoken是从API调用https://servername/auth和Basic Auth:username / pwd中获取的密钥)

现在,当我发送API调用时,

授权标题更改为:

  
    

授权:基本some_key

  

因此我得到了未经授权的答复 有什么方法可以一起发送浏览器信用卡和用户身份验证标头吗?

2 个答案:

答案 0 :(得分:0)

在身份验证后检索到的OAuth令牌与Postman附加的用于基本身份验证的令牌不同。

如果您希望在请求中使用OAuth令牌,建议您查看Postman变量并将其存储在其中。

Here is an article that helped me build my Postman collection using JWT

但是其中的某些脚本已过时。

我首先创建一个环境(本地),在其中添加一个密钥来存储值为空的令牌(oauth_token)。

在Postman中的 auth 端点中,您可以检查 Tests 选项卡,在其中可以放置脚本来更新oauth令牌:

pm.test("Logged in successfully", function () {
    var jsonData = pm.response.json();
    pm.environment.set('oauth_token', jsonData.token);
});

此后,您可以将值 {{oauth_token}} 的授权承载添加到使用OAuth令牌的端点。

如果您想了解有关Postman变量的更多信息,这是一篇很棒的文章variables

回顾:

  1. 将用户名和密码发送到身份验证端点
  2. 在第1步返回的Postman变量中存储oauth令牌
  3. 使用{{ VARIABLE_NAME }}表示法将新令牌用作Postman变量

答案 1 :(得分:-1)

我建议使用Guzzle Library

        $http = new \GuzzleHttp\Client;
        $response = $http->request('POST', 'http://quotible.web3box.com/oauth/token', [
            'headers' => [
                //you headers here
            ],
            'form_params'=>[
                //your browser based parameters here
            ]
        ]);