devise_token_auth を使用して API を公開する Web アプリがあります。私は、https を介してこの Web アプリのさまざまな側面と通信する複数のモバイル アプリを構築しています。devise_token_auth を使用してアクセス トークンを取得し、そのアクセス トークンを今後のリクエストで使用します。
私の Web バックエンドと通信する独自のモバイル アプリを他のユーザーが作成するケースは避けたいと考えています。
モバイル クライアントから呼び出しが行われると、サーバーに既にサインアップしているユーザーとパスワードを使用してアクセス トークンを取得します。他のユーザーが独自のモバイル クライアントを作成できないようにするにはどうすればよいですか?
オプション 1: 秘密の api トークンを作成し、それをクライアントとサーバーで使用できます。モバイル クライアントは api トークンを渡し、サーバーは api トークンを含む要求のみを受け入れます。オプション 1 の問題: ネットワーク上でリクエストを見た人は誰でも、API トークンを使用して同様のリクエストを作成し、API トークンを使用して同じ呼び出しを行うことができます。
オプション 2: Web サーバーを oauth サーバーにします。この場合、アプリは oauth を使用して、自分の api ユーザーに対してのみクライアント要求を承認し、他の要求を拒否します。オプション 2 の問題: oauth について、それがこのように機能するかどうか、および devise_token_auth に加えてこれを実装する方法を知るのに十分な知識がありません - これは事実上、サーバーで 2 つの資格情報がチェックされることを意味します - api ユーザーの oauth 検証、実際のユーザーのdevise_token_auth検証。
これとこれに関連する質問を見ましたが、それらは私のシナリオではありません。これらのスレッドでの推奨事項は、a) https + 基本認証で十分であり、oauth は不要であること、および b) 許可されていない IP アドレスをブロックすること (問題: どの IP アドレスがモバイル アプリ ユーザーであるかを検出する方法がわからない) のようです。 ' そして、これは他の誰かのものです)。c) これらのスレッドからのもう 1 つの洞察は、アプリの識別に使用する秘密鍵をモバイル アプリに保存した場合、モバイル アプリ (少なくとも Android では) は完全にリバース エンジニアリング可能であるため、公開される可能性が高いということです。
これを設計/実装するための最良の方法に関する提案はありますか? https + 基本認証だけで十分ですか?
どんなコードでも喜んで共有したいと思います (SO は通常、質問でコードを期待しているため) - しかし、ここで共有するコードが正直にわかりません。