web-dev-qa-db-ja.com

アカウントをモバイルデバイスにロックするアーキテクチャ

現在モバイルアプリを作成していますが、次の問題があります。ユーザーアカウントに登録されているデバイスからのログインのみを許可する必要があります。ユーザーは一度に最大X個のデバイスを登録できます。

したがって、ユーザーが登録して最初にサインインすると、デバイスを登録する必要があります。次に、バックエンドwebapiへのリクエストごとに、webapiはリクエストが登録済みデバイスからのものであることを確認する必要があります。

デバイスをどのように識別しますか?デバイス上でローカルにある種のシークレットを生成し、それをwebapiと共有しますか?

これをどのように構築するかについてのアイデアはありますか?

バックエンドにはIDフレームワーク、フロントにはxamarinまたはフラッターのいずれかでdotnetコアを使用することを計画しています。

4
Ankeet Dhanji

一意のAndroid ID の質問があれば、Androidの一意のIDを取得するためのオプションの概要がわかります。 一意の識別子のベストプラクティス ほとんどの使用例では instanceID の使用をお勧めします。iOS製品については IdentifierForVendor を参照してください。IDを取得したら、それをハッシュし、安全な接続を介してwebapiに送信します。これにより、根ざしたデバイスから保護しません。

ルート権限を取得されたデバイスを処理するには、 ハードウェアでバックアップされたキーストア が必要です。ここで、秘密鍵/公開鍵のペアを生成します。ここで、秘密鍵は、OSでも読み取れない別のチップに保存されます。ここで、webapiはランダムなデータを生成し、秘密鍵で暗号化されたデバイスに送信して送り返します。復号化に公開鍵を使用し、データが同じであることを確認します。

3
JonasH