web-dev-qa-db-ja.com

Apacheヘッダーでアンダースコアをダッシュ​​に変更

Mod_auth_casでユーザーを認証するApache2.4.27の背後で実行されるアプリケーションがあります。このモジュールは、認証されたユーザーに関する属性をヘッダーに格納します。アンダースコア(X-CAS-email_primary)が含まれているため、削除されている1つのヘッダーに問題があります。検索を行った後、以下のコードスニペットをVirtualHost構成に追加しました。

SetEnvIfNoCase X-CAS-email_primary ^(.*)$ fix_header=$1
RequestHeader set X-CAS-email-primary %{fix_header}e env=fix_header

はっきりしない場合は、X-CAS-email_primaryX-CAS-email-primaryに変更しようとしています。このコードは部分的に機能しています。新しいヘッダーは表示されますが、値はありません。

["HTTP_X_CAS_EMAIL_PRIMARY"]=> string(0) ""

X-CAS-email_primaryが設定されていることを確認したので、何が起こっているのかよくわかりません。助言がありますか?

ありがとう!

3
Ross

RequestHeader setの値は式をサポートし、式には、要求ヘッダーの値を提供するreq(またはhttp)関数が含まれます。したがって、この1つのディレクティブは、必要なことを実行する必要があります。

RequestHeader set X-CAS-email-primary "expr=%{req:X-CAS-email_primary}"

この種のものを見つけるには、 documentation を深く掘り下げる必要がありますが、それはそこにあります。

構成が機能しなかった理由はわかりませんが、SetEnvIfNoCaseはRequestHeaderの後に評価されると思います。ドキュメントでは、それを簡単に理解することはできません。

1
Andrew Schulman