ASP.NET Web サービスと通信する Android アプリケーション (Java で記述) があります。Android アプリは、フォーラム内のスレッドのリストを表示し、ユーザーがスレッドを読めるようにするフォーラム リーダーです。アプリは単にバックグラウンドで Web サービスに接続し、基本的に「スレッド x の投稿をください」と尋ねます。次に、Web サービスはフォーラムに接続し、HTML ソース コードをダウンロードして解析し、最後に関連情報 (各投稿と作成者、日付、メッセージなど) を (json 形式で) 返します。Android アプリはその情報を受け取り、適切に表示します。
このように、Web サービスはすべての「汚い仕事」 (フォーラムの HTML ソースのダウンロード、解析、関連情報の抽出) を行いますが、Android アプリはただ座って必要な情報を受け取るだけです。
ただし、Web サービスがフォーラムとそのページ ソースにアクセスするには、ユーザーを認証する必要があります。フォーラムのログイン ページにユーザー名とパスワードを使用して HTTP POST を実行し、成功したときに受信した CookieContainer を保存することで、Web サービスにフォーラムへのアクセスを許可できます。次に、それ以降のすべてのリクエストで同じ CookieContainer オブジェクトを使用します。これは、ユーザーを認証し、スレッドとそのページ ソースへのアクセスを許可するのに十分です。
明らかな欠点は、私以外のユーザーは Android アプリにパスワードを入力する必要があり、それを Web サービスに送信する必要があり、最終的にそれを使用してユーザーを認証することです。Web サービスは明らかに平文のパスワードを必要とするため、ハッシュ化されたバージョンを受け取ることはできません。もちろん、パスワードを暗号化するか、HTTPS を使用することもできますが、この方法では Web サービスで平文のパスワードが必要になり、パスワードを保存してパスワードを盗む可能性があるという事実が残ります。明らかに最善の方法ではありません。
私が考えることができる唯一の代替手段は、Android アプリ自体でログイン作業を行い、そこで CookieContainer を受け取り (Java にも似たようなものがあるに違いないと思いますか?)、代わりにその Cookie 情報を Web サービスに送信することです。これにより、「ハッカー」がデータを傍受することで別のユーザーになりすますことができますが、私が見る限り、人々が Android Web ブラウザーを介してフォーラムにログオンするだけで安全性が低下することはありません。明らかな利点は、Web サービス サイトで平文のパスワードが不要になったことです。Android アプリはパスワードを送信する必要がありません (ブラウザを直接使用した場合と同じように、(https) ログイン ページにのみ送信されます)。それを傍受したり、私が盗んだりする方法はありません。
簡単に言うと、Java (Android アプリ) の webrequest から Cookie を受け取り、それらを Web サービス (ASP.NET) に転送して、CookieContainer オブジェクトを再構築し、それをさらなる要求に使用したいと考えています。したがって、Java で取得した Cookie を何らかの方法で文字列に変換し、Web サービスに送信して、それらの文字列から CookieContainer オブジェクトを再構築する必要があります。
私はいくつかの基本的なアプローチを試みましたが、どこにも行きません。誰でもこのステップで私を助けることができますか?
現在、ASP.NET Web サービスで、新しい CookieContainer オブジェクトを作成し、それを HttpWebRequest オブジェクトの CookieContainer プロパティとして使用しています。次に、ログイン ページに対して HTTP POST 要求を実行します。成功した場合は、同じ CookieContainer オブジェクトを使用して、以降の要求を認証できます。これを基本的に Java で書き直す必要があります。CookieContainer を直接 (または Java で同等のものを) 使用する代わりに、文字列に変換して Web サービスに送信し、そこから CookieContainer を再構築できるようにする必要があります。文字列。
ヒントはありますか?ありがとう!