[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[upki-fed:01099] Shibboleth SPから得た属性値の環境変数を、アプリに渡す前に手を加えるには?
- Subject: [upki-fed:01099] Shibboleth SPから得た属性値の環境変数を、アプリに渡す前に手を加えるには?
- Date: Tue, 29 Nov 2016 20:46:37 +0900
- From: Tatsumi Hosokawa <xxxxxxxx@xxxxxxxxxxxxxx>
度々あまり汎用性のない質問ばかりで申し訳ありません。
慶應義塾ITC本部の細川です。
実は、Shibboleth SP化したいアプリが、商用のものでアプリ自体に手を加えることが困難で、
なおかつユーザIDとして利用したい文字列が、アプリで利用できない文字を含んでいる、
というケースが生じています。
たとえば問題を簡単化するために、eppnとして、
xxxxxxxx@xxxxxxxxxx
という値があったとして、この「@」をユーザIDとして利用することは出来ない、どうしよう、
というようなニュアンスです。
たとえば該当のシステムでは"hosokawa&keio.ac.jp"と、@を&に置換すれば、
ユーザ名として受け付けられると仮定した場合、どのような方法が考えられるでしょうか?
実験はApache 2.2とShibboleth SP 2.6で行いました。
まずはApacheのSetEnvIfを利用する方法を考えたのですが、これはShibboleth SP由来の
環境変数を操作することはできなさそうでした。
次に、同じくApacheのmod_rewriteを用いて考えてみたのですが、これも通常の
Shibboleth SP由来の環境変数にはアクセスできませんでした。ただし、一つ例外があって、
REMOTE_USER環境変数
(shibboleth2.xmlのApplicationDefaults/@REMOTE_USERに最初に指定された属性が入りますよね)
は、mod_rewriteで操作できるようです。
なので、該当するパラメータをApplicationDefaults/@REMOTE_USERの最初に指定し
(ここではeppnと仮定しましょう)、
.htaccessで次のように指定してみました。
なお、mod_rewriteのマニュアルにはREMOTE_USERに対しては%{LA-U:REMOTE_USER}で参照しろ、
と書いてあるのですが、少なくともShibboleth SP由来のREMOTE_USERに関しては、
%{REMOTE_USER}でのみ参照できるようでした。
RewriteEngine on
RewriteCond %{REMOTE_USER} ^(.*)@(.*)$
RewriteRule .* - [E=AJP_userid:%2&%1]
これで、なんとか目的は達成できたとは思うのですが、いかんせん綱渡り感が否めません。
他にもっといい方法がある、というような方がいらっしゃいましたら、
ぜひ、アドバイスを頂けたらと思います。
よろしくお願いします。
--
慶應義塾ITC本部 細川達己 xxxxxxxx@xxxxxxxxxxxxxx
Tel. 03-5427-1685 Fax. 03-5427-1722