Como obter senha da autenticação básica HTTP

Estou usando HTTP BASIC Authentication com Java.

Meu Servlet envia uma mensagem JMS, mas eu preciso fornecer o usuário e a senha para me autenticar ao criar a conexão:

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

Eu posso recuperar o nome de usuário de HttpServletRequest.getUserPrincipal (). Mas parece não haver maneira de recuperar a senha. Como eu resolvo isso?

A senha que você está se referindo é provavelmente diferente daquela fornecida pelos usuários durante o login. Embora o caso de uso não esteja claro na pergunta, mas parece que você está tentando usar o nome de usuário / senha fornecido por usuários externos para criar uma conexão com o JMS Connection Factory. Isso não parece seguro para mim. Você deve usar apenas uma credencial para conectar-se ao ConnectionFactory que precisa ser protegido (trate-o como conexões db). Melhor é usar o JNDI para procurar ConnectionFactory e ignorar o material de gerenciamento de nome de usuário / senha.

No entanto, no caso de você ter que usar a técnica, pode usar o seguinte bloco de código.Eu estou copiando do projeto Gitblit como foi aberto no meu eclipse

Usando a class 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); } 

O nome de usuário e a senha foram originalmente enviados no header HTTP Authorization (codificado em base64) para que você possa usá-lo; mas se o usuário mantiver uma session usando cookies, eles não necessariamente enviarão esse header a cada vez.