java - 在 JavaEE 中对 URLConnection 使用当前用户身份验证

标签 java tomcat jakarta-ee apache-tomee

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

有点像

@get 
@Path("/rest/getInfo)
public String giveMeTheResult(){

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

   return (String) conn.getContent();

}

如何执行 getCurrentuserAuthentication 部分?

谢谢。

最佳答案

因为是basic auth,应该不会太差吧。我还没有这样做,但我认为你可以这样做:

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();
}

但警告 - 这完全未经测试,也没有错误检查!

关于java - 在 JavaEE 中对 URLConnection 使用当前用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36764255/

相关文章:

java - SharedPreferences get 总是返回默认值而不是实际值

java - Tomcat 7.0.12 上 "Error deploying configuration descriptor"的原因

java - 获取 Eclipse 快照依赖的来源

javascript - 如何使用 Watir 单击由 javascript 生成的元素?

java - Glassfish 正在执行另一个项目的代码

java - 如何禁止枚举类型中的某些枚举值到 XML 表示映射?

java - 干净地关闭 JGit

tomcat - 基于 Spring 的 GemFire 客户端可以处理的并发请求数

java - 在 Eclipse 中使用 tomcat Web 应用程序时 user.dir 不正确

java - 为什么 Arrays.asList() 返回自己的 ArrayList 实现