如何获取令牌而不传递用户名并传入url参数?

时间:2016-06-05 10:44:20

标签: javascript wordpress rest wp-api insomnia

为了获得令牌,我发布了以下请求:

http://example.com/wordpress/wp-json/jwt-auth/v1/token?username=MYLOGIN&password=MYPASSWORD作为回应,我得到令牌 - 这很好,但是......如果我不想显示用户名并登录请求的网址,即使是一次,该怎么办。< / p>

每个可以看到我的计算机请求的人都可以轻松获取我的登录名和密码。我可以以某种方式隐藏请求标头中的敏感数据而不是url参数吗?我正在使用&#34; Chrome Insomnia&#34;用于测试REST API的应用程序以及PARAMS和HEADERS旁边有一个AUTH选项卡,我可以在其中键入用户名和密码 - 也许这是我可以用来发送用户数据以获取访问令牌而不容易看到的地方?

我尝试使用AUTH选项卡登录,但作为回应:

{
    "code": "jwt_auth_bad_auth_header",
    "message": "Authorization header malformed.",
    "data": {
        "status": 403
    }
}

请不要将我发回给wp-api文档,因为我无法通过阅读那里的文档找到明确的答案。

3 个答案:

答案 0 :(得分:1)

使用 OAuth

这是一种在REST-Api上授权自己的安全方式,无需将您的用户名和密码作为纯文本发送。

WP-API documentation有一个名为 OAuth身份验证的部分。 API使用 OAuth 1.0 。基本上你必须安装OAuth-Plugin,然后生成一个 Client ,它会自动获得 Key Secret 。您可以使用此对进行安全身份验证。

您可以在我上面给出的链接中找到更多详细信息,实现起来相当简单。

答案 1 :(得分:1)

要回答关于如何阻止人们在Insomnia中查看密码的原始问题,建议您将敏感数据放入环境变量中并在请求中引用它。

您可以像这样定义您的环境JSON ......

{
  "username": "MyUsername",
  "password": "MyPassword"
}

使用Nunjucks模板语法(如{{ username }}{{ password }})在params标签(或其他任何地方)中引用它们。

这里是Insomnia内Environment Variables文档的链接。

~Gregory

答案 2 :(得分:0)

虽然我同意OAuth(真正的OpenID Connect)是一个更好的解决方案, 使用HTTPS。

由于SSL / TLS是在您发出请求之前执行的,因此它将通过网络加密。