Как получить имя пользователя Windows через интернет-браузер, используя Java / JSP или javascript? - PullRequest
2 голосов
/ 30 августа 2011

Я хочу получить Windows имя пользователя, просматривающего мою веб-страницу (это для внутренней сети). Это должно работать на IE8 , Chrome и Firefox (Safari будет плюсом).


Я сталкивался с этим решением для Java :

http://www.ioplex.com/: Jespa - интеграция Java Active Directory

Но это проприетарная библиотека программного обеспечения *1022*, и даже приведенный ими пример не работает с моим веб-приложением, поскольку мы не используем веб-сервер Apache.

Решение на Java было бы идеальным, если бы кто-нибудь что-то получил?


Кажется, есть какое-то решение в javascript : Как получить имя пользователя Windows, используя JavaScript в браузере Google Chrome для расширения Google Chrome

Но об IE8 ничего не сказано, и решение Chrome кажется довольно трудоемким.


Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 13 апреля 2016

вы можете использовать ниже три файла, чтобы получить имя пользователя Windows в сеанс JSP.

1.user1.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>    
<script>
var myWindow;    
function openWin() {
    myWindow =window.open("http://cmtech9:8080/WinUser/GetUser.jsp","Login","height=50,width=150");
    setTimeout(function(){ myWindow.close() }, 3000);    
}   

</script>
<body onload="openWin();">
</body>
</html>

2.user.js это открывает вкладку и автоматически закрывает вкладку

function testing() {    
        window.setTimeOut("window.close();",1000)
}

3.GetUser.jsp

<%@ page import="sun.misc.BASE64Encoder" %>
<%@ page import="java.util.regex.Matcher"%>
<%@ page import="java.util.regex.Pattern"%>
<head>
 <script type="text/javascript" src="user.js"></script>
    <script type="text/javascript">
       testing()
    </script>
</head>
<p><h4>Network Windows USERNAME without any login (ie)</h4></p>
 <body > 
<%
HttpSession sess = request.getSession(); 

String auth = request.getHeader("Authorization");
if (auth == null) {
        response.setStatus(response.SC_UNAUTHORIZED);
        response.setHeader("WWW-Authenticate", "NTLM");
        return;
}
if (auth.startsWith("NTLM ")) { 
        byte[] msg = 
           new sun.misc.BASE64Decoder().decodeBuffer(auth.substring(5));
        int off = 0, length, offset;
        String s;

        if (msg[8] == 1) { 
            off = 18;

            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.setStatus(response.SC_UNAUTHORIZED);
            response.setHeader("WWW-Authenticate", "NTLM " 
               + new sun.misc.BASE64Encoder().encodeBuffer(msg1).trim());
            return;
        } 
        else if (msg[8] == 3) { 
                off = 30;
                length = msg[off+17]*256 + msg[off+16];
                offset = msg[off+19]*256 + msg[off+18];
                s = new String(msg, offset, length);
                //out.println(s + " ");
        } 
        else
                return;

        length = msg[off+1]*256 + msg[off];
        offset = msg[off+3]*256 + msg[off+2];
        s = new String(msg, offset, length);
        //out.println(s + " ");
        length = msg[off+9]*256 + msg[off+8];
        offset = msg[off+11]*256 + msg[off+10];
        s = new String(msg, offset, length);
        sess.setAttribute("username", s);
        out.println("Hello  <span style='position:relative; width:190;" 
            + " height:10;filter:glow(Color=#009966,Strength=1)'>");
        out.println(s + "</SPAN>");         

        String result=s.replaceAll("\\W", "");       
        System.out.println(result);//+""+result.length());        
       /* System.out.print(n.length()); */
        }
%>
</body>
2 голосов
/ 30 августа 2011

ноно ... Это Firefox.Firefox дает вам смехотворное количество контроля над браузером и даже вне браузера.Вы не сможете сделать это в Chrome, потому что это песочница.Google Chrome не предоставляет API для доступа к чему-либо вне браузера.

Вы МОЖЕТЕ сделать плагин NPAPI, но это все.Когда плагин NPAPI запускается, он запрашивает у пользователя неограниченный доступ к плагину, что является подозрительным для большинства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...