19

Java プロジェクトで使用しているセキュリティ フレームワークは何ですか?

Spring Security と Apache Shiro を使用しましたが、どちらも未熟に見えます。

春のセキュリティの欠陥:

  1. パーミッションのネイティブ サポートなし。
  2. Java コードで明示的に使用する機能はありません (必要な場合もあります)。
  3. 従来の (非 AJAX) Web アプリケーションに集中しすぎています。

Apache Shiro の欠陥:

  1. 最終リリースのバグ (Spring 統合の問題など)。
  2. OpenID やその他の広く使用されているテクノロジはサポートされていません。
  3. パフォーマンスの問題が報告されました。

また、両方のドキュメントが不足しています。

実際のプロジェクトのほとんどは、独自のセキュリティ フレームワークを開発しているのではないでしょうか?

4

4 に答える 4

16

Apache Shiroについて:

なぜあなたがしたことをリストしたのかわかりません:

  1. 世界中のすべてのプロジェクトには、間違いなくリリースバグがあります。ただし、ここでの大きな鍵は、Shiroのチームが迅速に対応し、できるだけ早く修正することです。これはフレームワークを評価するものではありません。そうしないと、自分で作成したものも含め、すべてのフレームワークを削除することになります。
  2. OpenIDのサポートは、Shiro1.2でまもなくリリースされます。
  3. どのようなパフォーマンスの問題がありますか?特にShiroのキャッシングサポートは幅広くファーストクラスであるため、パフォーマンスの問題を開発者リストに報告したことありません。説明や参照がなければ、これはFUDとして発生します。
  4. ドキュメントは実際に本当に良いものになっています-私が最近見たオープンソースの中で最高のもののいくつかです(2週間前に作り直されました)。それがあなたにとって不十分である具体的な例はありますか?

お手伝いしたいのですが、あなたの懸念は、参考文献や具体的な例ではサポートされていない一般化です。たぶん、これまで達成できなかった、プロジェクトに必要な特定のことを表すことができますか?

Apache Shiroは、JavaおよびJVM言語のセキュリティフレームワークとして最も柔軟で理解しやすいものであり続けています。

しかし、何よりも、これは誠意を持って意味します。ばかげた時間を費やす予定がない限り、独自のセキュリティフレームワークを作成しないでください。私が今まで見たほとんどすべての会社が、これを自分たちでやろうとすると、惨めに失敗します。「正しく」(そして安全に)するのは本当に難しいです。私を信じてください-8年間書いた後、それは私が絶対に確信していることの1つです:)

とにかく、Shiroユーザーリストに気軽に参加してください。コミュニティはあなたが抱えている問題を喜んで解決してくれることでしょう。あなたは私たちが質問をする人々の世話をし、助けるために最善を尽くしていることがわかります。

HTH!

于 2011-06-05T19:24:53.470 に答える
3

私の現在のプロジェクトは SpringSecurity を使用しており、SpringSecurity の欠陥であるとあなたが主張する 3 つのことすべてを実行する必要があります。

  • プロジェクトは、単純な ROLE を超えたきめ細かなアクセス ルールを実装し、ドメイン オブジェクトの状態、追加の要求パラメーターなどをさまざまに含みます。これらは、MVC コントローラー内で呼び出されるカスタムの「アクセス ポリシー オブジェクト」を使用して実装されます。ただし、アクセス チェックの失敗は、関連する例外をスローすることによって SpringSecurity に返されます。(これらは、標準の SpringSecurity メソッドレベルのインターセプターとして実装できた可能性がありますが、通常、チェックにはドメイン オブジェクトの調査が含まれます。)

  • プロジェクトは、Web アクセスと AJAX アクセスの両方をサポートし、アクセスの失敗を 2 つのケースで異なる方法で処理します。これは、リクエスト URL などに応じて異なる認証動作を選択する、SpringSecurity 用のいくつかのカスタム認証エントリポイント コンポーネントを作成することによって行われます。

つまり、それができる...

そうは言っても、私はいくつかの点であなたに同意します:

  • このようなものを配線するのは簡単ではありません。<http>要素とそれに関連付けられた構成ツールを使用しているときに、障害に遭遇し続けました。たとえば、別のバージョンのコンポーネント X を使用する必要があります。ただし、そのためには、Y、Z、P、および Q も置き換える必要があります。

  • ドキュメントは本当にまばらで、通常とは違うことをしようとしている場合には役に立ちません。

于 2011-06-05T00:59:50.623 に答える
1

アンドレイ、この答えは遅すぎて役に立たないと思います。後でこのスレッドにたどり着いた人を対象としており、お役に立てば幸いです。

私の会社は最近、高度な Java アプリケーション セキュリティ フレームワークであるOACCをオープン ソースとしてリリースしました。OACC は、オブジェクト レベルまでのセキュリティの細分性を必要とするシステム向けに設計されています。

OACC は、許可ベースの許可サービスを提供する高性能 API を提供します。簡単に言えば、OACC は、エンティティ 'A' がエンティティ 'B' に対してアクション 'p' を実行することを許可されていますか?

OACC の重要な抽象化の 1 つはリソースです。リソースは、保護する必要があるアプリケーション ドメイン内のオブジェクトの OACC 内のプレースホルダーとして機能します。アクター (ユーザー、プロセスなど) と保護対象のオブジェクト (ドキュメント、サーバーなど) の両方が、OACC ではリソースとして表されます。アクターである、または保護されているアプリケーション ドメイン オブジェクトは、リソース ID を関連付けられたリソースに格納するだけです。

リソースの抽象化により、OACC は、他の主要なセキュリティ フレームワークとは異なり、リソース間のアクセス許可を管理する豊富な API を提供できます。OACC は、RDBMS テーブルのセキュリティ関係を維持します (現在、DB2、Oracle、MS-SQLServer、および PostgreSQL がサポートされています)。

詳細については、プロジェクトの Web サイトをチェックしてください: http://oaccframework.org

于 2015-04-01T05:30:47.270 に答える
-2

プロジェクトの1つで階層型セキュリティを使用しています。レイヤーは次のとおりです。

  1. プロトコルとしてのHTTPS(Apache-AJCConnectors-TomcatServlets)
  2. クライアントとサーブレット間で転送されるバイナリオブジェクトのみ
  3. 渡されたオブジェクトの個々の要素(いずれかの方法)は暗号化されます
  4. 暗号化キーは動的であり、最初のハンドシェイク中に設定され、1セッションで有効です

概念的には、セキュリティは、暗号化キー、暗号化アルゴリズム、およびそれが適用されるデータで構成されます。通信中に3つのうち1つ以上が同時に渡されないようにします。お役に立てば幸いです。よろしく、-MS

于 2011-06-04T23:19:49.383 に答える