apache 2.4 + mod_proxy でリバースプロキシを作っている。リバースプロキシ上で生成されている環境変数の一部をバックエンドのシステムにHTTPヘッダとして渡したい。
具体的なシナリオとして。 apache 2.4 + mod_auth_mellon でSAML認証をおこない、認証結果の情報を mod_proxy 経由でバックエンドのシステムにHTTPヘッダに乗せて渡したい。
mod_auth_mellon の認証は出来上がってる前提で、mod_proxy でヘッダを渡すところをどうすれば良いか試行錯誤してみた。
mod_auth_mellon では、SAML認証が通ると、SAML の NameID が apache の環境変数 MELLON_NAME_ID に格納される。
この環境変数 MELLON_NAME_ID の値を mod_proxy のリクエストに乗せたい。HTTPリクエストヘッダに乗せたい。たとえば SSO_USERNAME という名称にしよう。
apache の設定ファイル内、 <Location> のところに以下のように書けば良い。
RequestHeader set SSO_USERNAME %{MELLON_NAME_ID}e "expr=-n %{env:MELLON_NAME_ID}"
これで mod_proxy から バックエンドへの HTTP Request 内に、 SSO_USERNAME: ユーザー名文字列 (MELLON_NAME_ID の値)、というものが含まれるようになる。
便利。