Hvordan får man Windows-brugernavn via internetbrowser ved hjælp af Java/JSP eller javascript?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne få brugernavnet Windows til brugeren at browse min webside (dette er til intranet). Dette skal arbejde på IE8 , Chrome og Firefox (Safari ville være et plus).





Jeg stødte på denne løsning for Java :


http://www.ioplex.com/: Jespa - Java Active Directory Integration [4]


Men dette er et proprietært softwarebibliotek, og selv det eksempel, de giver, virker ikke på min webapplikation, fordi vi ikke bruger en Apache webserver.


En løsning i Java ville være ideel, hvis nogen fik noget?





Der synes at være en slags løsning i javascript :
Sådan får du Windows-brugernavnet ved hjælp af javascript i Google Chrome-browseren til Google Chrome-udvidelse


Men der er ikke sagt noget om IE8, og Chrome-løsningen virker lidt arbejde.





Tak på forhånd

Bedste reference


Du kan bruge under tre filer for at få Windows-brugernavnet til JSP-session.


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
 dette åbner fanen og automatisk lukker fanen


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>

Andre referencer 1


nono ... Det er Firefox. Firefox giver dig en latterlig mængde kontrol over browseren og endda uden for browseren. Du vil ikke kunne gøre det i krom, fordi det er sandboxet. Google Chrome leverer ikke API for at få adgang til noget uden for browseren.


du kan lave et NPAPI-plugin, men det handler om det.
Når NPAPI-plugin-kørslen kører, spørger brugeren om ubegrænset adgang fra plugin'et, som er meget mistænkt for de fleste.