Javaを使用してアプリを構築しようとしています。アプリは、クエリを動的に実行して結果を返すデータベースのハンドラーにアクセスします。OAuth が使用されています。アプリはサーバーの 1 つのポートから実行されており、ハンドラーとデータベースは別のポートにあります。以下は、私の OAuth の初歩的な理解に基づいて、これがどのように機能するかを示した図です。
OAuth についての私の理解が不十分な場合はお知らせください。
最初、アプリを実行しようとすると、HTTP 500 コードで OAuth エラーが発生しました。これは、使用している OAuth キーがサーバーで承認された OAuth キーのリストにないためだと考えたので、コードを調べて、キーとシークレットを取得して追加できるようになるまでデバッグを実行しました。そのリストに。その後、OAuth エラーは発生しなくなりましたが、アプリを実行すると、場所が次のように設定された 302 ヘッダーが返されます。
server:port2/.../oauth-authorize?oauth_callback=[handler URL]?request_token_secret=[gibberish]&oauth_token=[gibberish]
request_token_secret と oauth_token は、リストに追加したものとは異なります。
残念ながら、実際には 302 リダイレクトに従っていません。なぜこれが起こっているのかはわかりませんが、アプリが 2 つの異なるポートで実行されているため、XSS の問題が発生していることに関係していると確信しています。CORSを使用できず、2つの異なるポートでなければならないため、これがなぜ起こっているのかわかりません。また、修正方法もわかりません。
編集:同じことを試みましたが、2つの異なるポートを持つ同じサーバーではなく、完全に別のサーバーを使用しました。リダイレクト場所のトークンとシークレットが異なることを除いて、まったく同じエラーが発生しました。したがって、これは間違いなくクロスサイト スクリプティングです。
- OAuth がどのように機能するか (図に示されているように) についての私の理解は正しいように見えますか?
- ここで何が起こっているのですか?
- この問題の原因は何ですか?どうすれば修正できますか?