【问题标题】:Sending AngularJS http GET authentication?发送 AngularJS http GET 身份验证?
【发布时间】:2017-01-18 16:42:51
【问题描述】:

我从应用程序 http 会话中捕获了一些信息,并试图破译应用程序如何通过身份验证。我尝试了多种方法/组合,但似乎无法弄清楚它们是如何传递凭据的。

捕获:

GET /features HTTP/1.1
user: thisUser@email.com
X-Password: ThisUserPassword
Accept: application/json
Cache-Control: public, max-age=1 max-stale=1
X-NewRelic-ID: VQ4AV1BbGwIIXVFXAwM=
Host: www.blah.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/2.3.0
If-None-Match: "d751713988987e9331980363e24189ce"

HTTP/1.1 304 Not Modified
Status: 304 Not Modified
ETag: "d751713988987e9331980363e24189ce"
Cache-Control: max-age=0, private, must-revalidate
X-UA-Compatible: IE=Edge,chrome=1
X-Runtime: 0.034169
X-NewRelic-App-Data: PxQGWVFVDgsTVVdWBAYBVkYdFHANCBcQXw5UB0oXR1dBE1ACVBIcFgVOXj4LAl9aUzsUEVJDGAABUEJGEAMQQBxSFlIUCBoCAFAMUwRRC1FRAgZZUVMJARxJUE4VBgBVV1QGUFEHAAdSVAFXCBpp
Accept-Ranges: bytes
Date: Wed, 18 Jan 2017 13:55:45 GMT
X-Varnish: 405330697
Age: 0
Via: 1.1 varnish
Connection: close
X-Varnish-Cache: MISS
X-Frame-Options: SAMEORIGIN

我试过这些组合:

var headers = {Authorization:"Basic thisUser@email.com:ThisUserPassowrd"} ;
var headers = {Authorization:"thisUser@email.com:ThisUserPassowrd"} ;
var headers = {Authorization:"Basic user:thisUser@email.com,X-Password:ThisUserPassowrd"} ;
var headers = {Authorization:"user:thisUser@email.com,X-Password:ThisUserPassowrd"} ;

我什至尝试过编码:

  var userCreds = btoa("thisUser@email.com:ThisUserPassowrd") ;
  //
  var headers = {"Authorization": "Basic" + userCreds} ;
  var headers = {"Authorization": userCreds} ;

这是我的 http 调用,我正在换入/换出“基本”和 userCreds/userCreds1 以进行各种测试:

  var userCreds = "thisUser@email.com:ThisUserPassword" ;
  var userCreds1 = btoa(userCreds) ;
  var baseUrl = "https://www.blah.com" ;
  var headers = {"Content-Type":"application/JSON", Authorization: userCreds1} ;
    var req = {  
      method: 'GET',
      url: baseUrl + '/features' ,
      headers: headers
    }
    return $http(req).then(function(response) {

我收到的错误是“UnauthorizedAccess:电子邮件或密码不正确”。我的意思是,它是否也在寻找要传入的实际字段“user”和“X-Password”?

谁能帮我弄清楚这里的正确方法是什么?

【问题讨论】:

    标签: javascript angularjs http-headers authorization


    【解决方案1】:

    我的假设是他们通过后调用(或获取)在 Ajax 调用正文中传递用户凭据。

    用户名/密码。

    如果它是无状态应用程序,它们将返回某种令牌,您必须将其放入 Authorization 标头中。

    您发布的信息不足以帮助您:(

    【讨论】:

    • 请发布帖子/获取登录和响应。
    • 那些不是真正的用户:密码,只是他们去哪里的一个例子。上面的捕获正是应用程序发出呼叫的方式。我已经添加了捕获的 HTTP 响应。我知道这是一个授权格式问题——只是不知道我在哪里。
    • 我的意思是,你向我展示的是一个可能的登录调用的返回,它传递了用户名和密码。然后是您尝试将 Authorization 标头传递给其他调用的一些代码。如果您正在显示一个实际使用 Authorization 标头的调用,会有什么帮助。
    • 我在 Captured HTTP 中看不到任何授权标头 .. 并且发布的是一些尝试使用它的代码.. 所以很难对其进行逆向工程。
    • 对不起...我现在添加了我的 HTTP 调用。
    【解决方案2】:

    我认为错误就在这里

     var userCreds = btoa("thisUser@email.com:ThisUserPassowrd") ;
     var headers = {"Authorization": "Basic" + userCreds} ;
     var headers = {"Authorization": userCreds} ;
    

    你应该在 btoa 之前添加 window 并在 'Basic' 之后添加一个空格

     var userCreds = window.btoa("thisUser@email.com:ThisUserPassowrd") ;
     var headers = {"Authorization": "Basic " + userCreds} ; //Note the space 
     var headers = {"Authorization": userCreds} ;
    

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 2011-12-05
      • 1970-01-01
      • 2015-05-13
      • 2015-09-09
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 2014-01-30
      相关资源
      最近更新 更多