あなたが参照しているパスワードは、ログイン中にユーザーが提供したパスワードとはおそらく異なるでしょう。ユースケースは質問からは明らかではありませんが、外部ユーザーが提供するユーザー名/パスワードを使用してJMS接続ファクトリへの接続を作成しようとしているようです。これは構造的に私に安全だとは言えません。保護が必要なConnectionFactoryへの接続には、1つの資格証明のみを使用する必要があります(db接続のように扱います)。 JNDIを使用してConnectionFactoryを検索し、ユーザー名/パスワード管理の項目をバイパスする方が良いでしょう。
しかし、あなたが技術を使用しなければならない場合に、次のコードblock.Iを使用することができ、それはJava8のBase64クラスを使用して、私の日食で
開いていたとしてGitblitプロジェクトからそれをコピーしています:
final String authorization = httpRequest.getHeader("Authorization");
if (authorization != null && authorization.startsWith("Basic")) {
// Authorization: Basic base64credentials
String base64Credentials = authorization.substring("Basic".length()).trim();
String credentials = new String(Base64.getDecoder().decode(base64Credentials),
Charset.forName("UTF-8"));
// credentials = username:password
final String[] values = credentials.split(":",2);
あなたはアーキテクチャについて正しいです。私はそのアプローチを断念し、信任されていないjavax.jms.ConnectionFactory.createConnection()のアプローチを採用しました。 –
ありがとうございます。それはうまくいったが、うまくいった。しかし、あなたは静的クラスとして 'Base64'を呼び出すことはできません。私はした: Base64 b = new Base64(); \t \t \t文字列資格=新しい文字列(b.decode(base64Credentials)、Charset.forName( "UTF-8")); – iankits
@iankits Java 8のセマンティクスは若干異なります。 –