問題タブ [shiro]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
grails - 私のプロジェクトで Grails の Shiro Security を実装する方法
私は Grails を初めて使用し、Shiro セキュリティを使用しています。ログインページのある小さなサイトを作成しました。ログインに成功すると、別のログインページにリダイレクトされます。
今、Shiro Security を実装したいと思います。そのプラグインと Shiro のクイック スタート アプリを新しい Grails プロジェクトで実行しました。
私が達成したいのは、クイック スタート ファイルとコードを使用して自分のページにセキュリティを実装するにはどうすればよいかということです。ガイドしてください。少し。そのクイックスタートからどのファイルを使用する必要があり、どのような変更を行う必要がありますか。?
肯定的な反応を待っています:)
java - ハッシュ化されたパスワードとソルト化されたパスワードは常に同じとは限りません
Spring アプリのセキュリティ レイヤーとして Apache Shiro を使用していますが、非常に奇妙な状況に遭遇しています。
まず、これが私のセキュリティシステムのセットアップ方法です。ユーザーが登録すると、パスワードは安全に生成されたランダム ソルトでハッシュされます。ソルトとハッシュ化されたパスワードは、DB に保存されます。登録するとすべてが 100% 機能し、ログインも問題なく機能しますが、数日が経過すると、ハッシュ化されたパスワードが突然一致しなくなります。これが私のコードです:
結果のハッシュされたパスワードは次のとおりです。
しかし、データベースにあるパスワードは機能しており、数日前にまったく同じソルトで生成されました。
ご想像のとおり、私は完全に困惑しています。私が何か間違ったことをしているかどうかは誰にも分かりますか? または、一歩外に出た場合。
更新 1: システムに新しいユーザーを登録した後、何らかの理由でシステム内の他のすべてのユーザーのパスワードが変更されたようです。したがって、これはパスワード ハッシュが生成される方法とは関係なく、データベース アクセス レイヤーと関係があります。
guice - Google Guice サーブレットを使用した Apache Shiro の構成
Spring/Spring Security の代わりに Guice/Shiro を使い始めています。Shiro のサイトから例を見てきましたが、すべての構成例は INI ファイルの例として作成されています。Guice サーブレットは構成することを意図しているため、プレーンな Java で Shiro を構成することは可能ですか?
java - 春のセキュリティおよび/またはshiroを使用した資格のベストプラクティス
SpringSecurityまたはShiroのいずれかを使用して「資格」の概念を処理するための最良の方法についての意見に興味があります。
たとえば、次のような署名を持つJAX-RSエンドポイントを想像してみてください。
Spring Securityを使用して、次のような実装に注釈を付けることができます。
またはシロを使用して、
ただし、私が探しているのは、ユーザーが特定のアカウントIDにアクセスする権限を持っていることを確認する方法に関する「ベストプラクティス」に関するいくつかの推奨事項です(これは「資格管理」と呼ばれます)。
私はいくつかの異なるアプローチを想像することができました:
(これは、Spring Securityを使用するのは完全に簡単ではないと思いますが、間違っていると思います)。
または、ドメインオブジェクトを導入し、現在のセキュリティコンテキストで保持されている原則によってユーザーがそのアカウントを表示できる場合にのみ、をに変換するAccountId
ことに成功するファクトリを導入することを想像できます。しかし、それは少し厄介になり始めます。String
AccountId
全体として、私はここで新しい概念を発明したくありません。これはパンとバターのようなもののようですが、ここでのベストプラクティスに関する信頼できる推奨事項を見つけることができませんでした。
提案をありがとう。
mysql - Shiro + 文字列として格納されたキー = 障害点または不要な懸念事項?
詳細については触れませんが、これは高度な質問です。
私は常に、制約のない場所に主キーを格納することは決して良い考えではないと考えてきました。たとえば、主キーを EAV スタイルのアーキテクチャに格納します("USER_ID",144)
。そのユーザーが削除された場合、EAV マッピングに反映されず、後で問題が発生します。
そのため、フレームワークとして shiro を使用して新しいアプリケーションを作成していsecurity/permission
ます。ユーザーは自分自身を編集できる必要がありますが、他のユーザーは編集できません。また、他のユーザーが誰でも編集できる必要があります。簡単です:
user1 = "user:441:edit"
user2 = "user:edit"
さらに、ユーザーのサブセットのみを編集できる人がいる可能性があります。たとえば、次のようになります。
user3 = "user:459:edit","user:460:edit","user:461:edit"
または、ある部署のユーザーを編集できるが、その部署のみを編集できる人
user4 = "department:5898:user:edit"
user3 のリストから誰かが削除された場合、魔法を使わずにそのユーザーの権限を更新する方法はありません (すべての権限を調べて、削除する権限を見つけます)。
現在、キーをリセットする予定はありませんが、古いキーをクリーンアップしないと、古いキーを再利用した後、最近作成されたユーザーを突然編集できるようになる可能性があります。
("user:ciS84nFSHK:edit")
すべてのテーブルで一意の生成コードを使用してアクセス許可の削除を管理することで、この一部を軽減できます。ただし、数億のレコードを追加すると、これはすぐに扱いにくくなる可能性があると思います。
Shiro の使い方が間違っていますか?キーがめちゃくちゃになることに集中しすぎているだけですか?これらの問題は解決しましたか?どんな助けでも大歓迎です。
hibernate - シロ、ハイバネイト、エンバーズ
shiroを実装しましたが、非常にうまく機能しています。現在、Hibernateでエンティティの監査ログを実行するためのenversを実装しようとしていますが、これも機能します。1つの問題は、通常モードとrunAsモードの両方で対象にshiroからの変更を行わせようとしていることです。
Shiroは現在のスレッドから件名を取得し、enversのAuditEventListenerが呼び出されるまでに、すでに別のスレッドにあるようです。shiroのサブジェクトを現在のスレッドにバインドするためのHibernateの適切なフックはどこにありますか。Shiroにはすでにこれを行うメソッドがありますが、hibernatesイベントの呼び出し元をオーバーライドして、サブジェクトを新しいスレッドにバインドするか、後で取得できるようにイベントにデータを追加する必要があります。
java - 高レベルの Java セキュリティ フレームワーク
Java プロジェクトで使用しているセキュリティ フレームワークは何ですか?
Spring Security と Apache Shiro を使用しましたが、どちらも未熟に見えます。
春のセキュリティの欠陥:
- パーミッションのネイティブ サポートなし。
- Java コードで明示的に使用する機能はありません (必要な場合もあります)。
- 従来の (非 AJAX) Web アプリケーションに集中しすぎています。
Apache Shiro の欠陥:
- 最終リリースのバグ (Spring 統合の問題など)。
- OpenID やその他の広く使用されているテクノロジはサポートされていません。
- パフォーマンスの問題が報告されました。
また、両方のドキュメントが不足しています。
実際のプロジェクトのほとんどは、独自のセキュリティ フレームワークを開発しているのではないでしょうか?
security - Apache Shiro "with JSF 2.0"!どうですか?
素朴な開発者の仕事をより簡単/より速くし、潜在的な脅威に対してアプリケーションを比較的安全にすることができる、JavaWebアプリケーションのフレームワーク/認証/ユーザーログイン管理/セキュリティのソリューションを探しています。
SpringSecurityやApacheShiroのようなソリューションを検討するように勧められた人もいるので、JSF2.0でどのように機能するのか知りたいと思いました。私の場合、SpringセキュリティよりもShrinoを使用することのデメリットはありますか?
JSFアプリケーション用の他のより良いセキュリティソリューションはありますか?
現在、Webアプリケーションのフロントエンド開発フレームワークとしてJSF 2.0(Faceletsを使用)を使用しています。これは、NoSQLデータベースであるCassandraによってサポートされています。
spring - Apache Shiro セキュリティ アノテーションで式を使用できますか?
私は Apache Shiro と Spring Security を比較してきました。私は Shiro が使用するセキュリティ モデルが大好きで、Spring Security よりもはるかにクリーンであると信じています。
ただし、メソッド レベルのセキュリティ アノテーション内からメソッド パラメーターを参照できると便利です。たとえば、今は次のようなことができます。
この例のコンテキスト内では、これは、認証されたユーザーが電子メール アカウントで電子メールを送信する権限を持っている必要があることを意味します。
ただし、インスタンス レベルのアクセス許可が必要なため、これでは十分に細かく設定できません。このコンテキストでは、ユーザーが電子メール アカウントのインスタンスに対するアクセス許可を持つことができると仮定します。したがって、前のコードを次のように書きたいと思います。
このように、許可文字列はメソッドに渡されたパラメーターを参照しているため、EmailAccount の特定のインスタンスに対してメソッドを保護できます。
メソッド内のプレーンな Java コードからこれを簡単に実行できることはわかっていますが、アノテーションを使用して同じことを実現できれば素晴らしいと思います。Spring Security がそのアノテーションで Spring EL 式をサポートしていることは知っています。
これは間違いなく Shiro の機能ではないので、独自のカスタム アノテーションを作成する必要がありますか?
ありがとう、
アンドリュー