セキュリティ・サービス / Security Service

  • UserManager should become a service in it's own right.

    UserManager は自身の正しさをもってしてサービスとなるべきです。

  • ACL mechanism should become pluggable. A new interface ACLBuilder must be defined, the interface would have single method of 'Object buildACL(User)' signature. UserManagerService would have a property that would contain *service name* that implements ACLBuilder. buildACL will be an instance not class method, so a concrete instance of the service must be consulted.

    ACL メカニズムは交換可能となるべきです。新たなインターフェースである ACLBuilder は定義を行われ、'Object buildACL(User)'の単一の方法 - メソッドを 持っています。 UserManagerService にはACLBuilder を実装する *サービス名* プロパティがあります。 BuildACL はクラスメソッドではなくインスタンスとなり、サービスの固定したインスタンスは 考案される必要があります。

  • User object will have method of 'Object getACL()' signature that will delegate to UserManagerService, which in turn delegates to the configured ACLBuilder. It's OK to cache the returned object, since the ACLBuilder will keep references ACL objects internally, to reflect the changes of sercurity information at runtime. (rafal)

    ユーザオブジェクトには、 代わる代わるに代理として設定された ACLBuilder の役目をして UserManagerService の代理を行う Object getACL() メソッドがあります。 ACLBuilder はACL オブジェクトへの参照を内部的に保持しており、 実行環境上のセキュリティ情報の変更を反映することが出来るので、 返却されたオブジェクトをキャッシュすることが出来ます。

  • TurbineSecurityService will be the default ACLBuilder shipped with the system.

    TurbineSecurityService はシステムとともにリリースされるデフォルトの ACLBuilder になります。

  • TurbineSecurityService should have it's OM/Peer classes Torque generated.

    TurbineSecurityService は Torque によって生成された OM / Peer クラスを持つ必要があります。

  • Group should be could be renamed to 'Realm' or 'Domain'. This should decrease the confusion about it's meaning.

    グループは「レルム」か「ドメイン」にリネームされるべきです。 これは本来の意味の混乱を避けるためです。

  • Attributes of Roles/Groups/Permissions will be dropped. I don't think the idea catched on.

    ロール/グループ/パーミッションの属性は失われます。 私は理解されているアイデアについて考えているわけではありません。

  • User attributes should be moved into a separate table, or even two tables if we want to store meta information for user attributes. This will require a customized Peer class for User objects, but this will be easy with recent Torque's two-level class generation

    ユーザ属性はメタ情報をストアするためには、分離されたひとつのテーブルや2つのテーブルにもなります。 これはユーザオブジェクトのためにカスタマイズされた Peer クラスを必要とします。 最近の Torque の2レベルのクラス生成では、これは簡単になっています。

  • On session unbind event, only acces counters/timestamps should be updated not the whole data. This should fix the overriding of admin's changes by the unbound session problems. The information which attributes should be updated could be placed in user attribute meta-information table.

    バインドされないイベントのセッションにおいては、カウンタやタイムスタンプの接近のみが アップデートされます。すべてのデータではありません。 これは特定されたセッションの問題により管理者が行った変更のオーバーライドに対する修正を行います。 アップデートされる必要がある属性情報は、ユーザ属性メタ情報テーブルに置かれる必要があります。

  • All references to peers have to be removed from the interfaces. Anything peer specific must be pushed down into DBSecurityService.

    Peer に対するすべての参照はインターフェースより削除を行われます。 すべての Peer 特性は DBSecurityService に挿入する必要があります。

  • Allow multiple security service implementations to be run in tandem. This would allow a portion of a site to be controlled by an LDAP security service and another portion to be controlled by DB security services. More info about this is explained in the Policy Service proposal.

    直列に実行を行うためには、多重のセキュリティサービス実装を許容してください。 これは LDAP セキュリティサービスで制御されるサイトと DB セキュリティサービスによって制御されるその他一部のサイトを許容します。

  • All the security code has to be grouped together. Right now it's all over the place and rather confusing. The util code should be moved into the security services package, and the om/peer code for the DBSecurityService should be move into the package with the rest of the DBSecurityService code. Here's what I would propose for the new layout. This would require the deprecation of the location of a lot of the classes but I think it would help a lot with the ease of understanding.

    すべてのセキュリティコードは同一にグループ化されるべきです。 現時点においては散在しており、むしろ混乱しています。 ユーティリティコードはセキュリティサービスパッケージに移動し、 DBSecurityService の OM / Peer は残りの DBSecurityService コードに パッケージされました。 ここに私は新たなレイアウトを提案します。 これは多くのクラスの位置の非推奨であるものを必要としますが、 理解に達するために多くの助けとなるものです。

.
|-- BaseSecurityService.java
|-- SecurityService.java
|-- TurbineSecurity.java
|-- UserManager.java
|-- entity
|	|-- Group.java
|	|-- Permission.java
|	|-- Role.java
|	|-- SecurityEntity.java
|	`-- User.java
|-- impl
|	|-- db
|	|	|-- DBSecurityService.java
|	|	|-- DBUserManager.java
|	|	`-- entity
|	|		|-- GroupPeer.java
|	|		|-- PermissionPeer.java
|	|		|-- RolePeer.java
|	|		|-- RolePermissionPeer.java
|	|		|-- SecurityObject.java
|	|		|-- TurbineGroup.java
|	|		|-- TurbinePermission.java
|	|		|-- TurbineRole.java
|	|		|-- TurbineUser.java
|	|		|-- TurbineUserPeer.java
|	|		|-- UserGroupRolePeer.java
|	|		`-- UserPeer.java
|	|-- ldap
|	|	|-- LDAPSecurityConstants.java
|	|	|-- LDAPSecurityService.java
|	|	|-- LDAPUser.java
|	|	|-- LDAPUserManager.java
|	|	`-- util
|	|		`-- ParseExceptionMessage.java
|	`-- passive
|		`-- PassiveUserManager.java
`-- util
	|-- AccessControlException.java
	|-- AccessControlList.java
	|-- DataBackendException.java
	|-- EntityExistsException.java
	|-- GroupSet.java
	|-- PasswordMismatchException.java
	|-- PermissionSet.java
	|-- RoleSet.java
	|-- TurbineSecurityException.java
	`-- UnknownEntityException.java