繁体   English   中英

IIS Windows身份验证错误(401.1)

[英]IIS windows authentication error (401.1)

我已经将IIS 8.0与PHP 5.3以及SQL Server一起配置。

我不确定出了什么问题。 在浏览器中输入URL时,我可以在网络浏览器中看到JSON字符串,

但是当我将其传递给下面的代码时,它返回了我

IIS 8.0 Detailed Error - 401.2 - Unauthorized

401.2错误页面在我的日食中。

我正在通过Windows身份验证连接到数据库。 因此,我在IIS中设置了启用Windows身份验证。 除了Windows身份验证之外,我无法进行其他任何身份验证,因此在这种情况下,我的JSONstring也完全不会从浏览器返回。

我已经尝试了以下网址中提到的解决方案

http://support.microsoft.com/kb/942043

问题仍然存在

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreProtocolPNames;

public class JSONTester {

    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) 
    {
        InputStream is = null;
        String json = "";

        try 
        {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://localhost/hive/get_all_products.php");
            httpPost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();           

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            System.out.println(e.toString());
        }
        System.out.println(json);
    }
}

任何帮助都会很棒。

谢谢 !!!

确保用于身份验证的帐户具有网站目录中文件的权限。

Internet Explorer是唯一使用现成的集成模式进行NTLM身份验证的浏览器,这就是为什么您的URL在“浏览器”中可用的原因。 您的Java HttpClient必须显式进行身份验证,并应对来自服务器的NTLM挑战。 请参阅HttpClient NTLM身份验证

NTLM是HttpClient支持的最复杂的身份验证协议。 它是Microsoft设计的专有协议,没有公开可用的规范... NTLM身份验证要求NTCredentials实例可用于服务器的域名或默认凭据。 请注意,由于NTLM不使用领域的概念,因此HttpClient使用服务器的域名作为领域的名称。 还要注意,提供给NTCredentials的用户名不应以域开头-即:“ adrian”是正确的,而“ DOMAIN \\ adrian”是不正确的...
HttpClient对NTLMv1(NTLM协议的早期版本)提供了有限的支持。 HttpClient完全不支持NTLMv2

带回家的重要一点是,HttpClient的支持集成身份验证。 您必须提供明确的凭据,由于要求明确提供帐户密码,因此它始终会探查不良做法。 确保您不存储它,而是向用户询问它,这与Firefox在访问请求NTLM挑战的站点时所采用的方法相同。

阅读NTLM身份验证协议和安全支持提供程序以获取更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM