私のJSF/TomEEアプリケーションでは、ユーザがリソース(基本的にurlパラメータのID)にアクセスする方法を指定するユーザとロールを持つNoSQLデータベースが読み取り専用または書き込みのいずれかになっています。Shiroとクライアント証明書
私はセキュリティとthis post gave me some ideasを実装したいと思いますが、おそらくShiroまたはPicketLinkというサードパーティのライブラリを試してみたいと思います。このルールでは、ユーザーがクライアント証明書で認証され、提供されない場合は、デフォルトのゲストユーザーとして認証されます。
驚いたことに、私は城でこれを行う方法についていくつかの情報を見つけるのが面倒です。それはまっすぐに見えません。 Shiroのクライアント証明書認証を実装するための「すぐに使える」ものは何もないことは驚きです。
だから私はデータベースとシロを "接続"するためにレルムを作らなければならないと思います。それから私はorg.apache.shiro.authc.UsernamePasswordToken
を拡張して証明書を読み、それを城に渡す必要があるかもしれないと読んだ。次に、JSF xhtmlページ(たとえばrendered
属性を使用して)のコンテンツへのアクセスを制限する必要があるとします。Named
マネージドBeanのすべてのメソッドでも、アクセス権をチェックする必要があります。
また、証明書が提供されていないときにどのようにゲストユーザを割り当てることができないのかは明らかではありません。なぜなら、証明書が提供されていなければ、ゲストユーザーを割り当てるために実行されます。私はTomEEで2つの異なるポートを開くことができましたが、ゲストのユーザをシステム内の他のユーザと同じように扱いたいので、アクセスは統一されません。これはどうすればできますか?
これはPicketLinkで簡単に実装されていますか? (これはJSFの方が優れています)