如何在不传递用户名和传入url参数的情况下获取token?

How to get token without passing username and pass in url parameters?

为了获得令牌 i post 以下请求:

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

任何能看到我的电脑请求的人都可以轻松获取我的登录名和密码。我可以以某种方式在请求 headers 而不是 url 参数中隐藏此敏感数据吗?我正在使用 "Chrome Insomnia" 应用程序来测试 REST api 并且在 PARAMS 和 HEADERS 旁边有一个 AUTH 选项卡,我可以在其中输入用户名和密码 - 也许这是我可以使用的地方发送用户数据以获取访问令牌而不被蜜蜂轻易看到?

我尝试使用 AUTH 选项卡登录,但响应:

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

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

使用OAuth

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

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

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

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

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

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

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

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

并使用 {{ username }}{{ password }}.

等 Nunjucks 模板语法在参数选项卡(或其他任何地方)中引用它们

这是 Insomnia Environment Variables 上文档的 link。

~格雷戈里