Acegi セキュリティを使用する JSF Web アプリケーションがあります。スタンドアロンの Java Swing アプリケーションもあります。Swing アプリの機能の 1 つは、ユーザーのホームページをブラウザー ウィンドウにロードすることです。
これを行うために、現在 Commons HttpClient を使用して Web アプリでユーザーを認証しています。
String url = "http://someUrl/j_acegi_security_check";
HttpClient client = new HttpClient();
System.setProperty(trustStoreType, "Windows-ROOT");
PostMethod method = new PostMethod(url);
method.addParameter("j_username", "USERNAME");
method.addParameter("j_password", "PASSWORD");
int statusCode = client.executeMethod(method);
if (statusCode == HttpStatus.SC_MOVED_TEMPORARILY ) {
Header locationHeader= method.getResponseHeader("Location");
String redirectUrl = locationHeader.getValue();
BrowserLauncher launcher = new BrowserLauncher();
launcher.openURLinBrowser(redirectUrl);
}
これは、HTTP 302 リダイレクト応答を返します。そこからリダイレクト URL を取得し、BrowserLauncher 2 を使用して開きます。URL には、次のような新しいセッション ID が含まれています。
http://someUrl/HomePage.jsf;jsessionid=C4FB2F643CE48AC2DE4A8A4C354033D4
私たちが見ている問題は、Acegi がリダイレクトを処理するが、AuthenticationCredentialsNotFoundException をスローすることです。何らかの理由で、認証された資格情報がセキュリティ コンテキストで見つからないようです。
なぜこれが起こっているのか、誰かが考えを持っていますか? 誰かがより多くの情報を必要とする場合、私は喜んで義務付けます.
どうもありがとう、
リチャード