2.9. 認証ヘッダ挿入用iRuleの作成¶
ここでは、ユーザ認証ヘッダ(Proxy-Authorization)とAPMで認証されたユーザ名(session.logon.last.username)をHTTPリクエストに挿入するためのiRuleを作成します。i-FILTER PROXY版連携では、Proxy-Authorization というヘッダー名に、ユーザ名をBase64エンコーディングしたBasic認証の形式で挿入します。
Local Traffic >> iRules にて、2- 2.7で作成済みのiRuleにユーザ名用のヘッダーを挿入するための箇所を追記します。(以下のiRuleはあくまでもサンプルとなります。同じ主旨の内容であれば下記と同じでなくても構いません。)
例)HTTPリクエストにi-FILTER連携のヘッダを挿入するためのiRuleサンプル
### Add this iRule to Virtual Server:ssloS_XXXX-t-4 ### when HTTP_REQUEST { if { [TCP::local_port] == 80 } { # For HTTP protocol HTTP::header replace "X-Forwarded-Proto" "http" } elseif { [TCP::local_port] == 443 } { # For HTTPS protocl HTTP::header replace "X-Forwarded-Proto" "https" } sharedvar ctx # For Client IP address lappend ctx(headers) "X-Forwarded-For" [IP::client_addr] # For Username if { [ACCESS::session data get session.logon.last.username] ne "" } { set PROXYAUTH "Basic [b64encode [ACCESS::session data get session.logon.last.username]:]" } else { set PROXYAUTH "" } lappend ctx(headers) "Proxy-Authorization" $PROXYAUTH if { [expr { [llength $ctx(headers)] % 2 }] == 0 } { foreach {h_name h_value} $ctx(headers) { HTTP::header replace ${h_name} ${h_value} } }
接続テストをされる際には、変数情報をログ出力するなどして意図する値が入っているか確かめて頂くことをおすすめします。例1)認証ユーザ名を確認するデバッグlog local0. "Username: [ACCESS::session data get session.logon.last.username]"例2)エンコードされた内容を確認するデバッグlog local0. "Encoded username: b64encode [ACCESS::session data get session.logon.last.username]"例3)ヘッダー内容を確認するデバッグforeach attr "[HTTP::header names]" {log local0. "$attr : [HTTP::header value $attr]"}