从HttpServletRequest获取UsernamePasswordCredential

时间:2013-09-21 05:52:15

标签: servlets apache-httpclient-4.x

我正在使用Spring SimpleFormController来处理表单提交。当客户端在httpclient中通过httpclient.getState()。setCredentials在抢占式身份验证上设置UsernamePasswordCredentials时,如何在我的“onSubmit”方法中从HttpServletRequest获取服务器端的UsernamePasswordCredential。

1 个答案:

答案 0 :(得分:1)

我们可以从请求中获取'authorization'标头值,并对该值进行Base64解码,以显示如果有人拦截网络通信,则用户名和密码实际上非常容易读取。 (这就是使用HTTPS进行身份验证的一个非常好的主意)。

     try {
        String auth = request.getHeader("Authorization");
        if(auth!=null&&auth.length()>6){
            String userpassEncoded = auth.substring(6);  
            // Decode it, using any base 64 decoder  
            sun.misc.BASE64Decoder dec = new sun.misc.BASE64Decoder();  
            String userpassDecoded= new String(dec.decodeBuffer(userpassEncoded));
            System.out.println(" userpassDecoded = "+userpassDecoded);
         }
       } catch (Exception e) {
        e.printStackTrace();
       }