SpringSecurityまたはShiroのいずれかを使用して「資格」の概念を処理するための最良の方法についての意見に興味があります。
たとえば、次のような署名を持つJAX-RSエンドポイントを想像してみてください。
AccountDetails getAccountDetails(String accountId);
Spring Securityを使用して、次のような実装に注釈を付けることができます。
@Secured(AUTHORIZED_USER)
public AccountDetails getAccountDetails(String accountId) { ... }
またはシロを使用して、
@RequiresAuthentication
public AccountDetails getAccountDetails(String accountId) { ... }
ただし、私が探しているのは、ユーザーが特定のアカウントIDにアクセスする権限を持っていることを確認する方法に関する「ベストプラクティス」に関するいくつかの推奨事項です(これは「資格管理」と呼ばれます)。
私はいくつかの異なるアプローチを想像することができました:
@Secured(AUTHORIZED_USER)
@AccountEntitled
public AccountDetails getAccountDetails(@Account String accountId) { ... }
(これは、Spring Securityを使用するのは完全に簡単ではないと思いますが、間違っていると思います)。
または、ドメインオブジェクトを導入し、現在のセキュリティコンテキストで保持されている原則によってユーザーがそのアカウントを表示できる場合にのみ、をに変換するAccountId
ことに成功するファクトリを導入することを想像できます。しかし、それは少し厄介になり始めます。String
AccountId
全体として、私はここで新しい概念を発明したくありません。これはパンとバターのようなもののようですが、ここでのベストプラクティスに関する信頼できる推奨事項を見つけることができませんでした。
提案をありがとう。