舞台裏

Qiita が表でこっちが裏。こっそりやっていく。

ACL の記事書き始めた

とりあえず最小構成の Hello World を書いて動かした。

問題なさそうなので Hello World として記事に書き始めた。

ACL だいたい理解してきた

ACL がだいたい分かってきたので、記事の内容をあらためて考えてる。

しかし、分かりやすくするにはどういう順番で説明していくのがいいか結構悩む。

ACL のクラス間の関係を整理した

  • AclService
  • LookupStrategy
  • AclCache
  • AclAuthorizationStrategy
  • PermissionGrantingStratgy

このあたりの関係をクラス図に起こしてみて、クラス間の関係を整理した。

だいたい役割とかが見えてきた。

f:id:opengl-8080:20170612235923p:plain

どーん

KANJAVA PARTY 用の資料ひとまずできた

KANJAVA PARTY 用の資料をひとまず作った。

まだ通してみてないので、来週の土日に脳内リハーサルして最中チェック。

あと LT 用の資料も作った。 どちらかというとこっちが本番感。

溜まってる Spring Security メモの見直し

溜まってるやつそろそろ投稿していこうと思うので、最終見直し。

  • メソッドセキュリティ
  • CORS
  • Run-As

は投稿できそう。

ACL で必要になるクラスたちの役割について調査

ACL を実現するときに Bean を大量に登録しなければならないが、それぞれの役割が謎すぎてコンストラクタ引数とかで何を指定する必要があるのかとかが分からなさ過ぎた。

最低限動かすのに必要になった以下の Bean 達について、それぞれの役割についていろいろ調査。

  • JdbcMutableAclService
  • BasicLookupStrategy
  • SpringCacheBasedAclCache
  • ConcurrentMapCache
  • DefaultPermissionGrantingStrategy
  • ConsoleAuditLogger
  • AclAuthorizationStrategyImpl

だいたい一通り理解できた。
あとは実際に動かして検証して、理解を確信に変える。

てか、ドキュメントに書かれてなさすぎて実装読まないと意味が分からない気がするけど、そんなんアリなん?

ドメインオブジェクトセキュリティの勉強再開

        ObjectIdentityImpl oi = new ObjectIdentityImpl(Foo.class, 44L);
        MutableAcl acl = this.aclService.createAcl(oi);

とか

        ObjectIdentityImpl oi = new ObjectIdentityImpl(Foo.class, 44L);
        MutableAcl acl = this.aclService.createAcl(oi);
        System.out.println(acl.getClass());
        acl.insertAce(acl.getEntries().size(), BasePermission.READ, new GrantedAuthoritySid("role_hoge"), true);
        this.aclService.updateAcl(acl);

とかを順番に動かして、どのテーブルにどういうデータが登録されるのかを検証。

なんとなくテーブル同士のデータの関係が分かった気がする。

あと式で指定する hasPermission() の動作とかを実装を追って確認したり。