2016-09-09 6 views
2

私は、認証と承認のためにサーバー側でStormpathを使用するモバイルアプリケーションを開発中です。複数のデバイスで同じユーザーがサインインするのをサポートする必要がありますが、必要に応じてそのデバイスを追跡して制限できるようにしたいと考えています。Stormpathを使って同じユーザーから複数のログインを追跡する

私のアプリケーションは現在、電子メール/パスワードまたはMDN /パスワードを使用してユーザーにサインインするためにStormpathを使用し、ログインに成功すると、サーバーへのAPIアクセスに使用するJWTトークンを返します。

私は、次のアプローチを考えています:

  • は、ユーザーのアカウントでのセッションのリストを保管してください。ユーザーがサインインするたびに、device_idとJWTが提供された新しいエントリが追加されます。ユーザがサインオフすると、そのエントリは削除されるか、または非アクティブとマークされます。
  • ユーザーが別のデバイスにサインインしようとしたときに、アクティブデバイスを1つだけに制限する場合は、他のエントリを無効にしてJWTを期限切れにして、アプリケーションがそれを検出して再度ログインする必要があります。
  • ユーザーを最大n個のセッションに制限したい場合は、エントリを数え、ユーザーに他のセッションの1つでサインオフしてから新しいデバイスにサインインすることを許可することができます

これは良いアプローチですか?それを行うより良い方法はありますか?この方法の問題は何ですか?

答えて

1

私はモバイルSDKのStormpathで働いています。これを達成するために必要なアクセス/リフレッシュトークン機能を使用することができます。

  • ユーザーがサインインするたびに、アクセスと更新トークンが作成されます。ユーザーがサインオフすると、リフレッシュトークンとアクセストークンが削除されます。
  • ユーザが別のデバイスでサインインしようとしたときに、1つのアクティブデバイスに制限する場合は、他のすべてのアクセス&リフレッシュトークンを削除できます。
  • ユーザーを最大n個のセッションに制限したい場合は、エントリを数えて、新しいデバイスでサインインする前に、ユーザーに最新のトークンの1つを削除させるだけで済みます。あなたはStormpathフレームワークとの統合を使用している場合

    • :あなたは、アクセストークンを通過し、マッチング「RTI」この実装について(トークンIDをリフレッシュします)

    いくつかのノートでものを削除しますデフォルトでは、アクセストークンをローカルに検証して(検証するためにStormpathに送信するのではなく)です。これは、SDKによって検証できる署名があるためです。ただし、ユーザーをログアウトするには、これをリモート検証に設定するか、短いアクセストークンを使用するか(リフレッシュトークンを使用して各セッションを制御する必要があります)

  • リフレッシュトークンは、 customData "を使用するため、アカウントのcustomDataまたは独自のデータベースのいずれかで更新トークンに関するメタデータを維持する必要があります。
  • また、ユーザーごとにAPIキーを作成し、各ユーザーのセッションではなく使用することもできます。 APIキー名または説明属性を使用して、ユーザーがどこからログインしたかを追跡することができます。
+0

ありがとうエドワード、これは私が思っていたものとほぼ同じです。 ご確認いただきありがとうございます。 – DiegoK

関連する問題