Tag: ntlm

CXF抛出任何政策选择都不能满足

我正在尝试使用CXF为.NET Web服务编写Java客户端,但在调用“client.getConduit()”时,它会抛出exception – org.apache.cxf.ws.policy.PolicyException:不能满足任何策略备选方案。 请帮忙! 这是代码片段 – ServiceClass service = new ServiceClass(); PortClass port = service.getPort(ServiceClass.class); Client client = ClientProxy.getClient(port); HTTPConduit httpConduit = (HTTPConduit) client.getConduit(); final HTTPClientPolicy httpClientPolicy = httpConduit.getClient(); httpClientPolicy.setAllowChunking(false); httpClientPolicy.setAutoRedirect(true); final BindingProvider bindingProvider = (BindingProvider) port; final Map requestContext = bindingProvider.getRequestContext(); final Credentials credentials = new NTCredentials(USERNAME, PASSWORD, “”, DOMAIN); requestContext.put(Credentials.class.getName(), credentials); requestContext.put(AsyncHTTPConduit.USE_ASYNC, […]

如何从具有NTLM身份validation的Java客户端调用基于.Net的Web服务

我想从java客户端代码调用基于.NET的Web服务。 我使用wsimport工具生成了JAX-WS存根。 这是在.NET客户端中创建凭据的方式 – NetworkCredential credential = new NetworkCredential(userName, password, “domain”); client.ClientCredentials.Windows.ClientCredential = credential ; 我们如何在Java Client中类似地执行此操作? 我搜索了很多,发现一些post建议进行NTLM身份validation,但我不知道该怎么做。

使用HttpUrlConnection的NLTM auth失败

我正在尝试使用java.net的HttpUrlConnection对我的Java应用程序中支持NTLM身份validation的服务器进行身份validation。 问题是应用程序无法发送Authenticate响应。 我已将代理连接到http连接,以便通过fiddler路由流量。 在提琴手中,我可以看到正在发送的协商消息,并且收到服务器挑战。 但在此之后,应用程序停止说它有一个401,而没有发送type3身份validation消息。 有任何想法吗? 这是代码 – Authenticator.setDefault(new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(“username”, “password”.toCharArray()); } }); URL url = new URL(“https://service_url.svc”); // Proxy for fiddler Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(“localhost”, 8888)); // Create a connection HttpURLConnection conn = (HttpURLConnection)url.openConnection(proxy); conn.setRequestMethod(“GET”); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); InputStream is = conn.getInputStream(); BufferedReader […]

GSSException:修改了消息流(41)

我正在使用森林架构中的LDAP(所有服务器和我的服务器都是Windows)。 我使用NTLM身份validation绑定到AD。 我有一个JAVA代码,可以对LDAP服务器执行操作。 代码被包装为tomcat servlet。 直接运行JAVA代码(只是作为应用程序执行LDAP身份validation代码)时,绑定对本地域(本地域=我登录到Windows,并与此域的用户运行此进程)和外部域都有效。 当将JAVA代码作为servlet运行时,绑定工作并从一个域validation用户,但如果我尝试从其他域validation用户,则无法正常工作,它将无法工作(仅当我重新启动tomcat时它才会起作用)。 我得到一个例外: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Message stream modified (41))]] 我会提到它是相同的代码,具有相同的配置和相同的krb5文件。 编辑:更多信息: 这是我的代码: public void func(String realm, String kdc) { try { URL configURL = getClass().getResource(“jaas_ntlm_configuration.txt”); System.setProperty(“java.security.auth.login.config”, configURL.toString()); System.setProperty(“java.security.krb5.realm”, realm); System.setProperty(“java.security.krb5.kdc”,kdc); // If the application is run on NT rather than […]

如何使用泽西发送NTLM认证的post请求?

我正在使用Java对Sharepoint 2013进行restapi调用。 如何使用泽西rest客户端连接到sharepoint 2013? 注意:目前我使用的是apache http组件和NTCredentials类 Credentials credentials=new NTCredentials(username, password, workstation, domain); AuthScope authScope=new AuthScope(AuthScope.ANY); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(authScope,credentials); CloseableHttpClient httpclient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); 如何将此采用到Jersey框架?

JAVAMAIL:AUTH NTLM失败了

我尝试使用microsoft Exchange服务器在本地网络中发送带有java的电子邮件 有我的代码: import java.io.UnsupportedEncodingException; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class Main { public static void main(String[] args) { final String username = “username@MyDomain.com”; final String password = “password”; Properties props = new Properties(); props.put(“mail.smtp.auth”, “true”); props.put(“mail.debug”, “true”); props.put(“mail.smtp.host”, “exchange_host.MyDomain.com”); props.put(“mail.smtp.port”, […]

使用SSL加密和NTLM身份validation的HttpClient失败

我正在尝试在使用SSL加密(https)的Sharepoint 2010服务器上执行简单的REST调用,以及NTLM身份validation。 当服务器设置为不需要SSL(仅用于测试,服务器将需要生产中的SSL)时,我的NTLM身份validation和后续REST调用可以正常使用HttpClient。 但是,启用SSL后,身份validation将不再有效。 这是SSL处理的代码(设置为接受所有证书): SSLContext sslContext = SSLContext.getInstance(“TLS”); // set up a TrustManager that trusts everything sslContext.init(null, new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }, new SecureRandom()); SSLSocketFactory sf = new […]

java.io.IOException:服务器返回HTTP响应代码:400表示URL

我正在开发一个线程java应用程序,它命中一个url来发送短信 问题是我在NTLM代理服务器后面,我已经搜索了大部分时间并尝试了许多解决方案,但没有成功应用程序给出标题错误,当我试图打印错误响应时,我发现它的错误页面来自代理服务器 这是击球代码 System.setProperty(“java.net.useSystemProxies”, “true”); System.setProperty(“http.proxyHost”, AUTH_PROXY”); System.setProperty(“http.proxyPort”, AUTH_PROXY_PORT); System.setProperty(“http.proxyUser”, AUTH_USER); System.setProperty(“http.proxyPassword”, AUTH_PASSWORD); Authenticator.setDefault( new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(AUTH_USER, AUTH_PASSWORD.toCharArray()); } } ); URL url = new URL(urlString); HttpURLConnection httpConn =(HttpURLConnection)url.openConnection(); httpConn.setReadTimeout(10000); String resp = getResponse(httpConn); logger.info(“urlString=” + urlString); logger.info(“Response=” + resp); 在这里,我得到了respoonse private String getResponse(HttpURLConnection Conn) throws IOException { […]

使用NTLM到SharePoint的CXF SOAP客户端

我正在使用适用于SharePoint 2007的CXF Framework(版本:2.7.8)编写SOAP客户端。我已经按照联机文档在此处添加了NTLM支持。 我让客户端工作并跟踪HTTP会话显示正在发送NTLM凭据,但是,我仍然收到401 Unauthorized响应。 码: Lists listService = new Lists(); ListsSoap port = listService.getListsSoap(); BindingProvider bp = (BindingProvider) port; bp.getRequestContext().put(“use.async.http.conduit”, Boolean.TRUE); Credentials creds = new NTCredentials(USER, PASS, “”, DOMAIN); bp.getRequestContext().put(Credentials.class.getName(), creds); Client client = ClientProxy.getClient(proxy); HTTPConduit http = (HTTPConduit) client.getConduit(); HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); httpClientPolicy.setConnectionTimeout(36000); httpClientPolicy.setAllowChunking(false); httpClientPolicy.setAutoRedirect(true); http.setClient(httpClientPolicy); // Build request and execute […]

Android:NTLM身份validation,ksoap和持久连接

在使用iOS并处理auth挑战而没有太多学习曲线之后,我发现Windows身份validation在Java / Android中的过程要复杂得多。 我尝试了多种不同的方法,所以在没有太多涉及这些方法的情况下,我会找到一个大部分工作的方法。 我现在正在使用为NTLM创建的类和ksoap为NtlmTransport创建的类 我现在通过以下方式成功进行身份validation: NtlmTransport httpTransport = new NtlmTransport(); httpTransport.setCredentials(serverURL, Login.username, Login.password, deviceIp, “DOMAINNAME”); httpTransport.call(SOAP_ACTION, envelope); 如果你看一下NtlmTransport类,你会看到它从setupNtlm()返回以下头文件: status line HTTP / 1.1 200 OK Setup Cache-Control:private,max-age = 0 设置内容类型:text / html; 字符集= utf-8的 设置服务器:Microsoft-IIS / 8.0 安装X-AspNet-Version:4.0.30319 Setup Persistent-Auth:true 安装X-Powered-By:ASP.NET 设置日期:2013年9月17日星期二20:57:45 GMT 设置内容长度:11549 “Persistent-Auth:true是我现在关注的主要问题。我得到的SoapObjects很好,可以从一个连接中获取我需要的数据,但是一旦我尝试访问网络再次服务,大概能够在成功validation后被击中,我无法使用HttpTransportSE访问不同的方法: private void setSomething() { xml = null; final String […]