実現したいこと
失敗例
mod_auth_mellonのマニュアルを参照した。
mod_auth_mellon User Guide
そこには、SAMLから受け取った値は、デフォルトでは "MELLON_" + "定義した名前"で取得できるとのこと。
なお、記述っぷりを参考にしたい場合は、GitHub側を見れば"MELLON_"部分の変え方も含め、readmeに綺麗に記載してくれている。
github.com
よって、以下の様に書いていたが、値を受け取れなかった。
(中略) RequestHeader set USERNAME %{MELLON_email}e
対応方法
(もしかしたら最適解でないのかもしれないが、)以下で対応できた。
(中略) RequestHeader set USERNAME %{MELLON_http://schemas.microsoft.com/identity/claims/email}e
補足解説
- :や//はエスケープした記述をしなくて良い
- %{キー名}eは、mod_auth_mellonではなく、mod_headersの文法である
発見方法
mellon_diagnoticsやMellonSamlResponseDump、mod_dumpioなど色々試したが、
そもそもログを出力させれなかったり、欲しい情報を得ることができなかった。
すると、元々FireFoxのプラグインで今はChromeにも提供されているsaml-tracerという拡張機能を見つけれた。
chrome.google.com
当拡張機能を用いることでSAML通信の中身を見ることに成功した。
結果、以下の様な値が返却されていることが確認できた。
(中略) <AttributeStatement> <AttributeStatement> <Attribute Name="http://schemas.microsoft.com/identity/claims/email"> <AttributeValue>hoge1@hoge.com</AttributeValue> (以下略)
省略して記載する方法があるかもしれないが、このまま記載することで無事値取得に成功した。