Spring Securityを使用して、オンザフライでユーザーに対して透過的にユーザーをあるデータベースから別のデータベースに移行するにはどうすればよいですか?
バックグラウンド
Webアプリケーションでは、フォームベースの認証でSpringSecurityを使用しています。この構成では、ユーザーデータベースに基づく標準のSpringJDBCコンポーネントを使用します。ただし、古いシステムの別のユーザーデータベースもあります。これは、新しいシステムの約10倍のユーザー数です。古いデータベースのユーザーにもログインできるようにします。ユーザーにとって、これは完全に透過的である必要があります。
古いデータベースのほとんどのユーザーはもうアクティブではないため、すべてのユーザーを新しいデータベースに移行する必要はありません。パフォーマンス上の理由から、すべてのアクティブなユーザーを含めながら、新しいユーザーデータベースをできるだけ小さくしたいと考えています。しばらくして、古いユーザーデータベースを切断し、非アクティブなすべてのユーザーを効果的に削除したいと思います。
私たちが思いついたアイデアは、ユーザーをオンデマンドで移行することです。存在しないユーザー(新しいデータベースにない)がログインしようとしたときに、ユーザーが古いユーザーデータベースに対して認証できるかどうかを確認します。その場合、ユーザーを新しいデータベースに移行して自動的にログインします。
Spring Securityフレームワークには多くの拡張ポイントがありますが、問題は、どの拡張ポイントが私たちの目的に適しているかということです。