ここに課題があります:
サービス/ビジネス層には REST (JSON) インターフェースがあります。API を呼び出すことができるクライアントには 2 種類あります。ブラウザで実行される Web アプリケーションと、モバイル アプリケーション (Android) です。どちらも公開です。承認された (!) webapp または承認された (!) mobile-app を使用するすべての人が、リソースにアクセスできる必要があります。許可されていないクライアント (スクリプトなど) はすべて禁止する必要があります。
注: サービス層にアクセスできるユーザーの数やユーザー数に制限はありません -> クライアントの公開鍵証明書はおそらく使用できません。クライアント ソフトウェアのみを認証する必要があります。
私の意見では、唯一の解決策は「あいまいさによる」です。
アイデア:
- ブラウザ(またはアプリ)で実行されるサーバーからランダムなJS関数(「チャレンジ」と呼びましょう)をロードし、特定の方法(ブラウザの欠陥?)でブラウザをフィンガープリントし、結果を計算して結果を送信しますすべての REST-API 呼び出しで戻ります。
さらにアイデアや提案はありますか?
よろしくお願いします。下手な英語で申し訳ありません
編集:
私の質問は、ユーザー認証および/または承認とは関係ありませんが、クライアントソフトウェア認証+承認とは関係ありません。
私の質問の背景は、私自身のアプリケーション (Android + Web) 用の RESTful バックエンドがあり、その上に誰かが独自のクライアント ソフトウェアを作成したくないということです。その理由は、収集するのに非常に費用がかかるデータを提供する商用 Web サイト/アプリケーションであるためです。RESTapi (またはサードパーティの競合他社) ではなく、Web サイトとモバイルアプリを宣伝したいと考えています。