Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不传递用户名和url参数的情况下获取令牌?_Javascript_Wordpress_Rest_Wp Api_Insomnia - Fatal编程技术网

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

Javascript 如何在不传递用户名和url参数的情况下获取令牌?,javascript,wordpress,rest,wp-api,insomnia,Javascript,Wordpress,Rest,Wp Api,Insomnia,为了获得令牌,我发布了以下请求: http://example.com/wordpress/wp-json/jwt-auth/v1/token?username=MYLOGIN&password=MYPASSWORD作为回应,我得到了令牌-这很好,但是。。。如果我不想在请求的URL中显示用户名和登录名,哪怕是一次,该怎么办 任何能看到我的计算机请求的人都可以轻松捕获我的登录名和密码。我是否可以在请求头中而不是url参数中隐藏这些敏感数据?我正在使用“Chrome失眠”应用程序测试REST api

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

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

任何能看到我的计算机请求的人都可以轻松捕获我的登录名和密码。我是否可以在请求头中而不是url参数中隐藏这些敏感数据?我正在使用“Chrome失眠”应用程序测试REST api,在参数和标题旁边有一个AUTH选项卡,我可以在其中键入用户名和密码-也许这就是我可以用来发送用户数据以获取访问令牌而不被轻易看到的地方

我尝试使用“身份验证”选项卡登录,但响应为:

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

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

使用OAuth

这是一种在RESTAPI上授权自己的安全方法,无需以明文形式发送用户名和密码

有一个名为“OAuth身份验证”的部分。API使用OAuth 1.0。基本上,您必须安装OAuth插件,然后生成一个客户端,该客户端自动获得一个密钥和一个秘密。您可以使用此对进行安全身份验证

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

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


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

要回答您最初提出的问题,即如何防止人们在网络中看到您的密码,建议您将敏感数据放在环境变量中,并在请求中引用它

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

{
  "username": "MyUsername",
  "password": "MyPassword"
}
并使用Nunjucks模板语法(如
{{username}}
{{password}}
)在params选项卡(或其他任何地方)中引用它们

这里有一个链接到医生关于失眠的内部


~Gregory

是的,我已经安装了oAuth插件。它提供了一个新的面板来生成客户机密钥和客户机密钥。我应该如何使用这两个来允许任何用户通过Http请求使用其用户名和密码登录?通过客户端我了解外部应用程序,而不是外部用户,我想我不应该向每个用户发布此密钥。我从未在wordpress中使用过它,但每个用户都有可能生成自己的客户端(当他们通过网页登录时)然后使用密钥和密码登录。注意:虽然参数(查询字符串)将被加密,但可能会显示在服务器日志中。为了避免这种情况,将用户名和密码作为POST.Accepted发送。隐藏在HTTPS连接后面是我所需要的,而无需努力配置oAuth重定向进程来登录。哇,我没想到会有这样的答案,但这很有趣。我需要隐藏发送到公共网络的用户凭据,不是在rest客户端应用程序中隐藏,而是在thx中。