認証と承認のためにサーバー側で Stormpath を使用するモバイル アプリケーションに取り組んでいます。複数のデバイスで同じユーザーのサインインをサポートする必要がありますが、それを追跡し、必要に応じて制限できるようにしたいと考えています。
私のアプリケーションは現在、Stormpath を使用して、電子メール/パスワードまたは MDN/パスワードを使用してユーザーをサインインさせ、ログインに成功すると、サーバーへの API アクセスに使用する JWT トークンを返します。
私は次のアプローチを考えています:
- ユーザーのアカウントにセッションのリストを保持します。ユーザーがサインインするたびに、device_id と提供された JWT を使用して新しいエントリが追加されます。ユーザーがサインオフすると、エントリは削除されるか、非アクティブとマークされます。
- ユーザーが別のデバイスでサインインしようとしたときに、アクティブなデバイスを 1 つだけに制限したい場合は、他のエントリを無効に設定し、JWT を期限切れにして、アプリケーションがそれを検出して再度ログインを要求できるようにします。
- ユーザーを最大 n セッションに制限したい場合は、エントリを数えて、ユーザーが新しいデバイスにサインインできるようにする前に、他のセッションのいずれかでサインオフするよう強制することができます。
これは良いアプローチですか?それを行うより良い方法はありますか?この方法の問題点は何ですか?