gpt4 book ai didi

java - 如何从 HTTP 基本身份验证中获取密码

转载 作者:IT老高 更新时间:2023-10-28 21:04:35 29 4
gpt4 key购买 nike

我在 Java 中使用 HTTP BASIC 身份验证。

我的 Servlet 发送了一条 JMS 消息,但我需要在创建连接时提供用户和密码来验证自己:

javax.jms.ConnectionFactory.createConnection(String username, String password)

我可以从 HttpServletRequest.getUserPrincipal() 中检索用户名。但似乎没有办法找回密码。我该如何解决?

最佳答案

您所指的密码很可能与用户在登录时提供的密码不同。虽然问题中的用例不清楚,但您似乎正在尝试使用外部用户提供的用户名/密码来创建与 JMS 连接工厂的连接。这对我来说在架构上听起来并不安全。您应该只使用一个凭据连接到需要保护的 ConnectionFactory(将其视为数据库连接)。更好的是使用 JNDI 来查找 ConnectionFactory 并绕过用户名/密码管理的东西。

但是,如果您必须使用该技术,可以使用以下代码块。我从 Gitblit 项目中复制它,因为它在我的 eclipse 中打开了

使用 Java8 Base64 类:

final String authorization = httpRequest.getHeader("Authorization");
if (authorization != null && authorization.toLowerCase().startsWith("basic")) {
// Authorization: Basic base64credentials
String base64Credentials = authorization.substring("Basic".length()).trim();
byte[] credDecoded = Base64.getDecoder().decode(base64Credentials);
String credentials = new String(credDecoded, StandardCharsets.UTF_8);
// credentials = username:password
final String[] values = credentials.split(":", 2);
}

关于java - 如何从 HTTP 基本身份验证中获取密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16000517/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com