在JavaEE中使用URLConnection的当前用户身份验证

时间:2016-04-21 08:42:01

标签: java tomcat java-ee tomee

我的用户使用基本身份验证登录我的网站。有什么方法可以使用经过身份验证的用户详细信息,充当URLConnection的身份验证器吗?....

这样的东西
@get 
@Path("/rest/getInfo)
public String giveMeTheResult(){

   URLConnection conn = new URL("/service/info");
  Authenticator.setDefault(getCurrentUserAuthentication());

   return (String) conn.getContent();

}

如何进行getCurrentuserAuthentication部分?

感谢。

1 个答案:

答案 0 :(得分:1)

因为它是基本的认证,所以它不应该太糟糕。我还没有做到这一点,但我认为你可以这样做:

public String giveMeTheResult(@Context HttpServletRequest request){

    String authHeader = request.getHeader("Authorization");
    String[] authChunks = authHeader.split(" ");
    String decodedAuth = new String( Base64.getDecoder().decode(authChunks[1]));
    String[] userInfo = decodedAuth.split(":");
    // user name is userInfo[0], password is userInfo[1]

    // not convinced that this is a good idea because it sets it for all
    Authenticator.setDefault(new PasswordAuthentication(userInfo[0],
                             userInfo[1].toCharArray());

   return (String) conn.getContent();
}

但警告 - 这是完全未经测试的,并且没有错误检查!