クライアント用のクォータが必要なREST APIを作成しています。私は非常に単純なOAuth 2のメカニズムを使用しています。ここでは、認証サーバーを使用してクライアントIDと秘密からベアラトークンを取得し、トークンが期限切れになるまで使用します。Android/iOS/Windowsデバイス用のREST認証
アプリケーションには、ユーザーとパスワードでログインし、ユーザー固有の新しいアクセストークンを受け取るユーザーログインがあります。ユーザーは、ユーザー名とパスワードで再度取得できます。
問題は、クライアントIDとシークレットが新しい開発者がサービスにAPIを統合できるように、たとえば分あたり10要求のクォータを持つという点です。だから私は無制限のクォータを持つ特別なIDを作成し、コード内の定数として設定することができます(これは悪い考えです。逆コンパイルで誰でもその秘密を使用できるようになります)か、デバイスごとのID秘密。
私はAndroidデバイスID(Androidの場合)を使ってそれを特定しようと考えていましたが、64ビットの数字をたくさん作成して登録しようとしないでください。 AndroidデバイスIDを検証するサービスはありますか?これは他のプラットフォームでどのように行われますか?
これは正しい方法ですか?メカニズムの一部を変更する必要がありますか? Twitterはどうしていますか?私はそれがAPIへの完全なアクセス権を持っていることを知っていますが、他の開発者はクライアントIDと秘密が必要です。
クライアントはどのようにトークンを要求しますか?公式アプリを使用していない他のクライアントがトークンを要求しないようにするにはどうすればよいですか? – Razican
ユーザーIDとクライアントID。 (Webviewで実行されている場合、またはWebアプリケーションの場合は、Originを使用してCORS制限を適用できますが、ネイティブクライアントは依然としてリクエストを行うことができます)。 – ShrekOverflow
しかし、ネイティブアプリが認証サーバーにトークンリクエストを送信すると、いくつかのHTTPヘッダーが提供されます。別のクライアントが同じHTTPヘッダーを送信しないようにするにはどうすればよいでしょうか? – Razican