web中如何抓取客户端的域帐号--请教高手 你可以抓用户的机器名来判断request.getRemoteHost() 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可是我想通过抓域帐号的名称来判断,而且我发现人家用.net能实现,我想用JAVA也能实现。 这个可以配置的,属于权限认证这块,你可以将域的认证和项目认证集成,一般情况下可以在jboss中配置,但这个jboss可能需要安装在域管理服务器上,或者有个什么连接,具体的你查下google吧 .NET做不到,除非安装客户端插件。JAVA自身可以用如下代码获得 Map<String, String> map = System.getenv(); String userName = map.get("USERNAME");// 获取用户名 String computerName = map.get("COMPUTERNAME");// 获取计算机名 String userDomain = map.get("USERDOMAIN");// 获取计算机域名 System.out.println(userName); System.out.println(computerName); System.out.println(userDomain);http://www.java2000.net/p3928可是浏览器里面是不能运行这些东西的。没办法。比如我用Firefox.hehe! 可以的,你看tomcat的管理界面需要输入一个用户名/密码,这个可以配置成机器的用户名/密码,其实和你的需求是一样的。不需要程序去获取乱七八糟的东西 你也没必要去抓取,应该是web服务器自动去匹配,然后按照JAAS标准去取用户名 LZ就用applet抓取客户端信息比较好 用如下代码:String auth = request.getHeader("Authorization");if (auth == null){ response.setStatus(response.SC_UNAUTHORIZED); response.setHeader("WWW-Authenticate", "NTLM"); response.flushBuffer(); return;}if (auth.startsWith("NTLM ")){ byte[] msg = new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5)); int off = 0, length, offset; if (msg[8] == 1) { byte z = 0; byte[] msg1 = {(byte)'N', (byte)'T', (byte)'L', (byte)'M', (byte)'S', (byte)'S', (byte)'P', z,(byte)2, z, z, z, z, z, z, z,(byte)40, z, z, z, (byte)1, (byte)130, z, z,z, (byte)2, (byte)2, (byte)2, z, z, z, z, z, z, z, z, z, z, z, z}; response.setHeader("WWW-Authenticate", "NTLM " + new sun.misc.BASE64Encoder().encodeBuffer(msg1)); response.sendError(response.SC_UNAUTHORIZED); return; } else if (msg[8] == 3) { off = 30; length = msg[off+17]*256 + msg[off+16]; offset = msg[off+19]*256 + msg[off+18]; String remoteHost = new String(msg, offset, length); length = msg[off+1]*256 + msg[off]; offset = msg[off+3]*256 + msg[off+2]; String domain = new String(msg, offset, length); length = msg[off+9]*256 + msg[off+8]; offset = msg[off+11]*256 + msg[off+10]; String username = new String(msg, offset, length); out.println("Username:"+username+"<BR>"); out.println("RemoteHost:"+remoteHost+"<BR>"); out.println("Domain:"+domain+"<BR>"); }} 限制字符的“实际长度”…… 实现新浪右下角的广告效果,求代码。 myeclipse 自动提示的问题 用Hibernate生成类的相关问题 如何用java实现简体中文和繁体中文之间的转换 myeclipse5.1+joboss.0 Xdoclet问题。。。。 JMS入门问题 window渲染发生在什么时候 天哪,倒底有没有人可以帮我解决一下啊!?100分 java如何解析CDATA节的数据? 关联表的查询问题(使用Hibernate DAO的findByExample()方法) 基于xmpp协议的smack实现的聊天客户端
可是我想通过抓域帐号的名称来判断,而且我发现人家用.net能实现,我想用JAVA也能实现。
Map<String, String> map = System.getenv();
String userName = map.get("USERNAME");// 获取用户名
String computerName = map.get("COMPUTERNAME");// 获取计算机名
String userDomain = map.get("USERDOMAIN");// 获取计算机域名
System.out.println(userName);
System.out.println(computerName);
System.out.println(userDomain);
http://www.java2000.net/p3928可是浏览器里面是不能运行这些东西的。没办法。比如我用Firefox.hehe!
不需要程序去获取乱七八糟的东西
if (auth == null)
{
response.setStatus(response.SC_UNAUTHORIZED);
response.setHeader("WWW-Authenticate", "NTLM");
response.flushBuffer();
return;
}
if (auth.startsWith("NTLM "))
{
byte[] msg = new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5));
int off = 0, length, offset;
if (msg[8] == 1)
{
byte z = 0;
byte[] msg1 = {(byte)'N', (byte)'T', (byte)'L', (byte)'M', (byte)'S', (byte)'S', (byte)'P',
z,(byte)2, z, z, z, z, z, z, z,(byte)40, z, z, z,
(byte)1, (byte)130, z, z,z, (byte)2, (byte)2,
(byte)2, z, z, z, z, z, z, z, z, z, z, z, z};
response.setHeader("WWW-Authenticate", "NTLM " +
new sun.misc.BASE64Encoder().encodeBuffer(msg1));
response.sendError(response.SC_UNAUTHORIZED);
return;
}
else if (msg[8] == 3)
{
off = 30; length = msg[off+17]*256 + msg[off+16];
offset = msg[off+19]*256 + msg[off+18];
String remoteHost = new String(msg, offset, length); length = msg[off+1]*256 + msg[off];
offset = msg[off+3]*256 + msg[off+2];
String domain = new String(msg, offset, length); length = msg[off+9]*256 + msg[off+8];
offset = msg[off+11]*256 + msg[off+10];
String username = new String(msg, offset, length); out.println("Username:"+username+"<BR>");
out.println("RemoteHost:"+remoteHost+"<BR>");
out.println("Domain:"+domain+"<BR>");
}
}