2

私たちは、swing を使用してリッチ GUI クライアントを備えた 3 層アプリケーションをプログラミングしており、認証と承認の制御を追加する必要があります。私はこのトピックにまったく慣れていないので、ウェブで少し調べました。私の最初の意図は、この機能に JAAS を使用することでしたが、私が見る限り、JAAS には特権メソッド/アクションを実行する機能しか含まれていません。 GUI を制御します。たとえば、一部のメニューを非表示/無効にするなど。

私はこれを間違って理解していますか、それとも私のアプローチは間違っていますか? JAAS に代わるものはありますか? GUI アプリケーションに認証と承認を追加するための「ベスト プラクティス」はありますか?

助けてくれてありがとう、エニー

4

3 に答える 3

3

リッチなGUIクライアントは、標準のWebサイトと何ら変わりはありません。どちらもクライアント側であり、潜在的な攻撃者を制御しています。したがって、どのようなセキュリティを考えても、決心した人はそれを破ることができます。UIのボタンを非表示/無効にするという考え方は、セキュリティではなく、使いやすさであることに注意してください。

まず、すべてのボタンをすべてのユーザーに表示しますが、通常の管理ボタンをクリックした場合、サーバーがそれを許可しないことを確認してください。サーバー側の認証を正しく取得したら、UIのボタンを非表示/無効にするシムを追加します。このために、ログインしたユーザーが持っている役割/特権を返すサービスを作成できます。

JAASは、サーバー側の認証に最適なテクノロジーです。サーバーリソースを保護するための多くのドキュメントを見つけることができるはずです。

ユーザーはSwingGUIにログインする必要があり、サーバーによって認証される必要があります。これは最も重要なステップです。サーバーでユーザーを認証しない場合、セキュリティはまったくありません。

その後、ボタンがクリックされるたびに、ユーザーのアクションはサーバーに送られ、サーバーはユーザーに権限があるかどうかを認証します。そうでない場合は、例外をクライアントにスローします。このように、誰かが何らかのトリックでボタンを有効にした場合、サーバーはそれをキャッチします。

于 2010-04-12T18:02:55.260 に答える
0

@sriの回答はいくつかの良い点を示していますが、「セッション識別子/トークンを渡すだけ」というアドバイスは、なりすましが簡単すぎるため危険です。信頼できるソースによって検証された共通のコンテキストを確立する必要があります。org.ietf.jgss.GSSContext詳細はこちらをご覧ください。

GSS コンテキストを機能させるには、キー配布センター (KDC)の概念に触れます。これは通常、Kerberos と通常の何らかのディレクトリ サーバーにつながります。申し訳ありませんが、少しあいまいですが、わかりませんあなたが持っているものだけを特定するのは難しく、それでも私はこれを Active Directory でしか行っていません。

すべてを認証したら、特定の機能を保護するという元のポイントに戻ることができます。

認証プロセスはjavax.security.auth.Subject、1 つ以上java.security.Principalの を含む を提供します。これらのプリンシパルを JAAS で使用して、ここで説明するプリンシパルを使用するポリシー ファイルを作成できます。通常、プリンシパルを使用して、ディレクトリ サーバーからロードされたユーザーのロールを表します。もっと良い方法があるかもしれませんが、過去にログインモジュールをこれに特化させました。

これですべてがロックダウンされたので、最後のステップはユーザーに見栄えを良くすることです。ここでは、私の知る限り、あなたはあなた自身です。すべてを有効のままにして、操作を実行できない場合はユーザーに警告するか、サブジェクトにグループメンバーシップに基づいてより洗練された何かを実行させることができます。

于 2010-04-13T16:33:06.970 に答える
0

JAAS を使用する

JAAS は一般的なフレームワークであり、無効化/有効化ボタンなどのアプリケーション固有の機能は提供しません。その承認ロジックをアプリケーションに埋め込む必要があります。JAAS は、そのようなときに便利な認証済み/承認済みのプリンシパル オブジェクトへのハンドルを提供します。シナリオ。

于 2010-04-13T16:36:07.447 に答える