3

(Java メトロ) Web サービスをログインで保護したいと考えています。

これが私がそれを行うことを計画している方法です:

Web サービス メソッドを呼び出すときに必要な手順は次のとおりです。

  1. login(user,pwd) を呼び出し、セッション トークンを受け取る 1.1 トークンを記憶する
  2. サービスメソッドを呼び出す (トークン、引数 1、引数 2...)
  3. webservice は、トークンが既知であるかどうかをチェックし、そうでない場合は例外をスローし、それ以外の場合は続行します
  4. 非アクティブ状態が x 時間続いた後のログアウトまたはタイムアウト

私の質問: 1. このアプローチについてどう思いますか? それは理にかなっていますか?2.セッション処理を書く負担を負うライブラリはありますか(アプリの再起動後も存続するためにデータベースの永続性を備えている可能性があります)

(ソリューションはシンプルで、Java および .NET クライアントで簡単に使用できる必要があります)

ありがとう!

4

3 に答える 3

1

これを最初から自分で実装することにすぐに飛びつかないでください。多くの J2EE コンテナー/Java フレームワークは、ログイン/アクセス制御をサポートしています。現在使用しているフレームワークのドキュメントを参照してください。

もう 1 つの簡単な方法は、フロントエンド Web サーバーにアクセス制御を実装することです。たとえば、Tomcat のリバース プロキシとして機能する Apache HTTPD。

于 2010-03-31T07:58:35.230 に答える
1

これは実現可能であり、同様のアプローチを使用する Web サービスを見てきました。しかし、私は独自のカスタム ソリューションを実装しません。代わりに、WS-Security 仕様のセキュリティ トークン、より正確にはユーザー名トークンを使用します (これは、Metro の一部であり、.NET クライアントと相互運用できるWSITから取得します)。紹介はこちらの記事を参考にしてください。

更新:その他のポインタ:

WS-Security がとても使いやすいとは言えませんが、私の経験では、カスタム ソリューションを実装するよりも WS-Security を使用する方が時間がかからず、より安全で、より適切に拡張できます (呼び出しごとにデータベースをチェックするにはコストがかかります)。 )。

編集:

最初の 2 つのリンクが死んでいたため、修正しました。3 番目の 1 つを見つけることができませんでしたが、2 番目はそれをカバーする必要があると思います。

于 2010-03-31T08:16:42.443 に答える
0

Apache Shiroを試してみることを考えましたが、それが良いかどうかはわかりません。良さそうだけど。

于 2010-04-11T21:11:58.160 に答える