2

サイトにサインインする必要があります。url.com/ssorequest?parameters=123 などの URL からサインインできます。これがサインインしているアドレスに入力された場合、ポータルにリダイレクトされます。

プログラムで http 投稿リクエストを介してこれを行うことになっていますが、機能させることができません。ポータルではなくサインインフォームにリダイレクトされます。つまり、サインインしません。

Fiddler を使用して、2 つの方法の違いを調べました。いくつかの舞台裏の get-requests が異なっていることがわかりました。ブラウザの get-requests は Cookie データをサーバーに送信しますが、フィドラーの post-request は送信しません。

フィドラーを使用してブラウザーの最初の呼び出しを繰り返すと、Cookie データも送信されません。したがって、ブラウザウィンドウから実行した場合にのみ機能します。フィドラーでブレークポイントを使用し、リクエストを改ざんしてCookieデータを含める場合を除きます。

Q: HTTP ポストとリクエストが Fiddler から行われた場合の両方で、ブラウザーと異なる動作をするのはなぜですか?

Q: 独自の Fiddler アプリケーションを作成せずに、C# アプリでプログラムによって送信される要求を改ざんする方法はありますか?

4

1 に答える 1

1

おそらく、偽造防止Cookie に遭遇したことがあるでしょう。最初にリクエストされてブラウザにロードされたページを使用してサインインしていることを確認する方法で機能し、Cookie は 1 つのリクエストに対してのみ有効であるため、同じリクエストを実行するとフィドラーはログインできません。また。

C# を使用して、最初にサインイン ページを要求し、このページで提供される Cookie を Cookie コンテナーで取得する必要があります。次回、ページをデータとともに投稿するときは、リクエストに Cookie が添付されていることを確認する必要があります。

編集:

ステップ 1: サイトの任意のページを参照します。これにより、セッションが開始されます。また、セッション Cookie も提供されます。

ステップ 2: サインイン ページをリクエストします。セッションを認識できるように、手順 1 で取得した Cookie をサインイン ページと共に送信します。このステップは重要です。この段階では、サイトが使用しているセキュリティ システムに応じて、次の 2 つのいずれかになります。セッション Cookie とともにセキュリティ Cookie を送信するか、セキュリティ トークンとして機能する値とともに非表示の変数をフォームに追加します。このトークン/Cookie を取得していることを確認してください。

手順 2: 手順 1 で取得した Cookie/トークンと一緒に、サインイン ページ (またはフォーム アクションが導く任意のページ) にログイン情報を投稿します。トークンの場合は、ログイン情報と共に投稿データに含めます。 Cookie を要求に追加します。

于 2013-04-03T14:17:27.173 に答える