【问题标题】:httpurlconnection with basic authentication long passwords带有基本身份验证长密码的 httpurlconnection
【发布时间】:2013-07-10 16:01:15
【问题描述】:

当我们的密码很长时,我们遇到了 HttpURLConnection + 基本身份验证问题。

示例代码如下:

URL url = new URL("http://localhost/data.json");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod(method);

String authString = clientId + ":" + clientSecret;
BASE64Encoder encoder = new BASE64Encoder();


String authHeader = encoder.encode(authString.getBytes()); 
conn.setRequestProperty("Authorization", authHeader);
conn.setRequestProperty("Accept", "application/json");

我们尝试使用

     String authString = clientId + ":" + clientSecret;
authString = "" + javax.xml.bind.DatatypeConverter.printBase64Binary(authString.getBytes());

但运气不好。

具有特定长度密码的基本身份验证的 HttpURLConnection 可以正常工作,但使用冗长的密码时我们会遇到问题。并且返回的错误码是400

注意:这与 Login with Paypal 集成https://developer.paypal.com/webapps/developer/docs/integration/direct/log-in-with-paypal/detailed/#making-first-call有关

我们的示例代码(由 PayPal 提供)也无法正常工作。

提前谢谢你。

【问题讨论】:

  • 响应是否包含除状态码 400 以外的任何内容?错误响应的正文通常会包含一条消息,提供有关错误的更多详细信息。

标签: java paypal


【解决方案1】:

我遇到的问题是由于用户名、密码太长。

如果我使用下面的代码,它可以正常工作

    byte[] encodedBytes = org.apache.commons.codec.binary.Base64.encodeBase64(passwordString.getBytes("UTF-8"));
    String encodedString = new String(encoded, "UTF-8");

headers.put("授权", "基本" + 编码字符串);

【讨论】:

    【解决方案2】:

    尝试 POST。

    如果您使用本地服务器对此进行测试,请确保它对最大 URL 大小、最大参数长度、最大 POST 标头大小等没有任何限制。检查服务器端日志。

    这可能不是问题,但在“authString.getBytes()”语句中可能存在错误。您正在根据系统默认编码将字符串转换为字节,这取决于 JVM/OS/Locale——您应该将显式编码传递给 getBytes()。

    【讨论】:

      【解决方案3】:

      您应该检查成功的身份验证,即。使用具有请求检查器(即 chrome)或仅使用wireshark 的网络浏览器。

      这样就可以看到向服务器发送了什么样的请求消息。

      从这一点开始,您可以检查您的代码是否提供了相同类型的请求,如果它们不同,您至少可以找出问题所在。

      尽管基本身份验证长度没有规范强制限制,但仍然存在一些依赖于平台的限制,如下所述:Is there a practical HTTP Header length limit?

      希望你觉得它有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-22
        • 1970-01-01
        • 2013-09-05
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 2011-10-24
        • 2017-09-18
        相关资源
        最近更新 更多