2015年2月27日金曜日

Multi-AZ な ELB 下の Shibboleth IdP on EC2

AWS で ELB とその下の EC2 を共に Multi-AZ にしている。
そんな環境で Shibboleth IdP を立ててるんだけど、どうやら ELB の IP アドレスが
DNS に 2 つ(Multi-AZ分)登録されていてラウンドロビンしてしまっている。

すると、Shibboleth IdP は以下のエラーを吐き認証が通らない。

Client sent a cookie from address 192.168.1.15 but the cookie was issued to address 192.168.2.17 

ELB がソース IP を自身のものに書き換えてしまうのは知っていたが、これが Multi-AZ
だとアクセスする毎に変わってしまう。DNS のラウンドロビンのせいで。

tomcat の server.xml の Engine タグ内に以下の設定を入れて回避。

      <Valve
          className="org.apache.catalina.valves.RemoteIpValve"
          internalProxies="192\.168\.\d+\.\d+"
          remoteIpHeader="x-forwarded-for"
          proxiesHeader="x-forwarded-by"
          protocolHeader="x-forwarded-proto" />

Apache の mod_remoteip で回避する方法もあるかも知れんが、今回は Cent6 であり、
Apache2.2 な世界なので標準で mod_remoteip が入っていないので tomcat で回避す
ることにした。


1 件のコメント:

  1. Noriyuki TAKEI2016年9月6日 18:40

    有用な情報ありがとうございます。とっても助かりました。

    返信削除