0

基本認証を使用して Spring Security で保護された SOAP Web サービスがあります。

この Web サービスにアクセスする Swing アプリケーションを作成しました。アプリケーションが起動すると、ユーザーが資格情報を入力する場所にログイン ダイアログが表示されます。ユーザーが [ログイン] ボタンをクリックすると、指定された資格情報で JAXWS クライアントが作成されます。また、ログインしているユーザーがログアウトできるようにしたいと考えています。Spring Security は、ログアウトするために URL にアクセスする必要があります。スタンドアロン アプリケーションではどのように機能しますか? これは、CXF を介して行うべきですか、それとも単純な HTTP クライアントを使用して行うべきですか?

4

3 に答える 3

1

セッションを完全に回避し、conn リクエストごとに JAXClient を再認証させます。statelessSpring Security 3.1 から利用可能なsecuity.xml を構成します。

于 2013-01-06T12:34:53.887 に答える
0

わかりました、ステートフルとステートレスについて議論するつもりはありません。Swing アプリからログアウトする必要がある場合は、設定されたログアウト URL に HTTP GET 要求を送信し、セッション ID を送信するだけです。これには Apache HttpClient も必要ありません。

String url = "http://example.com/logout";
String charset = "UTF-8";
String session = ";jsessionid=" + sessionId;
URLConnection connection = new URL(url + session).openConnection();
connection.setRequestProperty("Accept-Charset", charset);
InputStream response = connection.getInputStream();
// ...

詳細については、 https ://stackoverflow.com/a/2793153/131929 (HTTP GET リクエストの発行) を参照してください。

上記のようにセッション ID を URL に直接追加するか、次のように通常の Cookie ヘッダーとして送信することができます。

connection.addRequestProperty("Cookie", "JSESSIONID=" + sessionId);
于 2013-01-06T22:41:28.137 に答える
0

これをどのように実装するかは問題ではありません。唯一の要件は、ログアウト URL への HTTP GET を作成することですが、リクエストにはセッションのセッション ID が含まれている必要があります。そうしないと、Spring は無効にするセッションを認識できません。したがって、現在使用しているクライアントと同じものを使用するのが最も簡単な方法だと思います。

于 2013-01-06T11:30:15.673 に答える