だから私は次のシナリオを実装しようとしています:
- アプリケーションは基本認証によって保護されています。それがホストされているとしましょう
app.com
- アプリケーションの前にあるHTTPプロキシにも、認証が必要です。それはでホストされています
proxy.com
したがって、ユーザーは同じリクエストでプロキシとアプリケーションの両方の資格情報を提供する必要があります。したがって、ユーザーは異なるユーザー名とパスワードのペアを持っています。1つのペアはアプリケーションに対して自分自身を認証し、もう1つのユーザー名/パスワードのペアはプロキシに対して自分自身を認証します。
仕様を読んだ後、これをどのように実装すべきかよくわかりません。私がやろうと思っていたのは:
- ユーザーは、認証なしでプロキシにHTTPリクエストを送信します。
- プロキシは応答し、次の形式のヘッダー
407 Proxy Authentication Required
を返します。質問:このヘッダーは正しく設定されていますか?Proxy-Authenticate
"Proxy-Authenticate: Basic realm="proxy.com"
Proxy-Authenticate
- 次に、クライアントは
Proxy-Authorization
ヘッダー(プロキシのBase64表現)を使用してリクエストを再試行しますusername:password
。 - 今回はプロキシがリクエストを認証しますが、アプリケーションは
401 Unauthorized
ヘッダーで応答します。ユーザーはプロキシによって認証されましたが、アプリケーションによっては認証されていません。WWW-Authenticate
アプリケーションは、のようなヘッダーを応答に追加しますWWW-Authenticate: Basic realm="app.com"
。質問:このヘッダー値は正しいですか? - クライアントは、ヘッダーと、アプリのBase64表現で評価され
Proxy-Authorization
たヘッダーの両方を使用してリクエストを再試行します。Authorization
username:password
- この時点で、プロキシはリクエストを正常に認証し、ユーザーも認証するアプリケーションにリクエストを転送します。そして、クライアントは最終的に応答を返します。
ワークフロー全体は正しいですか?