問題タブ [spring-security-acl]
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.
java - カスタムスプリングセキュリティACLを実装するには?
Springを使用してアプリケーションを開発しています。Access Control Access セクションでは、Spring Security Acl を使用したいと考えています (Acl は初めてです)。次の 2 つの点に基づいて、アプリケーションに ACL を実装したいと考えています。
- アプリケーションには、
read
、create
、 の5つの権限が必要です。modify
delete
Administrator
- パーミッションは階層化されます. ユーザーが
create
パーミッションを持っている場合, できる必要がありますread
. , またはパーミッションがある場合,modify
できる必要があります. など.read
create
modify
出来ますか?どのように?
更新:
私のアプリケーションは Spring MVC RESTFUL に基づいています。ユーザーが自分の情報を変更したい場合、Ajax で json データを送信します。json データの例は次のとおりです。
これで、悪意のあるユーザーが自分のアカウントにログインできるようになりました。このユーザーはmodify
、他のすべてのユーザーと同様にデータを使用できます。データを送信する前に、ID とmodify
別のアカウントのユーザー情報を変更します。ACL を使用して、この Subversive 作業を防止したいと考えています。また、ユーザーは、他のユーザーが自分の情報を変更できるように、他のユーザーにアクセスできます。
spring - Spring Security ACL を使用してツリーノードを実装するにはどうすればよいですか?
spring 4.0.6 と Hibernate 4.2.21 を使用してアプリケーションを開発しています。次のようなエンティティがあります。
つまり、A
エンティティはツリーです。ここで、ツリーのすべてのノードを保護したいと考えています。次のツリーを検討してください。
次のようにノードを保護します。
このコードは、第 1 レベル ( Node-1
、Node-2
& Node-3
) のノードを保護します。ここで、 、&ノードread
でユーザー アクセスを取得したいと考えています。どのように実装しますか?Node-1
Node-1.1
Node-1-2
java - Spring Security ACL 階層
私はSpring Security Roleベースのセキュリティを扱ってきましたが、Spring Security ACLは初めてです。オブジェクト階層に ACL を実装するには、Spring セキュリティを使用する必要があります。さまざまな支店を持つ会社があるように、各支店には複数の部門があり、これらの部門は複数のセクションを持つことができます。
これで、会社の管理者はその会社のすべてのデータにアクセスできるようになります。支店管理者、部門管理者、セクション管理者がいます。支店管理者は、各部門および後続のセクションのデータにアクセスできます。複数のブランチにアクセスできる「ブランチ」管理者もいる場合があります。
私のアプリケーション スタックは、Spring 4、Spring security 4、Hibernate 5、および JSF2 with Primefaces 5.3 です。
例を検索できなかったので、DB 設計にどのような変更が加えられるか、Spring Security ACL をどのように構成する必要があるかというアイデアを思いつきました。例またはガイドを参照してください。
java - Spring セキュリティ @PostAuthorize アノテーションが正常に機能しない場合がある
Java Web アプリケーションのセキュリティにSpring Security 4.1.0を使用しています。@PostAuthorize
次のようにメソッドに注釈を使用get
します。
インターフェース:
そして、get
実装方法は次のとおりです。
次web.xml
のように sessionConfig を設定します。
ユーザーがアプリケーションにログインし、get
メソッドを呼び出します。ユーザーは 3 分後にサーバーにリクエストを送信しません。彼は別のリクエストを calget
メソッドに送信します。応答は です403 Access Denied
。この後、ユーザーは別の同じ要求をすぐに送信しますが、応答は200 OK
です。この要求を参照してください:
403
応答:
Tomcat コンソールは、次のように 2 つのケースでログを記録します。
問題は何ですか?
spring security
バグですか?
java - ACL プリンシパルと GrantedAuthority の概念
Spring Security ACL lib について読んでいますが、いくつかの概念について少し混乱しています。SID に関して、それは私の混乱に次のように述べています。
ACL_SID を使用すると、システム内のプリンシパルまたは権限を一意に識別できます (「SID」は「セキュリティ ID」を表します)。唯一の列は、ID、SID のテキスト表現、およびテキスト表現がプリンシパル名または GrantedAuthority を参照しているかどうかを示すフラグです。
プリンシパルはロールと同じですか?GrantedAuthority は同等の概念ですか、それとも特定の役割ですか? boolean field principal
= true は、識別子に意味的な値があることを意味しますか、それとも単にシステム内の役割であることを意味しますか?. もしそうなら、なぜシステムに計上されていない SID を保存したいのですか?
java - Spring Security ACL は、サブジェクトへのデフォルト アクセスをカスタマイズします
spring ACL を使用して、件名に対するいくつかのアクションのアクセス許可を構成できます。私のアプリケーションでは、サブジェクトへのアクセス権をカスタマイズする必要はほとんどありません。だから私はデフォルトの依存関係のためにACLを埋める必要はありませんが、ACLが空の場合は特別な指示が必要です.
たとえば、
デフォルトの実装では、 user1はbranch1のすべてのドキュメントにアクセスできる必要があります(ACL が空の場合)。user2 -> branch2 . 場合によっては、user1 に特別なアクセスが必要になります。彼はbranch2.doc3にアクセスする必要があり、 branch1.doc2に対する制限が必要です!
ACL 推奨事項と同様の方法でソリューションを実装しようとすると、対応するブランチの各ドキュメントに各ユーザーのアクセス許可を追加する必要があります。この方法は、正規化 && 許可のために非常に醜いです。したがって、相互参照のみに使用される ACL ロジックと、デフォルトのアクセス許可により、すべてのユーザーが同じブランチ内の各ドキュメントにアクセスできるようにするソリューションを実装したいと考えています...
デフォルトでは、@PostAuthorizeや@PreAuthorizeなどのメソッド アノテーションをhasRole、hasPermissionなどのチェックと共に使用できますが、パーミッションによる制限がロールよりも強い条件を構築したり、リレーション ユーザー ブランチに基づいてリクエストにフィルターを適用したりすることはできません。
このアイデアは実装できるはずですが、対応する説明や実装方法のトリックの例が見つかりませんでした...