我的用户使用基本身份验证登录我的网站。有什么方法可以使用经过身份验证的用户详细信息,充当URLConnection的身份验证器吗?....
像
这样的东西@get
@Path("/rest/getInfo)
public String giveMeTheResult(){
URLConnection conn = new URL("/service/info");
Authenticator.setDefault(getCurrentUserAuthentication());
return (String) conn.getContent();
}
如何进行getCurrentuserAuthentication部分?
感谢。
答案 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();
}
但警告 - 这是完全未经测试的,并且没有错误检查!