REST-ful を使用してモバイル アプリケーションを開発する計画があります。SSL を使用しないため、OAuth 2.0 ではなく OAuth 1.0a を適用したいと考えています。また、Web ブラウザーも使用したくありません (PIN ベースの UX は使いにくいと考えています)。通常の OAuth フローでは不可能であることはわかっています。
私はセキュリティ アーキテクチャの専門家ではありませんが、ネットで Google を検索すると、誰かがチャレンジ レスポンス モデルのようなメソッド ログインを使用して実装していることがわかります。
アプリがユーザー名を安全に保つ必要がなく、ユーザーがアプリにパスワードを入力することで私たちを信頼している場合、この方法を使用してアクセス トークンを交換できますか? 欠陥はありますか?
- サーバーが無許可のリクエスト トークンに応答した後、クライアントはチャレンジ/レスポンス フローを開始します。
クライアントは、OAuth require: oauth_consumer_key, oauth_token, oauth_signature_method, oauth_timestamp, oauth_nonce のようなパラメーターと、追加のユーザー名パラメーター username="username" (ユーザーのパスワードから計算されたパスワード パラメーター) を使用して、 http://www.example.com/login に要求を送信します。 (サーバーに保存されます)、KDF 鍵派生関数/ハッシュ関数を使用した oauth_nonce。クライアントは、OAuth の説明を使用してリクエストの署名を計算しますが、パスワード パラメータを省略した後、パラメータ username およびその他の必要なパラメータを使用してリクエストを送信します。
サーバーはリクエストをチェックし、アクセス トークンを返します。